




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序员进阶之算法练习(三十八)Codeforces正文AlexandaRhombus题目链接题目大意:给出一个整数n,下面给出当n=1、2、3的图:fl=1计算第n个图,需要多少个方格组成。输入:一个整数凶(1W凶W100)输出:需要的方格数量。Examplesinput1output1input2output5input3output13题目解析:等差数列,1、3、5、2n-1;两个等差数列,减去一个多余的2n-1,于是有:个等差数列和sum:(1+(2n-1)xn/2最终得到ans=2xsum-(2n-1)=2nA2-2n+1。intn;cinn;cout2*n*n-2*n+1endl;N
2、ickandArray题目链接题目大意:有一个数组=凶1,凶2,,可以对任意数进行下面的操作:=一凶凶一1;每个数可以操作任意次;要求最后的乘积(1凶2)最大。输入:第一行,(1冬凶冬10人5)第二行,n个整数;凶1,凶2,,凶(-10A6WW10A6)输出:行,使得乘积最大的n个整数(凶1,凶2,凶)Examplesinput42222output-3-3-3-3input10output0题目解析:题目的要求是乘积最大,但是数字有很多,最终的乘积肯定会很大。再来看看题目的操作,其实就是x=-x-1;如果操作两次呢?X=-(-x-1)-1=x+1-1=x;操作两次是变回x,那么可以知道对于每
3、个数字只有1个选择:要么不操作,要么操作一次。回头来看看乘积最大的要求,先不考虑正负的问题,要使得乘积最大,自然是每个数字越大越好。容易知道,乘积对于负数有一个负负得正的作用,那么要使得乘积最大要满足两个条件:1、所有的数字里不会出现单数的负数,否则结果一定是负数;2、每个数字要尽可能的大;分析这个操作x=-x-1,容易知道对于正数,当X操作一次之后,绝对值是+1;对于负数,当X操作一次之后,绝对值是-1;综上,我们可以先将所有的数字全部变为负数,这样可以使得绝对值最大。但是因为可能会出现单数的负数,此时我们需要选择一个负数变为整数,通过推导,我们会选择负数中绝对值最大的那个变为负数。推导:先
4、假设有两个正整数x和y,并且xy。(x-1)y=xy-yx(y-1)=xy-x因为xy,所以有(x-1)yn;intindex=-1;for(inti=0;iai;if(ai=0)ai=-ai-1;if(index=-1)index=i;elseif(aiaindex)index=i;if(n%2)aindex=-aindex-1;for(inti=0;in;+i)coutai;ValeriyaandDeque题目链接题目大意:有一个数组a,长度为n;现在有一个操作,从数组最前面(a0,a1)拿出两个数字假设是x,y;如果x=y,则把x放在数组的最前面,把y放在数组的最前面;问这个操作进行若干
5、次之后,拿出来的数字x、y是什么;输入:第一行,两个整数凶and凶(2W凶冬10人5,0W凶W310人5),分别表示数组长度和询问次数;接下来有n个整数,凶1,凶2,凶凶,where凶凶(0W凶凶冬10人9)接下来有q行,每行一个整数凶凶,(1W凶凶W10T8)输出:对于q个询问,每个输出一行,一行有两个整数x、y;Examplesinput5323451210output122352样例解释:原始数组是1,2,3,4,5,在每次操作之前,数字的样子:(每次操作都是拿出前两个)1,2,3,4,52.3.4.5.13.4.5.1.24.5.1.2.35.1.2.3.45.2.3.4.15.3.4
6、.1.25.4.1.2.35.1.2.3.45,2,3,4,1题目解析:题目的样例已经很明显阐述了一个规律:若干次之后,数组中最大值会始终占据第一位。根据题目的其他描述,每次拿出来的A、B两个数字,在数组最大值放置在第一位之后,剩余的1n-1的位置会不断轮换。为了实现简单,我们不去记录他最大值是什么。直接按照题目要求操作n次,记录其中每次操作的值;此时数组的最大值就会在最左边,接下来的操作会使得1n-1数组开始循环。对于q次询问,每次先看询问值mj是否小于n,是的话可以直接用原来存储的值;否则就直接取余,再从1n-1找到下一个值。为了实现方便,这里n次的模拟可以使用双端队列deque来辅助实现
7、。lidn,t;cinnt;dequeq;for(inti=0;ik;q.push_back(k);for(inti=1;ib)q.pushront(a);q.push_back(b);elseq.pushront(b);q.push_back(a);for(inti=0;ik;if(kn)coutansk.firstansk.secondendl;else-k;k=k%(n-1);coutr0rk+1nm;for(inti=0;in;+i)vectort(m);a.push_back(t);“=0;bottomX=n-1,bottomY=m-1;topDir=1;bottomDir=-1;b
8、oolisBottom=0;while(ans.size()n*m)if(isBottom)/jumpbottomans.push_back(make_pair(bottomX,bottomY);bottomY+=bottomDir;if(bottomY=m)bottomY=m-1;bottomX-;bottomDir=-bottomDir;elseans.push_back(make_pair(topX,topY);topY+=topDir;if(topY=m)topY=m-1;topX+;topDir=-topDir;isBottom=!isBottom;for(inti=0;in*m;+i)printf(%d%dn,ansi.first+1,ansi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘孜职业学院《乐队排练与实践5》2023-2024学年第一学期期末试卷
- 电气工程与自动化毕业实习总结范文
- 互联网企业年度安全投入提取计划
- 中国传媒大学《急诊医学》2023-2024学年第一学期期末试卷
- 山东服装职业学院《外国音乐史及作品欣赏1》2023-2024学年第一学期期末试卷
- 白酒企业集团化销售渠道合作协议
- 山西信息职业技术学院《绿色建筑与建筑产业化》2023-2024学年第一学期期末试卷
- 餐饮品牌授权经营合作协议书
- 茶艺培训学院师资共享与课程开发协议
- 生态环保型办公场所搬迁及旧物回收利用合同
- 部编版七年级下册历史期末复习开卷考试知识点速查提纲
- 《ESPEN重症病人营养指南(2023版)》解读课件
- 华夏航空在线测评题
- 海南省海口市(2024年-2025年小学四年级语文)人教版期末考试((上下)学期)试卷及答案
- 白酒经销商与酒店合作协议书模板
- 员工住宿协议书书
- 方剂学资料大全
- MFP无机硅声能凝胶施工方案
- 天棚帘施工方案
- 篮球课程思政课程设计
- 国家开放大学本科《商务英语4》一平台机考真题及答案(第三套)
评论
0/150
提交评论