题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4768

题目大意:每组数据有n行输入,每行有三个数A、B、C,A<=B且小于2^32,从A到B每隔C个数发一份传单,最后所有发过传单的数中每一个数发了奇数次传单的是倒霉的那个人,倒霉的人最多只有1个。如果存在这个人输出他的序号和传单数,否则输出“DC Qiang is unhappy”

Sample Input
2
1 10 1
2 10 1
4
5 20 7
6 14 3
5 9 1
7 21 12

Sample Output
1 1
8 1

分析:直接模拟会超时,二分的奇妙运用

代码如下:

 1 # include<iostream>
 2 # include<cstdio>
 3 # include<algorithm>
 4 # define LL __int64
 5 # define maxn 20010
 6 using namespace std;
 7
 8 LL a[maxn],b[maxn],c[maxn];
 9 int n;
10
11 int judge(LL l,LL r)
12 {
13     LL ret=0;
14     for(int i=1; i<=n; i++)
15     {
16         if(l>b[i] || r<a[i]) continue;
17         int k=a[i];
18         int j=min(r,b[i]);
19         if(j<k) continue;
20         ret += max(0LL, (j-k)/c[i]+1);
21     }
22     if(ret%2 == 1)
23         return 1;
24     return 0;
25 }
26
27 int main()
28 {
29     while(scanf("%I64d",&n)!=EOF)
30     {
31         for(int i=1; i<=n; i++)
32             scanf("%I64d%I64d%I64d",&a[i],&b[i],&c[i]);
33         LL l=1;
34         LL r=4294967297;  //可用(__int64)1 << 32 + 1代替,必须加 __int64
35         LL tmp = -1;
36         while(l<=r)
37         {
38             LL mid=(l+r)/2;
39             if(judge(0,mid))
40             {
41                 r = mid - 1;
42                 tmp = mid;
43             }
44             else
45                 l= mid+1;
46         }
47         if(tmp==-1)
48             printf("DC Qiang is unhappy.\n");
49         else
50         {
51             int ans = 0;
52             for(int i=1; i<=n; i++)
53                 if(a[i]<=tmp && b[i]>=tmp &&(tmp-a[i])%c[i]==0)
54                     ans ++;
55             printf("%I64d %d\n",tmp,ans);
56         }
57     }
58     return 0;
59 }

HDU 4768 Flyer(二分法)相关推荐

  1. hdu 4768 Flyer 二分

    http://acm.hdu.edu.cn/showproblem.php?pid=4768 思路: 解题关键是奇数+偶数=奇数,然后我们就是枚举奇数位置(奇数为就一个或者0个),然后计算左边的和是否 ...

  2. 【HDOJ】4768 Flyer_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...

  3. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  4. 2013_changchun_online

    4759 Poker Shuffle 二进制规律+枚举 4760 Good Firewall 稍加变化tire树 4761 Sky 4762 Cut the Cake 概率题目,yy,公式. 4763 ...

  5. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)

    主题链接: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=4430 ZJU:http://acm.zju.edu.cn/onlinejudge/showP ...

  6. HDU 3081Marriage Match II(二分法+并检查集合+网络流量的最大流量)

    职务地址:http://acm.hdu.edu.cn/showproblem.php? pid=3081 有一段时间没写最大流的题了,这题建图竟然想了好长时间... 刚開始是按着终于的最大流即是做多轮 ...

  7. 解方程(二分法) HDU

    Problem Description 给定方程 8x4+ 7x3+ 2x2 + 3x + 6 == Y,请计算x在[0,100]范围内的解. Input 输入数据首先是一个正整数T(1<=T& ...

  8. HDU 2289(二分法 圆台体积)

    题意: 给定一个圆台的上底半径,下底半径和高,给出一定体积的水,求这些水在圆台内的体积. 简单的二分法逼近求高,过程中因为忘记了怎么求小圆台的上底半径而超时了几次. TLE代码: #include & ...

  9. c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法

    本系列是这本算法教材的扩展资料:<算法竞赛入门到进阶>. 罗勇军.郭卫斌. 清华大学出版社 二分法和三分法是算法竞赛中常见的算法思路,本文介绍了它们的理论背景.模板代码.典型题目. 1. ...

最新文章

  1. 【Python】 linecache模块读取文件
  2. 博途v15安装过程中提示出错_博途V15.1对应的V90 HSP和GSD文件安装
  3. mysql,gone away, hy000, reconnect,Mysql大sql文件导入
  4. [小程序]小程序框架的简单页面布局
  5. HDU 4631 Sad Love Story 平面内最近点对
  6. P3384-[模板]树链剖分
  7. 企业即时通讯软件2013 即时通讯大手笔
  8. 21天jmeter打卡day3-熟悉界面
  9. centos php 环境路径,路径(十四):在本地 CentOS 7 上搭建 Web 开发环境 — PHP
  10. java panel画椭圆_如何在Java 2D中绘制椭圆?
  11. mysql中的select into 与insert into语句用于备份数据
  12. omcat 7 的domain域名配置,Tomcat 修改JSESSIONID
  13. 手机版wps怎么制作折线图_手机简历制作 | 微信怎么在线制作简历
  14. cad刷新快捷键_36个CAD快捷键命令,18个CAD制图技巧,学会轻松玩转CAD
  15. 【Travis CI使用教程】如何让定制你的travis.yml配置文件
  16. jmeter生成接口测试报告
  17. 具体怎么使用视频播放屏幕的感重力切换横竖屏
  18. 极客星球 | FATE联邦学习框架理论与应用初探
  19. c语言释放链表所用内存,C语言利用链表实现有效内存管理
  20. ubuntu 14.04 下 启用thinpad指点杆

热门文章

  1. 自然语言处理基本概念
  2. 深度丨2018年AI依然要面临解决的的技术难题
  3. 深度丨2017年深度学习重大研究进展全解读
  4. 一图读懂:中国科学院“基础研究十条”
  5. 仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的
  6. 特斯拉VS Waymo:谁将赢得无人驾驶汽车竞赛?
  7. 华为式创新与海尔式创新——两条道路考验中国制造
  8. 谷歌将屏蔽一切与加密货币相关的广告 6月正式生效
  9. 美国12大科技公司如何参与自动驾驶?
  10. “我在苹果商店下载了一个诈骗 App,损失 60 万美金!”