zoukankan      html  css  js  c++  java
  • 奇偶游戏

    链接

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e4 + 10;
    int n,m,cnt,a[2 * maxn],fa[2 * maxn];
    string str;
    
    struct node{
        int l,r,ans;
    }que[maxn];
    
    int find(int x){
        if(x == fa[x]) return x;
        return fa[x] = find(fa[x]);
    }
    
    void read_discrete(){
        cin >> n >> m;
        for(int i = 1; i <= m; i++) {
            cin >> que[i].l >> que[i].r >> str;
            que[i].ans = (str == "odd" ? 1 : 0);
            a[++cnt] = que[i].l - 1;
            a[++cnt] = que[i].r;
        }
        sort(a + 1,a + 1 + cnt);
        n = unique(a + 1, a + 1 + cnt) - a - 1;
    }
    signed main(){
      // freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        read_discrete();
        for(int i = 0; i <= 2 * n; i++)
            fa[i] = i;
        for(int i = 1; i <= m; i++){
            int x = lower_bound(a + 1, a + 1 + n,que[i].l - 1) - a;
            int y = lower_bound(a + 1, a + 1 + n,que[i].r) - a;
            int x_odd = x,x_even = x + n,y_odd = y,y_even = y + n;
            if(!que[i].ans){
                if(find(x_odd) == find(y_even)){
                    cout << i - 1 << endl;
                    return 0;
                }
                fa[find(x_odd)] = find(y_odd);
                fa[find(x_even)] = find(y_even);
            }
            else {
                if (find(x_odd) == find(y_odd)){
                    cout << i - 1 << endl;
                    return 0;
                }
                fa[find(x_even)] = find(y_odd);
                fa[find(x_odd)] = find(y_even);
            }
        }
        cout << m << endl;
        return 0;
    }
    View Code
  • 相关阅读:
    TapTap推广统计逻辑
    广告推广测试
    背压(Backpressure)机制
    工作相关资料
    ElasticSearch问题记录
    bfrd collector性能排查
    Ubuntu13.10下安装HADOOP
    Hadoop各商业发行版之比较
    Behave用户自定义数据类型
    Behave step matcher
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/13516403.html
Copyright © 2011-2022 走看看