Parity game---poj1733
Description
You suspect some of your friend's answers may not be correct and you want to convict him of falsehood. Thus you have decided to write a program to help you in this matter. The program will receive a series of your questions together with the answers you have received from your friend. The aim of this program is to find the first answer which is provably wrong, i.e. that there exists a sequence satisfying answers to all the previous questions, but no such sequence satisfies this answer.
Input
Output
Sample Input
10
5
1 2 even
3 4 odd
5 6 even
1 6 even
7 10 odd
Sample Output
3 题意:有一个长度为n的01串,有m句话,每句话说明x到y之间是有奇数(odd)个1还是偶数(even)个1;求的是前几句话是真的;如果全部为真输出m; 每输入一句话时,可以判断是否和之前的话相冲突,用r[i]表示i到i的跟节点之间1的个数是偶数还是奇数,1表示奇数,0代表偶数; 本题的n是10亿,所以不能定义一个10亿的数组;用map<int,int>定义就行

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<map>
#define N 105
#define INF 0xfffffff
using namespace std; //int f[N], r[N];//r[i]代表i到i的跟节点之间的关系;
map<int,int> f;
map<int,int> r; int Find(int x)
{
if(!f[x])
return x;
int k = f[x];
f[x] = Find(f[x]);
r[x] = (r[x]+r[k])%;
return f[x];
}
int main()
{
int px, py, flag, ans, i, n, m, x, y, d;
char str[];
while(scanf("%d", &n)!=EOF)
{
flag = ;
f.clear();
r.clear();
scanf("%d", &m);
for(i = ; i <= m; i ++)
{
scanf("%d%d%s", &x, &y, str);
x--;
if(str[] == 'e')//偶数是0;奇数是1;
d = ;
else
d = ;
px = Find(x);
py = Find(y);
if(px != py)
{
f[px] = py;
r[px] = (r[y] + d - r[x] +)%;//画向量图找关系;
}
else if(flag== && ( + r[x]-r[y])% != d)
{
flag = ;
ans = i;
}
}
if(flag==)//如果全部都正确的话输出m;-_-在这wa了一次;
ans=m+;
printf("%d\n", ans-);
}
return ;
}
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<map>
#define N 105
#define INF 0xfffffff
using namespace std; //int f[N], r[N];//r[i]代表i到i的跟节点之间的关系;
map<int,int> f;
map<int,int> r; int Find(int x)
{
if(!f[x])
return x;
int k = f[x];
f[x] = Find(f[x]);
r[x] = (r[x]+r[k])%;
return f[x];
}
int main()
{
int px, py, flag, ans, i, n, m, x, y, d;
char str[];
while(scanf("%d", &n)!=EOF)
{
flag = ;
f.clear();
r.clear();
scanf("%d", &m);
for(i = ; i <= m; i ++)
{
scanf("%d%d%s", &x, &y, str);
x--;
if(str[] == 'e')//偶数是0;奇数是1;
d = ;
else
d = ;
px = Find(x);
py = Find(y);
if(px < py)
{
f[px] = py;
r[px] = (r[y] + d - r[x]+)%;//画向量图找关系;
}
else if(px > py)
{
f[py] = px;
r[py] = (r[x] - r[y] - d + )%;
} else if(px==py &&flag== && (r[y] - r[x] + )% != d)
{
flag = ;
ans = i;
}
}
if(flag==)//如果全部都正确的话输出m;-_-在这wa了一次;
ans=m+;
printf("%d\n", ans-);
}
return ;
}
Parity game---poj1733的更多相关文章
- POJ1733 Parity game 【扩展域并查集】*
POJ1733 Parity game Description Now and then you play the following game with your friend. Your frie ...
- POJ1733 Parity game 【带权并查集】*
POJ1733 Parity game Description Now and then you play the following game with your friend. Your frie ...
- 【POJ1733】Parity game
[POJ1733]Parity game 题面 vjudge 题解 比较简单的分类并查集 将一个查询操作看作前缀和\(s_r-s_{l-1}\)的奇偶性 将每个点拆成一奇一偶然后分别连边即可 如果一个 ...
- 【poj1733】 Parity game
http://poj.org/problem?id=1733 (题目链接) 题意 一个由0,1组成的序列,每次给出一段区间的奇偶,问哪一条信息不合法. Solution 并查集. 题目中序列的长度有很 ...
- 【POJ1733】【带标记并查集】Parity game
Description Now and then you play the following game with your friend. Your friend writes down a seq ...
- POJ1733 Parity game
题意 Language:Default Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13833 Acc ...
- poj1733 Parity Game(扩展域并查集)
描述 Now and then you play the following game with your friend. Your friend writes down a sequence con ...
- POJ1733:Parity Game(离散化+带权并查集)
Parity Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12853 Accepted: 4957 题目链接 ...
- POJ1733 Parity game —— 种类并查集
题目链接:http://poj.org/problem?id=1733 Parity game Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- 【poj1733】Parity game--边带权并查集
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15776 Accepted: 5964 Description Now ...
随机推荐
- /var/spool/postfix/maildrop/ 中有大量的文件
今天查看硬盘剩余的容量,发现‘/’目录下占用了大量的空间:可我在这个目录下面没有放什么东西:仔细查看在/var/spool/postfix/maildrop/ 中发现了大量的文件.怎么会有这么多的文件 ...
- 在 Ubuntu 13.10 安装 PyCharm 3.0.1 & Oracle JDK
由于授权问题,在较新的Linux发行版本中都不再包含Oracle Java,取而代之的是OpenJDK.Ubuntu也是如此. OpenJDK能满足大部分的应用程序运行条件,但PyCharm无法在Op ...
- 【转】Reason: The specified virtual disk needs repair.
转自http://tscsh.blog.163.com/blog/static/200320103201393095248828/电脑突然断电后,或者非正常关机,ubuntu打不开了,出现错误提示 打 ...
- HTML5实现图片预览功能
两种方式实现 URL FileReader Index.jsp文件 <%@page contentType="text/html" pageEncoding="UT ...
- 某MDU产品OMCI软件升级加速方案
说明 本文基于某GPON MDU产品的当前情况,提出OMCI升级的加速方案. 因时间仓促和水平限制,文中难免存在错漏和不足之处,敬请指正. 一 问题提出 根据G.988标准相关描述,软件升级过程可分 ...
- IOS设计模式第七篇之观察者设计模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 观察者设计模式 在观察者设计模式里面,一个对象通知其他的对象一些状态的改变.涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式.这个设计模式 ...
- 【Phalapi】新加Namespace (模块)
官网地址: https://www.phalapi.net/ github 地址: https://github.com/phalapi/phalapi/tree/master-2x 1 compos ...
- sencha touch Container tpl 监听组件插件(2013-9-14)
将http://www.cnblogs.com/mlzs/p/3279162.html中的功能插件化 插件代码: /* *tpl模版加入按钮 *<div class="x-button ...
- JavaScript arguments对象详解
1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象.代表传给一个function的参数列表. 我们先用一个例子直观了解下 JavaScript 中的 argume ...
- Android开发之ActionBar
使用微信APP的小伙伴对于微信的ActionBar一定有印象,今天就带领大家一起实现以下这个效果. 第一步打开我们的开发工具,这里我使用的是Eclipse+ADT插件,然后创建我们的工程,这里选择An ...