Coder-Strike 2014 - Finals (online edition, Div. 1)
来源:互联网 发布:炸金花棋牌游戏源码 编辑:程序博客网 时间:2024/05/16 10:03
CF 420A A. Start Up
题目链接:
http://codeforces.com/problemset/problem/420/A
题目意思:
给一个字符串A,通过镜面反射后得到A‘,判断A和A’是否完全一样。
解题思路:
水题。分析知有些字母通过镜面反射后和原来一样。
代码:
//#include<CSpreadSheet.h>#include<iostream>#include<cmath>#include<cstdio>#include<sstream>#include<cstdlib>#include<string>#include<string.h>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<ctime>#include<bitset>#include<cmath>#define eps 1e-6#define INF 0x3f3f3f3f#define PI acos(-1.0)#define ll __int64#define LL long long#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1#define M 1000000007//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;#define Maxn 33int hav[Maxn];char save[110000];void init(){ memset(hav,0,sizeof(hav)); hav[1]=1,hav['H'-'A'+1]=1; hav['I'-'A'+1]=1; hav['M'-'A'+1]=1; hav['O'-'A'+1]=1; hav['T'-'A'+1]=1; hav['U'-'A'+1]=1; hav['V'-'A'+1]=1; hav['W'-'A'+1]=1; hav['X'-'A'+1]=1; hav['Y'-'A'+1]=1;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(~scanf("%s",save+1)) { int len=strlen(save+1); int ans=1; int p=1; init(); //printf("%d %d\n",p,len); while(save[p]==save[len]&&p<=len) { if(!hav[save[p]-'A'+1]) { ans=0; break; } p++; len--; } if(p<=len) ans=0; if(ans) printf("YES\n"); else printf("NO\n"); } return 0;}
CF 420B B. Online Meeting
题目链接:
http://codeforces.com/problemset/problem/420/B
题目意思:
有n个人开会,已知按时间顺序的m个进出记录(部分开会),求哪些人可能一直在开会。
解题思路:
抽象模拟。
可以保存一个当前时间的统治者me.
(无)+(有)
(有)-(无)
详细解释请见代码:
//#include<CSpreadSheet.h>#include<iostream>#include<cmath>#include<cstdio>#include<sstream>#include<cstdlib>#include<string>#include<string.h>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<ctime>#include<bitset>#include<cmath>#define eps 1e-6#define INF 0x3f3f3f3f#define PI acos(-1.0)#define ll __int64#define LL long long#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1#define M 1000000007//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;#define Maxn 110000int ans[Maxn],add[Maxn];int n,m,a,cnt,me;char temp[3];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) ans[i]=1,add[i]=0;; cnt=0; me=0; for(int i=1;i<=m;i++) { scanf("%s%d",temp,&a); if(*temp=='+') { if(!me||(me==a)) //更新统治者 注意要分别 +1 -1 +1的情况,此时统治者还是1 me=a; else ans[a]=0; //和前面的通知不一样 不行 比如+1 +2那么2不行 add[a]=1; //保存出现 if(a!=me&&!add[me]) //-1 +2 此时的1不行 ans[me]=0; cnt++; } else //'-' { if(!me) //更新统治者 me=a; if(a!=me&&add[a]==0) //+1 +2 -3 此时1为统治者 { ans[me]=0; me=a; } if(add[a]) //抵消 { add[a]=0; cnt--; } if(cnt) //还有剩余力量 +1 +2 -2 此时的2不行 +1 +2 -1此时的1也不行,只要有+的不一样就不行 ans[a]=0; } } int tt=0; bool fi=true; for(int i=1;i<=n;i++) if(ans[i]) tt++; printf("%d\n",tt); for(int i=1;i<=n;i++) { if(ans[i]) { if(!fi) //第一个出现 printf(" "); printf("%d",i); if(fi) fi=false; } } printf("\n"); } return 0;}
Codeforces 420C - Bug in Code题目链接:http://codeforces.com/problemset/problem/420/C解题思路:先预处理出当选中第i个人时,会使num[i]个人满意。注意当(i,j)是某人同时讨厌的时候,如果此时选中(i,j)只会使一个人满意。所以先出于处理出这种情况,直接判断出选中(i,j)时是否可行,如果不行提前减掉。然后再排序,枚举选中的第一个人,直接二分出第二个人的位置。代码:
//#include<CSpreadSheet.h>#include<iostream>#include<cmath>#include<cstdio>#include<sstream>#include<cstdlib>#include<string>#include<string.h>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<ctime>#include<bitset>#include<cmath>#define eps 1e-6#define INF 0x3f3f3f3f#define PI acos(-1.0)#define ll __int64#define LL long long#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1#define M 1000000007//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;#define Maxn 310000int num[Maxn],n,p;map<pair<int,int>,int>myp;int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(~scanf("%d%d",&n,&p)) { memset(num,0,sizeof(num)); myp.clear(); for(int i=1;i<=n;i++) { int a,b; scanf("%d%d",&a,&b); if(a>b) swap(a,b); myp[make_pair(a,b)]++; num[a]++; num[b]++; } map<pair<int,int>,int>::iterator it=myp.begin(); ll ans=0; for(;it!=myp.end();it++) { int ta=it->first.first,tb=it->first.second; if(num[ta]+num[tb]>=p&&num[ta]+num[tb]-it->second<p) ans--; //说明选中ta和tb不可行 } sort(num+1,num+n+1); for(int i=1;i<n;i++) { /* if(!num[i]) continue;*/ if(num[i]>=p) { ans+=n-i; continue; } int temp=p-num[i]; if(temp>num[n]) //二分出第二个人的位置 continue; int pos=lower_bound(num+i+1,num+n+1,temp)-num; ans+=n-pos+1; //printf("i:%d pos:%d\n",i,pos); } printf("%I64d\n",ans); } return 0;}
0 0
- Codeforces Coder-Strike 2014 - Finals (online edition, Div. 1)
- Coder-Strike 2014 - Finals (online edition, Div. 1)
- Coder-Strike 2014 - Finals (online edition, Div. 2) Online Meeting
- Coder-Strike 2014 - Finals (online edition, Div. 2) Online Meeting
- Coder-Strike 2014 - Finals (online edition, Div. 2)
- codeforces-Coder-Strike 2014 - Finals (online edition, Div. 2)
- Coder-Strike 2014 - Finals (online edition, Div. 2 A、B)
- Coder-Strike 2014 - Finals (online edition, Div. 2)
- Coder-Strike 2014 - Finals (online edition, Div. 2)AB
- Coder-Strike 2014 - Finals (online edition, Div. 1)-a-b-c
- Coder-Strike 2014 - Finals (online edition, Div. 1) C. Bug in Code
- Coder-Strike 2014 - Finals (online edition, Div. 2) D.Bug in Code
- Coder-Strike 2014 - Finals (online edition, Div. 2)——Bug in Code
- Coder-Strike 2014 - Finals Div 2
- Coder-Strike 2014 - Finals (Div. 2) A. Pasha and Hamsters
- Coder-Strike 2014 - Finals ( Div. 2) B. Start Up
- 【Codeforces】【Coder-Strike 2014 - Finals】【D Bug in Code】
- 【Codeforces】【Coder-Strike 2014 - Finals】【E Cup Trick】【题解】
- Android—UI之DatePicker、TimePicker
- LCD LVDS的一些术语定义
- IOS6新特性之下拉刷新<UIRefreshControl>
- 日本研制出用于电动汽车的锂电池高耐热技术
- C# 中的委托和事件
- Coder-Strike 2014 - Finals (online edition, Div. 1)
- C# List的使用
- .NET 数据类型之匿名类型(var)
- IOS-试图旋转效果的实现
- Unity3D 开发优秀技术资源汇总
- unity3D游戏开发十八之NGUI动画
- 数据库基础知识
- dpkg 命令使用说明
- 人类不善于浏览纯文本文档,更善于浏览表格和图表