codeforces #197(div2)
来源:互联网 发布:文明5美丽新世界mac版 编辑:程序博客网 时间:2024/05/16 10:20
A:就是将1、2、3、排序后后,中间依次加上'+'
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;char s[110];char ss[110];int main(){ cin>>s; int len=strlen(s); int c1=0,c2=0,c3=0; for(int i=0;i<len;i++) { if(s[i]=='1') c1++; if(s[i]=='2') c2++; if(s[i]=='3') c3++; } for(int i=0;i<c1;i++) s[i]='1'; for(int i=c1;i<c1+c2;i++) s[i]='2'; for(int i=c1+c2;i<c1+c2+c3;i++) s[i]='3'; int ret=0; for(int i=0;i<len;i++) { if(i%2==0) { ss[i]=s[ret]; ret++; } else ss[i]='+'; } puts(ss); return 0;}
B:一步一步算,注意结果变量定义为__int64
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int a,now;int main(){ int n,m; scanf("%d%d",&n,&m); now=1; __int64 ans=0; for(int i=0;i<m;i++) { scanf("%d",&a); if(a>=now) ans+=(a-now); else if(a<now) ans+=(n+a-now); now=a; //cout<<ans<<endl; } cout<<ans<<endl; return 0;}
C:dfs 因为少加了一个条件,一直T,中间有一个细节处理参考其他人的
#include<iostream>#include<cstdio>#include<cstring>#include<string>bool h[12],flag=false;int a[1100];int m;void dfs(int n,int ch,int prev){ if(n>m) { flag=true; printf("YES\n%d",a[0]); for(int i=1; i<n; ++i) printf(" %d",a[i]); printf("\n"); return; } for(int i=ch+1; !flag&&i<=10; ++i) //flag没做判断,一直T if(h[i]&&i!=prev) { a[n]=i; dfs(n+1,i-ch,i); //**很神奇的安排 i-ch加入后使之相等的值,i前一个值作比较 }}int main(){ char c; for(int i=1;i<=10;i++) { scanf("%c",&c); if(c=='1') h[i]=true; } scanf("%d",&m); m--; dfs(0,0,0); if(flag==false ) printf("NO\n"); return 0;}
D:处理太巧妙了,如果会做很简洁、优美的代码就过了。
它是这样处理的,加入n=3,数组标号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17将初始的8个数处在8-17中,输入一个处理一个,
第一轮或运算结果放在4-7中,第二轮异或运算放在2-3中,。。。。最后一个数放1中。
在询问时加入改变第n个数,则改变需要改变的数组中存放的值。加入8个数改变第五个,那么首先要改变6,3,1;需要处理的数只有几个而已。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<cmath>using namespace std;int l[400000];int n,m;void solve(int p,int a){ int t=1; l[p]=a; while(p>1) { p/=2; if(t==1) l[p]=l[p*2]|l[p*2+1]; else l[p]=l[p*2]^l[p*2+1]; t=t^1; }}int main(){ //cout<<pow(2,18)<<endl; scanf("%d%d",&n,&m); int a,b; n=1<<n; for(int i=1;i<=n;i++) { scanf("%d",&a); solve(i+n-1,a); } while(m--) { scanf("%d%d",&b,&a); solve(b+n-1,a); printf("%d\n",l[1]); } return 0;}
- Codeforces #197 div2
- codeforces #197(div2)
- codeforces #78 div2 C
- codeforces 83div2
- 【codeforces #91 div2】
- codeforces 105 div2 A
- codeforces 105 div2 B
- CodeForces #120 DIV2
- Codeforces---125--div2--总结
- Codeforces-127-div2
- codeforces-div2-128
- codeforces-div2-134
- Codeforces 135 div2
- codeforces 137 div2
- Codeforces #137 div2
- Codeforces #49 div2
- codeforces 145 div2 A
- codeforces #147(div2)
- 在VM虚拟机中设置U盘启动
- IOS 用UI制作简单的画板(可选择画笔颜色)
- Map Tile地图切片小工具
- leetcode Longest Common Prefix
- 1005. Spell It Right (20)
- codeforces #197(div2)
- EL表达式笔记
- 需求分析挑战之旅(疯狂的订餐系统)(5)——领导“突发奇想”
- 数据结构与程序设计作业2
- MFC/VC++中怎样让用户定义的控件和使用的第三方控件相关联
- javascript和html中unicode编码和字符转义的详解
- ArrayList的contains
- 转载:scanf和缓冲区的关系
- El表达式笔记详解