题目链接:http://poj.org/problem?id=1733

题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一条错误信息之前的正确信息数。

解题思路:对于l~r之间的1的个数的奇偶性,其实可以理解成r比l-1多的1的个数的奇偶,这样刚好可以跟前面一段区间连起来。分两个种类,奇数1,偶数0,同样满足0->1>0的关系像食物链一样。跟How Many Answers Are Wrong差不多。

代码:

 #include<cstdio>
#include<cmath>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<string>
#define LC(a) (a<<1)
#define RC(a) (a<<1|1)
#define MID(a,b) ((a+b)>>1)
using namespace std;
typedef long long LL;
const int INF=0x3f3f3f3f;
const int N=2e4+; int root[N],val[N]; struct node{
int l,r,cla;
}arr[N];
int X[N]; int find(int x){
if(root[x]==x)
return x;
int tmp=find(root[x]);
val[x]=(val[x]+val[root[x]])%;
return root[x]=tmp;
} int bin_search(int l,int r,int x){
while(l<=r){
int mid=(l+r)/;
if(X[mid]==x)
return mid;
else if(X[mid]<x)
l=mid+;
else
r=mid-;
}
return -;
} int main(){
int n,m;
while(~scanf("%d",&n)){
scanf("%d",&m);
int m1=,m2=,ans=;
memset(val,,sizeof(val));
for(int i=;i<=m;i++){
char s[];
scanf("%d%d%s",&arr[i].l,&arr[i].r,s);
if(s[]=='e')
arr[i].cla=;
else
arr[i].cla=;
X[++m1]=arr[i].l;
X[++m1]=arr[i].r;
}
//去重
sort(X+,X++m1);
for(int i=;i<=m1;i++){
if(X[i]!=X[i-])
X[++m2]=X[i];
}
for(int i=;i<=m2;i++){
root[i]=i;
}
for(int i=;i<=m;i++){
int l=bin_search(,m2,arr[i].l)-;
int r=bin_search(,m2,arr[i].r);
int c=arr[i].cla;
int t1=find(l);
int t2=find(r);
if(t1==t2){
if((val[l]+c)%!=val[r]){
ans=i-;
break;
}
}
else{
root[t2]=t1;
val[t2]=(val[l]-val[r]+c+)%;
}
}
if(!ans)
ans=m;
printf("%d\n",ans);
}
return ;
}

最新文章

  1. MongoVUE1.6.9破解启动提示System.ArgumentException: 字体“Courier New”不支持样式“Regular”
  2. C#基础系列——异步编程初探:async和await
  3. CentOS系统将UTC时间修改为CST时间
  4. Web服务器处理HTTP压缩之gzip、deflate压缩
  5. Python语言及其应用 - 知识点遍历
  6. 使用个推的时候出现Installation error: INSTALL_FAILED_DUPLICATE_PERMISSION
  7. selenium python (五)打印信息及设置等待时间
  8. &lt;正见&gt;摘抄
  9. 在TextBox里面仅仅允许数字,按Enter键进入下一个TextBox
  10. 读书时间《JavaScript高级程序设计》七:表单
  11. 使用cnpm搭建私有NPM仓库 发布npm包
  12. Find 找规律,递推
  13. 深入理解 Promise
  14. TS - 解决问题的一些方法
  15. [转]Nginx 静态资源缓存设置
  16. http 文件上传协议图览
  17. NALU数据打RTP包流程详解
  18. kubectl命令使用
  19. &lt;Android 基础(二十三)&gt; Android Studio快捷键
  20. Myeclipse下配置struts2和hibernate

热门文章

  1. LOJ 模拟赛
  2. Codeforces Round #329 (Div. 2)A 字符串处理
  3. [ssh]ssh系列之一
  4. POJ 3421分解质因数
  5. HDU1522 稳定婚姻匹配 模板
  6. Redrain 通用菜单控件使用方法和说明(附源码和demo)
  7. rem自适应js代码
  8. Android 百度定位SDKv4.2及6.0_百度定位实例_安卓定位实例
  9. UVA 1645 Count
  10. redis linux下的开机启动