codevs 2546奇偶游戏
来源:互联网 发布:社区下单系统源码 编辑:程序博客网 时间:2024/06/15 14:53
奇偶
【题目描述】
给定一个M格排成一行的储藏柜,每个格子能放一个物品;再给出N个条件,每个条件形同如下:A B odd/even,表示第A个格子到第B个格子之间(包括两端)放了奇数(odd)个物品或者偶数(even)个物品。
现在给出这N个条件,请你求出K,使得第1个条件到第K个条件全部能满足,而K+1不能满足。(K显然唯一)
【输入格式】
第一行一个整数M。
第二行一个整数N。
接下来N行,每行两个整数和一个字符串,Ai,Bi,odd/even。
【输出格式】
仅一行,表示答案,如果全部满足,那么输出条件总数。
【样例输入】
10
5
1 2 even
3 4 odd
5 6 even
1 6 even
7 10 odd
【样例输出】
3
【数据规模】
对于30%的数据: 0≤N≤10;1≤M≤10;
对于60%的数据: 0≤N≤500;1≤M≤5,000;
对于100%的数据:0≤N≤5,000;1≤M≤1,000,000,000;
并没有完全理解这道题。。。先抄代码了
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 5005using namespace std;char c[6];int m,n,t; int f[2*maxn],a[maxn*2],s[maxn*2],p[maxn],x[maxn],y[maxn];int find(int x){ if (f[x]==x) return x; s[x]=s[f[x]]^s[x]; return f[x]=find(f[x]);}void up(int k){ s[f[x[k]]]=s[x[k]]^p[k]; f[f[x[k]]]=y[k];}int main(){ cin>>m>>n; for (int i=1;i<=n;i++) { scanf("%d%d%s",&x[i],&y[i],c); if (c[0]=='o') p[i]=1; x[i]--; a[(i<<1)-1]=x[i];a[i<<1]=y[i]; } sort(a+1,a+2*n+1); t=unique(a+1,a+2*n+1)-a-1; for (int i=1;i<=t;i++) f[i]=i; for (int i=1;i<=n;i++){ x[i]=lower_bound(a+1,a+t+1,x[i])-a; y[i]=lower_bound(a+1,a+t+1,y[i])-a; if (find(x[i])==find(y[i])){ if ((s[x[i]]^s[y[i]])!=p[i]) { cout<<i-1;return 0; } } else up(i); } return 0;}
阅读全文
1 0
- codevs 2546奇偶游戏
- CODEVS 2456 奇偶游戏
- [51nod1430]奇偶游戏
- CodeVs 1148 传球游戏
- CODEVS-1051 接龙游戏
- CODEVS 3145 汉诺塔游戏
- 【codevs】2292图灵机游戏
- Codevs Mayan游戏
- codevs-1085 数字游戏
- codevs-1085 数字游戏
- codevs[3145]汉诺塔游戏
- 接龙游戏 [Codevs 1051]
- 【codevs 1269】匈牙利游戏
- Codevs P1052 地鼠游戏
- Codevs 1051 接龙游戏
- Codevs 1358 棋盘游戏
- Codevs 1085 数字游戏
- codevs 1129 三国游戏
- 【C++】leetcode 220. Contains Duplicate III
- java 中new 和.newInstance() 的区别
- 【JavaScript】js控制样式
- 大话设计模式读后感之策略模式
- druid配置数据库连接使用密文密码
- codevs 2546奇偶游戏
- GitHub上最流行的Top 10 JavaScript项目
- Android 底部导航栏 (底部 Tab) 最佳实践
- 前台进程启动打印错误日志
- python3 网络爬虫(七)针对scrapy并发请求的一点看法(提速篇)
- Fragment中调用getActivity()为null的问题
- arcgis api for js 加载google地图
- ios项目中调用百度、高德、本机地图导航
- 通过sql语句快速查询数据库共有多少张表