Codeforces Round #442 (Div. 2) A+B+C
来源:互联网 发布:学生调查数据 填表 编辑:程序博客网 时间:2024/06/15 02:48
http://codeforces.com/contest/877
不告诉你们我写了几个qwq
A
写了比较麻烦了, 不过差不多,用了find函数来找的。
#include <bits/stdc++.h>using namespace std;string s;string w="Danil";string w2="Olya";string w3="Slava";string w4="Ann";string w5="Nikita";int main(){ cin>>s; int sum=0; bool flag=false; if(s.find(w)!=string::npos){ int loc=s.find(w); sum++; if(s.find(w,loc+w.size())!=string::npos){ sum++; flag=true; } } if(!flag){ if(s.find(w2)!=string::npos){ int loc=s.find(w2); sum++; if(s.find(w2,loc+w2.size())!=string::npos){ sum++; flag=true; } } } if(!flag){ if(s.find(w3)!=string::npos){ int loc=s.find(w3); sum++; if(s.find(w3,loc+w3.size())!=string::npos){ sum++; flag=true; } } } if(!flag){ if(s.find(w4)!=string::npos){ int loc=s.find(w4); sum++; if(s.find(w4,loc+w4.size())!=string::npos){ sum++; flag=true; } } } if(!flag){ if(s.find(w5)!=string::npos){ int loc=s.find(w5); //cout<<"??"<<sum<<endl; sum++; if(s.find(w5,loc+w5.size())!=string::npos){ sum++; flag=true; } } } if(!flag&&sum==1){ puts("YES"); } else puts("NO"); //cout<<sum<<endl; return 0;}
b 我的写法是暴力,思路是显而易见的,代码是苦逼的。。(枚举的时候一直错)
dp作业更是惊艳
#include <bits/stdc++.h>using namespace std;const int maxn=5e3+300;string a;int num1[maxn];int num2[maxn];int main(){ cin>>a; num1[0]=0; num2[0]=0; int ans=-1; for(int i=0;i<a.length();i++){ if(a[i]=='a'){ num1[i+1]=num1[i]+1; num2[i+1]=num2[i]; } else if(a[i]=='b'){ num2[i+1]=num2[i]+1; num1[i+1]=num1[i]; } } for(int i=0;i<=a.length();i++){ for(int j=i;j<=a.length();j++){ int len1=i; int cos1=num1[i]; int len2=j-i; int cos2=num2[j]-num2[i]; int len3=a.length()-j+1; int cos3=num1[a.length()]-num1[j]; ans=max(ans,cos1+cos2+cos3); } } //cout<<ans<<endl; //cout<<num2[a.length()]<<endl; //ans=max(num1[a.length()],ans); //ans=max(num2[a.length()],ans); printf("%d\n",ans); return 0;}
#include <bits/stdc++.h>using namespace std;/* dp的做法。 用dp来做,真是太强了。*/const int maxn=5e3+1000;int dp[3][maxn];int main(){ int t; string s; while(cin>>s){ dp[0][0]=0; dp[1][0]=0; dp[2][0]=0; memset(dp,0,sizeof(dp)); for(int i=0;i<s.length();i++){ if(s[i]=='a'){ dp[0][i+1]=dp[0][i]+1; dp[2][i+1]=max(dp[2][i],dp[1][i])+1; dp[1][i+1]=max(dp[1][i],dp[0][i]); } if(s[i]=='b'){ dp[1][i+1]=max(dp[1][i],dp[0][i])+1; dp[0][i+1]=dp[0][i]; dp[2][i+1]=max(dp[2][i],dp[1][i]); } } printf("%d\n",max(max(dp[1][s.length()],dp[2][s.length()]),dp[0][s.length()])); } return 0;}
C题,我根据两个样例构造了了一种方法。。 是基于mod3的。。。
然而mod4 的策略才是对的。。
还有直接mod2的。。
显然可以实现,最优性的说法是,如果比i小的地方和比i大的地方都要埃两下,一下是把他们逼到i,另一下i把他们打回去,再来一下??
理解的不够深入。
#include <bits/stdc++.h>using namespace std;int main(){ int n,i; scanf("%d",&n); printf("%d\n",n+n/2); for(i=2;n>=i;i=i+2) { printf("%d ",i); } for(i=1;n>=i;i=i+2) { printf("%d ",i); } for(i=2;n>=i;i=i+2) { printf("%d ",i); } cout<<endl; return 0;}
阅读全文
0 0
- Codeforces Round #442 (Div. 2) A+B+C
- Codeforces Round #442 (Div. 2) A B
- Codeforces Beta Round #95 (Div. 2) A B C E
- 【CodeForce】Codeforces Round #140 (Div. 2) A B C
- 【CodeForce】Codeforces Round #142 (Div. 2) A B C
- Codeforces Round #160 (Div. 2)——A,B,C
- Codeforces Round #177 (Div. 2)——A,B,C
- Codeforces Round #179 (Div. 2)A、B、C、D
- Codeforces Round #184 (Div. 2)——A,B,C
- Codeforces Round #185 (Div. 2)——A,B,C
- Codeforces Round #186 (Div. 2)——A,B,C
- Codeforces Round #186 (Div. 2)A、B、C、D、E
- Codeforces Round #190 (Div. 2) A B C
- Codeforces Round #196 (Div. 2) A,B,C
- Codeforces Round #202 (Div. 2) (A、B、C、D)
- Codeforces Round #211 (Div. 2)(A,B,C,D)
- Codeforces Round #218,#217 (Div. 2) A.B.C
- Codeforces Round #220 (Div. 2)(A,B,C,D)
- MD5加密下的SQL注入
- 2017-11-3离线赛总结
- 笔记:Echarts
- Java Http请求工具类和接收请求的方法
- iptables的基本概念和数据包流程图
- Codeforces Round #442 (Div. 2) A+B+C
- 解决linux下tomcat8.5上传图片other用户无法通过Nginx查看的问题
- NB-IoT要点概括与工作状态解析
- 2017-3-4 IDEA中运行Topology
- python基础教程链接
- sublime text3侧边栏的修改
- 吃相难看的mysql重复数据删除
- 03_source_insight显示中文乱码
- lucene学习