zoukankan      html  css  js  c++  java
  • 【2017"百度之星"程序设计大赛

    【链接】http://acm.hdu.edu.cn/showproblem.php?pid=6109


    【题意】


    在这里写题意

    【题解】


    要处理的关系越多,肯定就越容易错.
    ->单调性.
    根据这个二分出每组数据的最后一个是什么就好.
    二分判断这样:先处理出哪些数据是一样的,并在一起;并查集
    然后再处理不一样的,看看不一样的x,y是不是在同一个集合里,在的话就不合法了.
    但是这题有一组数据,这一组数据的最后一组是全都合法的,然后你要省略掉这组数据.
    UPD
    那个最后一组数据好像又去掉了

    【错的次数】


    0

    【反思】


    在这了写反思

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define ms(x,y) memset(x,y,sizeof x)
    #define ri(x) scanf("%d",&x)
    #define rl(x) scanf("%lld",&x)
    #define rs(x) scanf("%s",x+1)
    #define oi(x) printf("%d",x)
    #define ol(x) printf("%lld",x)
    #define oc putchar(' ')
    #define os(x) printf(x)
    #define all(x) x.begin(),x.end()
    #define Open() freopen("F:\rush.txt","r",stdin)
    #define Close() ios::sync_with_stdio(0)
    
    
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    
    const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
    const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
    const double pi = acos(-1.0);
    const int N = 1e5+100;
    
    
    int L,x[N],y[N],z[N],f[N],st=1;
    vector <int> v;
    
    
    int ff(int x){
        if (f[x]==x) return x;
        else
            return f[x] = ff(f[x]);
    }
    
    
    bool ok(int n){
        rep1(i,0,100000) f[i] = i;
        rep1(i,st,n)
            if (z[i]==1){
                int r1 = ff(x[i]),r2 = ff(y[i]);
                if (r1!=r2)
                    f[r1] = r2;
            }
        rep1(i,st,n)
            if (z[i]==0){
                int r1 = ff(x[i]),r2 = ff(y[i]);
                if (r1==r2)
                    return false;
            }
        return true;
    }
    
    
    int main(){
        //Open();
        //Close();
        ri(L);
        rep1(i,1,L)
            ri(x[i]),ri(y[i]),ri(z[i]);
        while (st <= L){
            int l = st,r = L,ans = 0;
            while (l <= r){
                int m = (l+r)>>1;
                if ( ok(m) ){
                    ans = m,l = m + 1;
                }else
                    r = m - 1;
            }
            if (ans == 0){
                v.pb(1);
                st = st + 1;
            }else{
                v.pb(ans+1 - st + 1);
                st = ans + 2;
            }
        }
        int len = v.size();
        oi((int) v.size());puts("");
        rep1(i,0,len-1)
            oi(v[i]),puts("");
        return 0;
    }
    


  • 相关阅读:
    django 项目需要注意的一些点
    VUE之路
    Oracle 表格碎片的查看方法
    RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法
    RMAN 修复主库 nologging 操作导致物理备库的坏块
    Oracle 数据库19c 回退降级到 11.2.0.4 方案
    如何评估oracle 数据库rman全备和增量备份大小
    在将Oracle GI和DB升级到19c或降级到以前的版本之前需要应用的补丁 (Doc ID 2668071.1)
    Oracle 数据库坏块处理
    opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626095.html
Copyright © 2011-2022 走看看