2020ICPC南京站总结
作者:互联网
2020ICPC南京站总结
本算法蒟蒻参与的第一场icpc比赛,不出意外的打了铁。感受到了与很多算法dalao间的差距与自身巨多的不足,继续在算法这条路上摸爬滚打的前进吧,以后的日子里继续努力向牌子发起冲击。
总的来说从热身赛到正式赛,题目都出的超有意思(虽然自己很多做不出hhh),很棒的idea强求不来,不过也悄咪咪dream一个自己有一天灵光乍现,顺带出个很棒的题。(努力吧!)
顺带水一下自己在比赛过程中过的题:
K-K Co-prime Permutation
比赛的时候深刻的感受到一个真理:看不懂题目可太太太太太nm难受了吧!!与一个队友一块懵逼的盯着屏幕分析题意分析了半天才看出来是个求互质个数的题,可能是比赛刚开始思路都没活络起来,短时间内都没找到一个比较正确的idea。大概又过了约30min左右队友震怒:这tm不就是按顺序移个位就完事了么。我瞬间就恍然大悟啊啊啊啊啊啊啊我也tcl。
所以思路就是从1取到k分别往后移一位就好了,当然要特判0的情况。
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<=n;i++)
const int maxn = 1000005;
int a[maxn];
int main(){
int n,k;
scanf("%d %d",&n,&k);
if(k == 0){ puts("-1"); return 0;}
rep(i,1,n){
a[i] = i;
}
int swap = a[1];
rep(i,1,k){
a[i] = a[i+1];
} a[k] = swap;
rep(i,1,n){
if(i == 1) printf("%d",a[i]);
else printf(" %d",a[i]);
}
printf("\n");
return 0;
}
L-Let’s Play Curling
很容易读的一道题,先虚晃一枪给了个找点,实际用意则是在两个蓝石头之间找到最多的红石头。排个序在数组头尾分别加一个临界值就可以了,以及特判Impossible!i要大写!!
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=a;i>=n;i--)
typedef long long ll;
const int maxn = 500005;
int T,n,m;
int a[maxn],b[maxn];
int main(){
scanf("%d",&T);
while(T--){
int ans = 0;
scanf("%d%d",&n,&m);
rep(i,1,n) scanf("%d",&a[i]);
rep(i,1,m) scanf("%d",&b[i]);
sort(a+1,a+n+1);
sort(b+1,b+m+1);
b[0] = 0,b[m+1] = 1e9+1;
int l = 1,r = 0;
rep(i,0,m+2){
while(a[l] <= b[i]&&l<=n) l++;
while(a[r] < b[i+1]&&r<=n) r++;
ans = max(ans,r-l);
}
if(ans <= 0){
puts("Impossible");
continue;
} else printf("%d\n",ans);
}
return 0;
}
E-Evil Coordinate
题意是一个机器人经过若干操作的重新排列是否能避开陷阱,比赛的时候用了大模拟做这道题,比较复杂,且自己思路中有特殊情况还没有考虑到,很遗憾的没做出来(好吧我摊牌了实际情况是自己tcl,赛后看到很多人用了全排列做这道题,临近期末考试,寒假再慢慢修修自己的破方法吧:D)
2020也快过去了,希望自己期末能考个好成绩,学长学姐们考研加油!也希望看到这篇博客的你能天天有个好心情,同时希望2021会是个很好的年份,在路上继续前行吧。
标签:总结,南京站,return,int,rep,2020ICPC,maxn,printf,scanf 来源: https://blog.csdn.net/qq_45652635/article/details/111651330