C++信息竞赛进级第5讲 子序列.pptx

C++信息竞赛进级第5讲 子序列.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++信息竞赛进级第5讲子序列.pptxC++信息竞赛进级第5讲子序列.pptx

学科竞赛编程教研研究院C++NOIPNOIIOI

题目描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,…,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。过河

输入输出格式第一行有11个正整数L(1≤L≤10),表示独木桥的长度。第二行有3个正整数S,T,M,分别表示青蛙一次跳跃的最小距离,最大距离及桥上石子的个数,其中1≤S≤T≤10,1≤M≤100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。所有相邻的整数之间用一个空格隔开。输出格式:一个整数,表示青蛙过河最少需要踩到的石子数。

输入输出样例

1PARTONE#includeiostream#includecstdio#includealgorithm#includeclimitsusingnamespacestd;intf[10005],far[10005],a[10005],flag[10005],p,s,t,n;intmain(){scanf(%d,p);scanf(%d%d%d,s,t,n);if(s==t)//特殊情况判断{intcont=0,qaq;for(inti=1;i=n;++i)scanf(%d,qaq),cont+=((qaq%s)==0);printf(%d\n,cont);return0;}for(inti=1;i=n;i++)scanf(%d,a[i]);sort(a+1,a+n+1);a[0]=0;f[0]=0;far[n+1]=min(p-a[n],100);p=0;//计算终点与最后一个点的距离for(inti=1;i=n;i++)far[i]=min(a[i]-a[i-1],90),p+=far[i],flag[p]=1;//缩短路径,存储缩短后的终点距离并标记石头位置p+=far[n+1];for(inti=1;i=p+9;i++){f[i]=INT_MAX-1;for(intj=s;j=t;j++)if(i=j)f[i]=min(f[i],f[i-j]+flag[i]);}intminn=INT_MAX-1;for(inti=p;i=p+9;i++)//因为青蛙可以跳出边界且t=10因此再终点后p-p+9中取最小值minn=min(minn,f[i]);printf(%d,minn);}

题目描述篝火晚会

输入格式:第一行是一个整数n(3≤n≤50000),表示一共有n个同学。其后n行每行包括2个不同的正整数,以一个空格隔开,分别表示编号是1的同学最希望相邻的两个同学的编号,编号是2的同学最希望相邻的两个同学的编号,……,编号是n的同学最希望相邻的两个同学的编号。输出格式:一个整数,为最小的总代价。如果无论怎么调整都不能符合每个同学的愿望,则输出?1。输入输出格式

输入输出样例

PARTONE#includeiostreamusingnamespacestd;intans,x[500001],y[500001],n,s[500001],a[500001],b[500001],l1,l2;intmain(){cinn;for(inti=1;i=n;i++)cinx[i]y[i];s[1]=1;s[n]=x[1];s[2]=y[1];for(inti=3;i=n-1;i++)if(x[s[i-1]]==s[i-2])s[i]=y[s[i-1]];elses[i]=x[s[i-1]];for(inti=1;i=n;i++){l1=i-1;l2=i+1;if(l11)l1=n;if(l2n)l2=1;if((s[l1]!=x[s[i]]|

文档评论(0)

184****1346 + 关注
实名认证
内容提供者

证券行业资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2022年12月29日上传了证券行业资格证

1亿VIP精品文档

相关文档