CodeForces contest/776 A+B+C题解
来源:互联网 发布:linux查找文件夹 编辑:程序博客网 时间:2024/04/30 13:22
ICM Technex 2017 and Codeforces Round #400 (Div. 1 +Div.2,combined)
A. A Serial Killer
谜一样的题意:每天从两个人里面选一个人杀掉然后另一个人替补,已知每天要杀掉的和代替者和第一天候选的两个人,求每天候选的两个人的名字,顺序任意。
int main(){ string a,b,c,d; int n; cin>>a>>b; cin>>n; cout<<a<<" "<<b<<endl; for(int i=0;i<n;i++) { cin>>c>>d; if(c==a) a=d; else if(c==b) b=d; else if(d==a) a=c; else if(d==b) b=c; cout<<a<<" "<<b<<endl; }// cout<<a<<" "<<b<<endl; return 0;}
A题看了17分钟才知道了题意,随手一敲AC,然后B题已经过了尽1000个人了。
B. Sherlock and his girlfriend
题意:n串项链,每串价格依次从2-n+1。现在要个这些珍珠涂色,要求价格是另一个价格的素因子的两串颜色不能相同。求最多需要多少种颜色k,任意输出颜色c(c>=1&&c<=k)。
特判一下1和2即可,其他的都是两种情况,我们知道价格一定是连续的,那么超过2,价格至少达到4,所以这时至少需要两个颜色,我们其实可以让所有的素数是一种颜色,其余的是另一种颜色即可,这样3以上只需两种即可。
讲道理这题水的一比,思路也是秒有,但是一直到结束前7分钟才交上去AC。开始打了个素数表,写着写着突然发现除了1其余的都是2种素数和非素数,却忘了考虑2,当n=2,价格一次为2,3.他们的颜色是可以相等的,于是沙壁似的特判了1然后return,其余的先输出2,再分素数和非素数。然后开C题,题意模模糊糊的时候系统提示被Hacked。于是只能立刻回来继续debug,从开始到现在心烦意乱,我亲爱的CF啊,你为什么要放在这个时间段,你就不能放在傍晚或者凌晨吗,偏偏选在舍友都很活跃的时候,4个人农药开黑,整个宿舍激情回荡。我没法做到心无旁骛,偏偏CF又有点卡,继续交了两发都是跪在Hacked数据上,然后随便输入却发现2的时候输出的种数错了,特判一下直接交页面还没弹出来CF传来no respones。我的那个心急啊,室友依然活跃,我分分钟提刀砍人的冲动你们造吗。down的半个小时终于交上去了,结果得分366,比A题还低100。我是习惯掉分的,可是这样掉分让我很是愤怒啊,啊,啊, ,啊,,啊,。、
void fun(){ memset(a,-1,sizeof(a)); for(int i=2; i<N; i++) if(a[i]) { if(N/i<i) continue; for(int j=i*i; j<N; j+=i) a[j]=0; }}int main(){ fun();//// cout<<k<<endl; int n; cin>>n; if(n==1) { printf("1\n1\n"); return 0; } int ans=1; for(int i=1;i<=n;i++) if(a[i+1]&&(i+1)<=(n+1)/2) { ans++; break; } cout<<ans<<endl; for(int i=1;i<=n;i++) if(a[i+1]) { cout<<"1"<<" "; } else cout<<"2"<<" "; return 0;}
C. Molly's Chemicals
虽然延迟10分钟,但C题完全没思路,坐以待毙的感觉真是永生难忘啊,一腔怒火无处发泄。。。。感慨了一下ACM真是个好东西,让人激动让人伤心,让人无法自拔,多少人前赴后继。真是刺激,要是大学过的平庸无味未免有些遗憾,它让你淡泊名利,虚心前行,这段经历将会是一笔不错的人生财富。
好了补上C题。给你一个n和k,然后n个数,求有多少个区间,其和为k的幂。
不知道这题在完全冷静的状态下能不能做出来,不过感觉差不多。
我们用sum[i]表示一个前缀和,然后就是求满足 sum[i]-sum[j]=k^t。这个式子其实就是突破口,正向思维我们无法知道到底有多少[i,j]。所以我们可以反向思维,sum[i]=sum[j]+k^t。这样把k的幂全部处理出来然后一次和sum[j]累加即可,每次就是加上q[sum[i]]]。其实就是这么简单,可是在那种情况下我们大多是直接从问题入手正面寻求解答。。。
要注意的是k为-1和1的情况。。
ll sum[N],b[N],k;void init(ll k){ b[0]=1; for(int i=1; i<65; i++) if(b[i-1]<=INF) b[i]=b[i-1]*k;}int main(){ int n; while(~scanf("%d%I64d",&n,&k)) { sum[0]=0; init(k); ll x; map<ll,ll>q; ll ans=0; for(int i=1; i<=n; i++) { for(int j=0; j<65&&b[j]<=INF; j++) { if(k==1||k==-1) { if(k==-1) q[sum[i-1]-1]++; q[sum[i-1]+1]++; break; } else q[sum[i-1]+b[j]]++; } scanf("%I64d",&x); sum[i]=sum[i-1]+x; ans+=q[sum[i]]; } printf("%I64d\n",ans); } return 0;}
人生啊~~~~~
- CodeForces contest/776 A+B+C题解
- Codeforces Round #438 A+B+C Contest 868
- Codeforces Round #241 (Div. 2) A B C题解
- 【CodeForces】Round #270 A,B,C,D题解
- codeforces round # 273 div2 A, B, C题题解
- codeforces Good Bye 2014题解(A、B、C)
- Codeforces Round #290 (Div. 1) A,B,C题解
- Codeforces Round #292 (Div. 2) A,B,C,D 题解
- Codeforces Round #304 (Div. 2) A,B,C题解
- Codeforces Round #305 (Div. 1) A,B,C,D题解
- Codeforces Round #364 (Div. 2)(A,B,C,D) 题解
- codeforces EDU 15 (A,B,C,D,E)题解
- Codeforces Round #377 (Div. 2)部分题解A+B+C!
- Codeforces Round #388 (Div. 2) A,B,C,D 题解
- Codeforces Round #395 (Div. 2) A,B,C,D 题解
- Codeforces Round #434 div2 A, B , C,D 题 题解
- Codeforces Round #436 div 2 A B C D 题解
- Codeforces 813A The Contest 题解
- leetcode 257. Binary Tree Paths
- oracle查询一个表被多少表引用
- c++ 实现 膨胀(dilate)腐蚀(erode)
- centos7 mysql数据库安装和配置
- 2006年北理复试上机题
- CodeForces contest/776 A+B+C题解
- SSH的配置文件(1)
- Apache与Tomcat有什么关系和区别,servlet是Tomcat里的一个接口标准
- jquery js 重置表单 reset()几种具体实现代码
- DB2 SEQUENCE笔记
- Android 底部弹出Dialog(支付方式选择)
- FCN模型训练中遇到的困难
- 易飞工单几个SQL
- 加密解密工具类 EncryptUtil