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)的更多相关文章

  1. Coder-Strike 2014 - Finals (online edition, Div. 2) A. Pasha and Hamsters

    水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...

  2. Coder-Strike 2014 - Finals (online edition, Div. 2) B. Start Up

    需要满足的条件是 (1)每个字母是对称的 (2)每个字符串是对称的 #include <iostream> #include <algorithm> #include < ...

  3. 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 ...

  4. Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】

    Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...

  5. 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 ...

  6. IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E - Bear and Forgotten Tree 2 链表

    E - Bear and Forgotten Tree 2 思路:先不考虑1这个点,求有多少个连通块,每个连通块里有多少个点能和1连,这样就能确定1的度数的上下界. 求连通块用链表维护. #inclu ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. 亿格瑞A5-hdmi故障了

    http://cn.egreatworld.com/store/product/egreat-a5-4k-uhd-hdr-blu-ray-navigation-hdd-media-player/ a5 ...

  2. 关于win10输入法ctrl+shift+f和idea组合键冲突的解决办法。

    先Ctrl+F,按住Ctrl,再按Shift+F. 因为win10的输入法热键无法关闭(在后期的版本中好像可以了,不过没更新),在IEDA中ctrl+shift+f组合键没法使用,可以按如下按键组合使 ...

  3. 使用JQuery将前端form表单数据转换为JSON字符串传递到后台处理

    一般地,我们在处理表单(form表单哦)数据时,传输对象或字符串到后台,Spring MVC或SpringBoot的Controller接收时使用一个对象作为参数就可以被正常接收并封装到对象中.这种方 ...

  4. PHP移动互联网开发笔记(8)——MySQL数据库基础回顾[2]

    一.数据表 为了确保数据的完整性和一致性,在创建表时指定字段名称,字段类型和字段属性外,还需要使用约束(constraint),索引(index),主键(primary key)和外键(foregin ...

  5. $.ajax 请求 拦截器 重定向 无效 解决办法

    在ajax 异步请求下 拦截器过滤器中使用 重定向 页面响应无效 我这里用的是springboot框架,用拦截器实现 对请求的拦截 ,session超时直接跳转到login.html页面. 后台代码: ...

  6. js进阶 11-1 jquery中的页面内容操作的三个方法

    jquery中的页面内容操作的三个方法 一.总结 一句话总结:记三个方法即可.text,html,val.因为这里是方法,所以设置值的是后面方法的参数. 1.jquery中的页面内容操作的三个方法? ...

  7. 【t067】补充装备

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] Mini进入洞口前自然要先来到镇里的装备店买些装备.买每件装备都需要付出一定的体力点,同时也会获得一定 ...

  8. Android Xfermode 真实 实现全面、圆角图片

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/42094215.本文出自:[张鸿洋的博客] 1.概述 事实上这篇本来准备Andro ...

  9. sklearn 特征降维利器 —— PCA & TSNE

    同为降维工具,二者的主要区别在于, 所在的包不同(也即机制和原理不同) from sklearn.decomposition import PCA from sklearn.manifold impo ...

  10. 用Mochiweb打造百万级Comet应用,第一部分

    http://www.iteye.com/topic/267028 原文:A Million-user Comet Application with Mochiweb, Part 1 参考资料:Com ...