HDOJ4768(二分区间)
Flyer
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2795 Accepted Submission(s): 1051
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- typedef long long LL;
- const int MAXN = ;
- const LL INF = 0x7fffffffffffffff;
- struct Node{
- LL a, b, c;
- }soc[MAXN];
- int n;
- bool test(LL x)
- {
- LL s = ;
- for(int i = ; i < n; i++)
- {
- LL l = min(x, soc[i].b);
- if(l >= soc[i].a)
- {
- s += ((l - soc[i].a) / soc[i].c + );
- }
- }
- return s & ;
- }
- int main()
- {
- while(scanf("%d", &n) != EOF)
- {
- LL mn = INF, mx = ;
- for(int i = ; i < n; i++)
- {
- scanf("%I64d %I64d %I64d", &soc[i].a, &soc[i].b, &soc[i].c);
- mn = min(mn, soc[i].a);
- mx = max(mx, soc[i].b);
- }
- LL left = mn, right = mx;
- if(!test(right))
- {
- printf("DC Qiang is unhappy.\n");
- continue;
- }
- while(right > left)
- {
- LL mid = (left + right) >> ;
- if(test(mid))
- {
- right = mid;
- }
- else
- {
- left = mid + ;
- }
- }
- LL res = ;
- for(int i = ; i < n; i++)
- {
- if(right > soc[i].b || right < soc[i].a) continue;
- if((right - soc[i].a) % soc[i].c == )
- {
- res++;
- }
- }
- printf("%I64d %I64d\n", right, res);
- }
- return ;
- }
异或运算也能过。
- #include <cstdio>
- using namespace std;
- typedef long long LL;
- const int MAXN = ;
- struct Node{
- LL a, b, c;
- }soc[MAXN];
- int n;
- int main()
- {
- while(scanf("%d", &n) != EOF)
- {
- for(int i = ; i < n; i++)
- {
- scanf("%I64d %I64d %I64d", &soc[i].a, &soc[i].b, &soc[i].c);
- }
- LL x = ;
- for(int i = ; i < n; i++)
- {
- for(LL l = soc[i].a; l <= soc[i].b; l += soc[i].c)
- {
- x ^= l;
- }
- }
- if(x != )
- {
- LL res = ;
- for(int i = ; i < n; i++)
- {
- if(x > soc[i].b || x < soc[i].a) continue;
- if((x - soc[i].a) % soc[i].c == )
- {
- res++;
- }
- }
- printf("%I64d %I64d\n", x, res);
- }
- else
- {
- printf("DC Qiang is unhappy.\n");
- }
- }
- return ;
- }
HDOJ4768(二分区间)的更多相关文章
- HDU 4768 (二分区间---涨姿势)
题意:告诉n组A,B,C,按照A + k * C生成等差数列,问这n组数列中哪个数字出现了奇数次以及出现了几次,题目保证最多只会出现一个这种数字. 分析:读完题并没有思路,后来知道是二分区间,枚举是哪 ...
- HDU 5875 st+二分区间
题目大意:给你n个数,q次询问,每次询问区间[l, r],问a[i]%a[i + 1] % a[i + 2]...%a[j](j <= r)的值 思路:st预处理维护,再二分区间,复杂度n*(l ...
- 【BZOJ】1044: [HAOI2008]木棍分割 二分+区间DP
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1044 Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, ...
- 【NOIP2013模拟】终极武器(经典分析+二分区间)
No.2. [NOIP2013模拟]终极武器 题意: 给定你一些区间,然后让你找出\(1\sim 9\)中的等价类数字. 也就是说在任何一个区间里的任何一个数,把其中后\(k\)位中的某一位换成等价类 ...
- HDU - 4614 Vases and Flowers(二分+区间修改)
https://cn.vjudge.net/problem/HDU-4614 题意 n个花瓶,m个操作,花瓶里面有的有花,有的是空的.1操作是从a开始往右放b朵花,花瓶有了的不放,跳过,直到a右边都放 ...
- HDU 5289 Assignment (二分+区间最值)
[题目链接]click here~~ [题目大意]: 给出一个数列,问当中存在多少连续子序列,子序列的最大值-最小值<k [思路]:枚举数列左端点.然后二分枚举右端点,用ST算法求区间最值.(或 ...
- vijos1740 聪明的质监员 (二分、区间求和)
http://www.rqnoj.cn/problem/657 https://www.vijos.org/p/1740 P1740聪明的质检员 请登录后递交 标签:NOIP提高组2011[显示标签] ...
- Todd's Matlab讲义第5讲:二分法和找根
二分法和if ... else ... end 语句 先回顾一下二分法.要求方程\(f(x)=0\)的根.假设\(c = f(a) < 0\)和\(d = f(b) > 0\),如果\(f ...
- Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树+二分
B. Queue Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/problem/91/B Descrip ...
随机推荐
- maven junit.framework不存在问题解决
问题 在使用maven进行一个工程的编译,已加入junit包的依赖,编译的时候却总是报“junit.framework不存在”错误. pom.xml中junit包加入如下: <dependenc ...
- Centos6.5安装glusterfs3.6.2
硬件环境Centos6.5 glusterfs3.6.2 先安装必要的包 yum install flex bison 2. 下载glusterfs3.6.2 wget http://downloa ...
- 【P2016】战略游戏(贪心||树状DP)
这个题真是...看了一会之后,发现有一丝丝的熟悉,再仔细看了看,R,这不是那个将军令么...然后果断调出来那个题,还真是,而且貌似还是简化版的...于是就直接改了改建树和输入输出直接交了..阿勒,就2 ...
- mybatis 中if标签判断boolean 的写法。
mybatis 的if 比较标签在比较数值时可以这样写: <if test="value=0"> </if> 在比较字符串时可以这么写: <if te ...
- 一个简单的Javascript闭包示例
//=====用闭包实现函数的Curry化===== //数字求和函数的函数生成器 function addGenerator( num ){ //返回一个简单的匿名函数,求两个数的和,其中第一个数字 ...
- Mfc 建立窗口线程
之前一直都是在学习C,但是没用MFC写过东西.所以这个算是MFC的一个处女作把. 今天硬着头皮写了个爆破工具,但是界面(edit控制)在显示的时候一下就被卡住了. 于是到处问人,后来有个不错的朋友帮我 ...
- VC SOCKET 压缩通信学习
Server................// Server.cpp : Defines the entry point for the console application. // #inclu ...
- 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树
package com.test.tree; import java.util.Iterator; /** * 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树. * 在每个节点上添加一 ...
- 导入别人struts2项目可能要做的改变
然后: 接着 再接着 最后
- 啥是ETL、ELT
ETL就是Extract.Transfrom.Load即抽取.转换.加载三个英文单词首字母的集合.抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表 ...