http://acm.hdu.edu.cn/showproblem.php?pid=4768

题意:n个传单分别发给编号为ai, ai + ci, ai + 2 * ci, .. , ai + k * ci的学生,其中k 是满足 ai + k * ci <= bi 的最大的k,题目保证收到传单的个数为奇数的学生最多只有一个,求这个学生的编号和收到的传单数。

方法:考虑前i个学生,sum[i]表示前i个学生收到传单的个数的奇偶性,如果sum[i]为奇数,证明那个学生一定在前i个,否则在i之后,据此可以缩小范围,自然得出二分的方法。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <algorithm>
  6. #include <map>
  7. #include <vector>
  8. #include <stack>
  9. #include <string>
  10. #include <ctime>
  11. #include <queue>
  12. #define mem0(a) memset(a, 0, sizeof(a))
  13. #define mem(a, b) memset(a, b, sizeof(a))
  14. #define lson l, m, rt << 1
  15. #define rson m + 1, r, rt << 1 | 1
  16. #define eps 0.0000001
  17. #define lowbit(x) ((x) & -(x))
  18. #define memc(a, b) memcpy(a, b, sizeof(b))
  19. #define x_x(a) ((a) * (a))
  20. #define LL long long
  21. #define DB double
  22. #define pi 3.14159265359
  23. #define MD 10000007
  24. #define INF (int)1e9
  25. #define max(a, b) ((a) > (b)? (a) : (b))
  26. using namespace std;
  27. struct Node {
  28. int a, b, c;
  29. void inp() {
  30. scanf("%d%d%d", &a, &b, &c);
  31. }
  32. } node[];
  33. int n;
  34. int sum(int p)
  35. {
  36. int ans = ;
  37. for(int i = ; i <= n; i++) {
  38. if(p < node[i].a) continue;
  39. ans ^= (((min(node[i].b, p) - node[i].a) / node[i].c + ) & );
  40. }
  41. return ans;
  42. }
  43. int countNum(int p)
  44. {
  45. int ans = ;
  46. for(int i = ; i <= n; i++) {
  47. ans += (p >= node[i].a && p <= node[i].b && (p - node[i].a) % node[i].c == );
  48. }
  49. return ans;
  50. }
  51. int main()
  52. {
  53. //freopen("input.txt", "r", stdin);
  54. while(cin>> n) {
  55. for(int i = ; i <= n; i++) {
  56. node[i].inp();
  57. }
  58. int maxID = ((LL) << ) - ;
  59. if(sum(maxID)) {
  60. int l = , r = maxID;
  61. while(l < r) {
  62. int m = ((LL)l + r) >> ;
  63. if(sum(m)) r = m;
  64. else l = m + ;
  65. }
  66. cout<< l<< " "<< countNum(l)<< endl;
  67. }
  68. else puts("DC Qiang is unhappy.");
  69. }
  70. return ;
  71. }

[hdu4768]二分的更多相关文章

  1. hdu4768二分答案

    /* 如果发的传单是偶数,那么所有人都收到双数张. 仅考虑发了单数张传单,二分答案x,如果x左边是偶数,那么答案在右侧,如果x左边是奇数,那么答案在左侧 */ #include<iostream ...

  2. Flyer(二分 HDU4768)

    Flyer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. HDU4768:Flyer [ 二分的奇妙应用 好题 ]

    传送门 Flyer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. hdu4768 非常规的二分

    题意:       n个社团给同学发传单,同学一共有1--2^31这么多,每个社团有三个数A ,B ,C ,只有 满足 A ,A + C ,A + C + C ...A + KC <= B 的学 ...

  5. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  6. BZOJ 2756: [SCOI2012]奇怪的游戏 [最大流 二分]

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3352  Solved: 919[Submit][Stat ...

  7. 整体二分QAQ

    POJ 2104 K-th Number 时空隧道 题意: 给出一个序列,每次查询区间第k小 分析: 整体二分入门题? 代码: #include<algorithm> #include&l ...

  8. [bzoj2653][middle] (二分 + 主席树)

    Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整. 给你一个长度为n的序列s. 回答Q个这样的询问:s的左端点在[a,b ...

  9. [LeetCode] Closest Binary Search Tree Value II 最近的二分搜索树的值之二

    Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...

随机推荐

  1. vue如何添加jquery?

    1.首选通过npm安装jquery? 2.在build/webpack.base.conf文件当中引入jquery <pre>module.exports = { ... resolve: ...

  2. 初识Cobalt Strike

    简介 Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,jav ...

  3. [JS] 自己弄得个倒计时

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. [GO] mac安装GO 初次尝试

    其实试了好多方法,我用的是下面这种方法,简单快捷! 安装homebrew 在终端输入命令 ruby -e "$(curl -fsSL https://raw.githubuserconten ...

  5. tensorflow1.0 构建卷积神经网络

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import os os.envi ...

  6. ES6中对数值的扩展

    上一节和大家学习了字符串的扩展,这一节轮到了数值,我们一起来学习数值的扩展. 剧透一下,这一节并不会很烧脑,都是介绍类的知识讲解,理解性的东西不多,初学者们也可以愉快地看完. 传统的写法 在介绍数值的 ...

  7. sql注入 pikachu

    闭合条件的探测 数字型注入 burp抓包 分别测试 id=1 and 1=1和id=1 or 1=1 存在漏洞 字符型注入 ' 报错 探测闭合条件 ' order by 1# 未报错.构成闭合 同上有 ...

  8. ThinkPHP框架初步掌握

    为了帮老师用ThinkSNS二次开发一个微博系统,专门花了几天学习ThinkPHP框架,现在将一些ThinkPHP入门知识作以记录. 首先声明: 本文不是完全教程,只是将开发中碰到的问题作以总结,如果 ...

  9. 2019-2020-1 20199310《Linux内核原理与分析》第三周作业

    1.问题描述 计算机的3大法宝是存储程序计算机,函数调用堆栈和中断机制,存储程序计算机已经在上一个博客中进行具体描述,本文将在剩下两方面出发对操作系统是如何工作的进行学习和探讨. 2.解决过程 2.1 ...

  10. from _sqlite3 import * ImportError: DLL load failed: 找不到指定的模块。

    *Error creating Django application: Error on python side. Exit code: 1, err: Traceback (most recent ...