hdoj 4768
来源:互联网 发布:中金在线网络 编辑:程序博客网 时间:2024/06/15 03:09
题意
我就不多说啦。
思路
通过二分来缩小区间,通过判断这个区间的总覆盖数来决定区间的转移;
因为如果该区间的总覆盖数是偶数次的话,那么只可能存在全部为偶数,或者个数超过1的数的覆盖为奇数。而题意已经说明了只可能存在一个或者没有的数的覆盖次数为奇数。
代码:
#include<iostream>#include<algorithm>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const __int64 INF=(((long long)(1))<<32);struct node{ __int64 a; __int64 b; __int64 c;}s[20100];__int64 aa;bool judge(__int64 ll,__int64 rr,int nn)//判断区间总覆盖是不是为奇数{ aa=0; for(int ii=1;ii<=nn;ii++) { if(s[ii].b<ll||s[ii].a>rr)continue; __int64 get_l,get_r; if(s[ii].a>=ll)get_l=s[ii].a; else if((ll-s[ii].a)%s[ii].c==0)get_l=ll; else get_l=(ll-s[ii].a)/s[ii].c*s[ii].c+s[ii].a+s[ii].c; get_r=min(s[ii].b,rr); if(get_r<get_l)continue; aa+=(get_r-get_l)/s[ii].c+1; } if(aa%2==1)return true; return false;}__int64 binary(__int64 ll,__int64 rr,int nn)//二分查找{ if(ll==rr&&judge(ll,rr,nn))return ll; else if(ll==rr&&!judge(ll,rr,nn))return -1; while(ll<rr) { __int64 mid=(ll+rr)>>1; if(judge(ll,mid,nn))rr=mid; else if(judge(mid+1,rr,nn))ll=mid+1; else return -1; } judge(ll,ll,nn); return ll;}int main(){ int n; while(scanf("%d",&n)!=EOF) { __int64 get_ll=INF; __int64 get_rr=-1; for(int ii=1;ii<=n;ii++) { scanf("%I64d%I64d%I64d",&s[ii].a,&s[ii].b,&s[ii].c); get_ll=min(get_ll,s[ii].a); get_rr=max(get_rr,s[ii].b); } get_ll=max(get_ll,(__int64)1); get_rr=max(get_rr,(__int64)1); __int64 ans=binary(get_ll,get_rr,n); if(ans==-1)printf("DC Qiang is unhappy.\n"); else printf("%I64d %I64d\n",ans,aa); } return 0;}
- hdoj 4768
- hdoj 4768 Flyer
- HDOJ 4768 Flyer
- 【杂题】HDOJ 4768 Flyer
- HDOJ
- hdoj
- hdoj
- HDOJ
- 【HDOJ 4768】 Flyer (等差数列+二分)
- hdoj 1568 && hdoj 5344 && hdoj 5444
- HDOJ 4768 - Flyer 有单调性, 二分解决...
- HDOJ 2176
- Hdoj--1272
- hdoj 1003
- hdoj 1005
- hdoj 1030
- hdoj 2154
- hdoj 2100
- 阿里巴巴笔试题 2014 武汉
- CUDA的配置与入门
- 在oracle的连接(join)中使用using关键字
- 希尔排序(shell)
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- hdoj 4768
- 3DShader之投影网格(Projected Grid)
- Map 总结
- 美团网2014校园招聘笔试题(长沙站)
- 集合1
- String和Integer回顾。
- pat1064
- Stones (2013.09.15周赛)
- 美团网2014校招笔试题及解答(长沙站+哈尔滨站)