洛谷练习(8.4/8.5)

server/2024/10/19 6:20:58/

题目

  • P2036 PERKET
    • 题目描述
    • 思路
    • 代码
  • P3799 小 Y 拼木棒
    • 题目描述
    • 思路
    • 代码
  • P1010 幂次方
    • 题目描述
    • 思路
    • 代码
  • P1498 南蛮图腾
    • 题目描述
    • 思路
    • 代码
  • P1928 外星密码
    • 题目描述
    • 思路
    • 代码

P2036 PERKET

题目描述

比较苦度和酸度的最小差值

思路

搜索最小差值

代码

void dfs(int sd,int kd,int cnt)
{if(cnt==n){int sum=abs(sd-kd);if(sum<summ&&kd!=0) summ=sum;//定义summ为一个特别大的数不断更新return ;}cnt++;dfs(sd*s[cnt],kd+b[cnt],cnt);//加上这个数dfs(sd,kd,cnt);//不加当前数
}
signed main()
{long long suma=1,sumb=0,sum=0;cin>>n;for(int i=1;i<=n;i++){cin>>s[i]>>b[i];dfs(1,0,0);} 	cout<<summ;return 0;
}

P3799 小 Y 拼木棒

题目描述

选取4根木棒摆成正三角形

思路

计算不同长度木棍的数量,排列组合

代码

int main() 
{long long n,count[50000]={0},a,sum=0,ans=0;cin >> n;for (int i = 1; i <= n; i++){cin >> a;count[a]++;//计数}   for (int i = 1; i <= 2500; i++) //因为最大值5000,因为两个数相加所以不超2500for (int j = i ; j <= 5000-i; j++){int c1=count[i];int c2=count[j];//两种短棍的数量int c3=count[i+j];//长棍的数量if(c3>=2){if(i==j&&c1>=2)//正好i等于j{sum=c1*(c1-1)/2*c3*(c3-1)/2%1000000007;//就是从c1个数中选两个,再从c3个数中选两个ans+=sum;}if(i!=j&&c1>=1&&c2>=1){sum=c1*c2*c3*(c3-1)/2%1000000007;//从c1,c2中各选一个,在c3中选两个ans+=sum;}}}      cout << ans%1000000007;//数值太大要取模return 0;
}

P1010 幂次方

题目描述

把一个数用全是2或者0,表示出来

思路

递归/分治,先减去距离这个数最近的2的i的数,逐层递减

代码

void solve(int x)
{	for(int i=14;i>=0;i--)if(pow(2,i)<=x){if(i==1) cout<<"2";else if(i==0) cout<<"2(0)";else{cout<<"2(";solve(i);cout<<")"; } 	 x-=pow(2,i);if(x!=0) cout<<"+";}
}

P1498 南蛮图腾

题目描述

画三角形的图腾

思路

分治,就是对三角形的复制移动(代码注释会详细一点)

代码


char a[2050][2050];
void sol(int x,int y,int n)//x表示纵向,y表示横向
{int ds=pow(2,n);//偏移距离if(n==1){a[x][y+1]='/';a[x+1][y]='/';a[x][y+2]='\\';a[x+1][y+3]='\\';a[x+1][y+1]='_';a[x+1][y+2]='_';//就是一个三角形的return ;}//下面是对,n为2 的时候有三个小三角形的,与一个三角形的位置移动对比sol(x,y+ds/2,n-1);//第一个sol(x+ds/2,y,n-1);//第二个sol(x+ds/2,y+ds,n-1);//第三个
}
int main()
{int n;cin>>n;int ds=pow(2,n);memset(a,' ',sizeof(a));sol(0,0,n);for(int i=0;i<ds;i++){for(int j=0;j<ds*2;j++)//因为横向距离是纵向的2倍cout<<a[i][j];cout<<'\n';}return 0;
}

P1928 外星密码

题目描述

就是把折叠的字符串展开

思路

递归,遇到’['后面数字是几就循环接到后面几次,遇到‘]’
返回

代码

string unfold()  //定义string类型,便于直接接后面
{	int n;string s="",sj;char c;while(cin>>c){if(c=='['){cin>>n;sj=unfold();while(n--)s+=sj;把需要展开的接后面}else{if(c==']') return s;else s+=c;}    	}  return s;     
}
int main()
{cout<<unfold();return 0;
}

http://www.ppmy.cn/server/96359.html

相关文章

ROS与ROS2的区别、Python2和Python3之间差异

ROS(Robot Operating System)和ROS2(Robot Operating System 2)是由Open Robotics开发的机器人操作系统,它们都是用于构建机器人应用程序的开源平台。尽管它们具有相似的目标,但在设计、功能、性能以及兼容性等方面存在显著的区别。以下是对ROS与ROS2区别的详细介绍: 1…

【OpenCV C++20 学习笔记】击中击不中(Hit-or-Miss)

击中击不中 Hit-or-Miss 原理代码实现 原理 形态学操作对图片的处理是基于图片的形状的。形态学操作将一个或多个结构元素(structuring elements)&#xff0c;即卷积核&#xff0c;应用到图片上从而获得计算结果。最基本的两个形态学操作就是腐蚀(erosion)和膨胀(dilation)。这…

十、LVM管理和SSM存储管理器 学习笔记

10.1 LVM原理 LVM&#xff08;Logical Volume Manager&#xff09;逻辑卷管理&#xff0c;在磁盘分区和文件系统直接&#xff0c;添加一个逻辑管理层&#xff0c;提供一个抽象的盘卷&#xff0c;并建立文件系统。 系统管理员利用LVM可以再磁盘不重新分区的情况下动态调整文件系…

Docker安装后取消sudo权限

使用小鱼的一键安装系列安装docker后&#xff0c;每次运行docker命令时都要加sudo权限&#xff0c;烦 小鱼的一键安装系列链接&#xff1a;传送门 wget http://fishros.com/install -O fishros && . fishros问题解决 sudo groupadd docker sudo usermod -aG docker …

钢板百科:A572Gr60钢板材质、美标低合金A572Gr60钢板执行标准

一、A572Gr60钢板材质 A572Gr60钢板是一种高强度低合金结构钢&#xff08;HSLA&#xff09;&#xff0c;由美国材料与试验协会&#xff08;ASTM&#xff09;制定标准。这种材质具有高强度、高韧性和优异的焊接性能&#xff0c;被广泛用于建筑、桥梁、机械制造等领域。 二、A572…

Web前端:Vue开发环境搭建

一、搭建开发环境&#xff1a; 1.nodejs安装&#xff1a; 下载地址&#xff1a; https://nodejs.org/dist/v20.13.1/node-v20.13.1-x64.msi 查看版本号&#xff1a; node -v 2.安装nrm(用于指定国内镜像源&#xff0c;加速依赖包下载速度)&#xff1a; 安装nrm&#xff…

xss漏洞(五,xss-labs靶场搭建及简单讲解)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 本文基于github上的xss-labs靶场以及PHP study进行操作。 一&#xff0c;靶场环境搭建。 1, 下载并解压到phpstudy的www目录下。 同前文一致&#xff0c;将文件…

同一台机器上,github多账号操作

github多账号 1、一台机器上同时使用2个github账号&#xff1a;2、github多账号下&#xff0c;推送文件到指定账号下的远程仓库 1、一台机器上同时使用2个github账号&#xff1a; 多个账号的公私钥设置&#xff1a;于一台电脑上使用多个Github账号 2、github多账号下&#xf…