原题链接:蓝桥杯2017年第八届真题-对局匹配
解题思路:
看到这题题解居然都用的动态规划包括优质题解,大哥不要误导别人啊,明明几分钟就做出来了。
具体思路 贪心
for(i从0遍历到k-1)
比如 如果要选i号积分的兄dei,那么(i+2k),(i+4k)...(i+2*N*k)的兄dei就全部留下, (i+k+2*N*k)的朋友就全部扔了。 如果不选i号的兄dei,那就反之。 然后看这两个哪个大,就加到ans上面去
具体请研究代码
注意事项:
参考代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#define RI(a) scanf("%d",&a);
#define _for(i,a,b) for(int i=a;i<b;i++)
using namespace std;
typedef long long LL;
int n,k,a[100005],x;
LL ans=0;
int main() {
RI(n);RI(k);
_for(i,0,n){
RI(x);
if(!k&&!a[x])ans++; //一条代码处理k==0情况
a[x]++;
}
_for(i,0,k){
LL cnt1=0,cnt2=0;
for(int j=i,f=0;j+k<100002;j+=k,f=1-f){
if(f)cnt1+=a[j];
else cnt2+=a[j];
}
ans+=max(cnt1,cnt2);
}
printf("%d\n",ans);
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复