zoukankan      html  css  js  c++  java
  • hdu4768二分答案

    /*
    如果发的传单是偶数,那么所有人都收到双数张、
    仅考虑发了单数张传单,二分答案x,如果x左边是偶数,那么答案在右侧,如果x左边是奇数,那么答案在左侧  
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #define ll long long 
    #define maxn 20005
    #define INF 1000000009
    
    using namespace std;
    
    struct node{
        ll a,b,c;
    }p[maxn]; 
    ll n;
    
    long long check(ll x){
        if(x==0) return 0;
        ll res=0,tmp=0;
        for(int i=1;i<=n;i++){
            tmp=min(x,p[i].b);//因为这个地方没写wa了
            res+=tmp>=p[i].a?(tmp-p[i].a)/p[i].c+1:0;//一定要判定一下 
        }
        return res;
    } 
    
    int main(){
        while(scanf("%lld",&n)==1){
            ll sum=0,l=1,r=1,ans,mid;
            for(int i=1;i<=n;i++){
                scanf("%lld%lld%lld",&p[i].a,&p[i].b,&p[i].c);
                r=max(r,p[i].b);
                sum+=p[i].a<=p[i].b?(p[i].b-p[i].a)/p[i].c+1:0;
            }
            if(sum%2==0){
                puts("DC Qiang is unhappy.");
                continue;
            }
            while(l<=r){
                mid=l+r>>1;
                if(check(mid)%2!=0)//mid及左边的传单数是奇数,那个人在左边 
                    ans=mid,r=mid-1;
                else l=mid+1;    //那个人在右边      
            }
            printf("%lld %lld
    ",ans,check(ans)-check(ans-1));
        }    
        return 0;
    }
  • 相关阅读:
    Codeforces Round #548
    省选前的th题
    省选前多项式的挣扎
    2019.3.18考试&2019.3.19考试&2019.3.21考试
    省选前的反演抢救计划
    2019.3.16 noiac的原题模拟赛
    AtCoder Regular Contest 069 F
    Atcoder Grand 012 C
    Atcoder Grand 011 C
    Atcoder Grand 006 C-Rabbit Exercise
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10143895.html
Copyright © 2011-2022 走看看