codeforces 412 impelment、greedy
A. Poster
#include using namespace std;char s[105];int n,k;void right(int &pos){ while(pos=0){ if(s[pos]!='*'){ printf("PRINT %c\n",s[pos]); s[pos]='*'; } //cout<0)printf("LEFT\n"); pos--; } pos++;}int main(){ //freopen("cin.txt","r",stdin); while(cin>>n>>k){ scanf("%s",s); int pos=k-1; if(2*k>n){ //right direction right(pos); left(pos); } else { //left direction left(pos); right(pos); } } return 0;}
B. Network Configuration
#include #include using namespace std;int sp[110];int cmp(int a,int b){ return a>b;}int main(){ int n,k; while(cin>>n>>k){ for(int i=0;iC. Pattern
#include #include using namespace std;const int N=1e5+10;char str[N],s[N];bool vis[N]; // ? --> alph --> ?int main(){ //freopen("cin.txt","r",stdin); int n; while(cin>>n){ scanf("%s",str); memset(vis,0,sizeof(vis)); int len=strlen(str); for(int i=1;iD题写在另一篇博客上:
E. E-mail Addresses
@ B . C 那么问题结果就是 \sum A中的字母和(连续的前几个字母)与C中字母和(全部是字母)的乘积 【或者说是1 @ 2. 3】
细心细心,详细讨论各种情况,特别是A,B,C三种区域结束的讨论(@ 和 . 作为分隔符),意外结束和顺利结束所带来的影响也是不同的,意外结束都可能需要把当前区域字母个数作为A中的字母和(连续的前几个字母),继续下面的讨论。
#include #include #include using namespace std;typedef long long LL;const int N=1e6+10;char str[N];LL a,b,balp,c;int vis1,vis2,vis3; //1 -> ok; -1 ->break; 0 ->not testbool check1(char ch){ // number if((ch<58&&ch>=48)) return 1; return 0;}bool check2(char ch){ // alpha if(ch<123&&ch>=97) return 1; return 0;}int main(){ //freopen("cin.txt","r",stdin); while(~scanf("%s",str)){ int len=strlen(str); LL sum=0; for(int i=0;i0){ vis1=1; continue; } else a=0; } else { if(check2(str[i])) a++; } } if(vis1==1&&vis2==0){ if(str[i]=='.'&&b>0){ vis2=1; // 通过测试 continue; } else if(check1(str[i])||check2(str[i])) { if(check2(str[i])) balp++; b++; } else if(str[i]=='@'){ a=balp; b=balp=0; if(a>0){ vis1=1; continue; } } else { //vis2=-1; a=balp; b=balp=0; vis1=vis2=0; continue; } } if(vis1==1&&vis2==1&&vis3==0){ if(check2(str[i])) c++; else if(str[i]=='@'){ sum=sum+a*c; a=c; vis1=1; b=c=0; balp=0; vis3=vis2=0; } else if(str[i]=='_' || check1(str[i])){ sum=sum+a*c; vis1=vis2=vis3=0; a=c; b=c=0; balp=0; } else { //a=c; sum=sum+a*c; vis1=vis2=vis3=0; a=b=c=0; balp=0; } } //printf("%d: %d %d %d\n",i,a,b,c); } if(a!=0&&c!=0){ sum=sum+a*c; a=b=c=0; balp=0; vis1=vis2=vis3=0; } printf("%I64d\n",sum); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~