Coder-Strike 2014 - Finals (online edition, Div. 1)
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 33
- int 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 110000
- int 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 310000 int 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;}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
Coder-Strike 2014 - Finals (online edition, Div. 1)的更多相关文章
- Coder-Strike 2014 - Finals (online edition, Div. 2) A. Pasha and Hamsters
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- Coder-Strike 2014 - Finals (online edition, Div. 2) B. Start Up
需要满足的条件是 (1)每个字母是对称的 (2)每个字符串是对称的 #include <iostream> #include <algorithm> #include < ...
- Coder-Strike 2014 - Finals (online edition, Div. 2) C题
C. Online Meeting time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing
B. Bear and Compressing 题目链接 Problem - B - Codeforces Limak is a little polar bear. Polar bears h ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E - Bear and Forgotten Tree 2 链表
E - Bear and Forgotten Tree 2 思路:先不考虑1这个点,求有多少个连通块,每个连通块里有多少个点能和1连,这样就能确定1的度数的上下界. 求连通块用链表维护. #inclu ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E. Bear and Forgotten Tree 2 bfs set 反图的生成树
E. Bear and Forgotten Tree 2 题目连接: http://www.codeforces.com/contest/653/problem/E Description A tre ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) D. Delivery Bears 二分+网络流
D. Delivery Bears 题目连接: http://www.codeforces.com/contest/653/problem/D Description Niwel is a littl ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) C. Bear and Up-Down 暴力
C. Bear and Up-Down 题目连接: http://www.codeforces.com/contest/653/problem/C Description The life goes ...
随机推荐
- 2、Cocos2dx 3.0游戏开发找小三之引擎简单介绍
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 引擎简单介绍 Cocos2d-x 的 ...
- Lucene学习总结之五:Lucene段合并(merge)过程分析 2014-06-25 14:20 537人阅读 评论(0) 收藏
一.段合并过程总论 IndexWriter中与段合并有关的成员变量有: HashSet<SegmentInfo> mergingSegments = new HashSet<Segm ...
- 提高编程能力的7条建议 分类: T_TALENT 2014-04-12 10:41 294人阅读 评论(0) 收藏
编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的.很多人在学习编程之初就被困难击败了. 当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识.只要你通过了这一困难的 ...
- 使用Apache FtpServer搭建FTP服务器 [FlashFXP]
<server xmlns="http://mina.apache.org/ftpserver/spring/v1" xmlns:xsi="http://www.w ...
- js判断是否微信客户端
上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打 ...
- C# 使用 RabbitMQ
1. RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接 ...
- [Now] Configure secrets and environment variables with Zeit’s Now
Often your project will require some secret keys or tokens - for instance, API keys or database auth ...
- Deepin下python安装uwsgi报错: Python.h:没有那个文件或目录
解决方法是安装python-dev,这是Python的头文件和静态库包 正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动 ...
- Word2010中插入多级列表编号
https://jingyan.baidu.com/article/3ea5148901919752e61bbafe.html Word2010中插入多级列表编号的三种方法 听语音 | 浏览:8719 ...
- Http请求工具类(Java原生Form+Json)
package com.tzx.cc.common.constant.util; import java.io.IOException; import java.io.InputStream; imp ...