题目

一道神奇的题qwq

首先看题很容易想到把所有的点存下来然后暴力枚举...于是RE 20分

所以要找一种不用开那么大的数组的解法(然而我自己是不可能想出来的qwq

注意一个地方,人数为奇数的位置“最多也仅有一个”,说明奇偶性只根据这一个点改变

……也就是说,用前缀和的方法表示的时候,奇数点之前都是偶数,之后都是奇数

所以 正解是二分答案qwq

对于某个点,用一个cal函数判断这一点是否为偶数,如果是说明这个点在后面,否则在前面(或者就是这一点)

——二分的这个地方WA了5次!

这是原来写的

        while(l <= r) {
mid = (l+r)/;
if (cal(mid)% == )l = mid+;
else r = mid-;
}
cnt = cal(mid)-cal(mid-);
printf("%lld %lld\n",mid,cnt);

为什么会WA呢... 举个例子,

当正确答案为3,l = 2, r = 4, mid = 3;

r = mid -1 = 2;l = mid +1 = 3

这时候就把3跳过去了qwq

所以要改成这样↓

        while(l < r) {
mid = (l+r)/;
if (cal(mid)% == ) l = mid+;
else r = mid;
}
cnt = cal(l)-cal(l - );
printf("%lld %lld\n",l,cnt);

就可以啦w(感谢mrclr学长和jlSsy)

哦还有...bin哥说不放心的话可以用一个ans min来每次把它记下来qwq

以下是完整代码

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
long long s[],e[],d[];
long long t,n,l,r,mid,maxe,cnt; long long cal(long long p) {
long long sum = ;
for(long long j = ; j <= n; j++) {
if(p>=s[j])
sum += (min(p,e[j])-s[j])/d[j]+;
}
return sum;
}
int main() {
scanf("%lld",&t);
for(long long i = ; i <= t; i++) {
maxe = ;
cnt = ;
scanf("%lld",&n);
for(long long j = ; j <= n; j++) {
scanf("%lld%lld%lld",&s[j],&e[j],&d[j]);
maxe = max(maxe,e[j]);
}
if (cal(maxe)% == ) {
printf("Poor QIN Teng:(\n");
continue;
}
l = ;
r = maxe;
while(l < r) {
mid = (l+r)/;
//printf("%lld %lld \n",mid,cal(mid));
if (cal(mid)% == ) l = mid+;
else r = mid;
}
/*for(long long j = 1; j <= n; j++) {
if(mid>=s[j]&&mid<=e[j]&&((mid-s[j])%d[j]==0))
cnt++;
}*/
cnt = cal(l)-cal(l - );
printf("%lld %lld\n",l,cnt);
}
return ;
}

luogu P4403 [BJWC2008]秦腾与教学评估的更多相关文章

  1. Luogu P4403 [BJWC2008]秦腾与教学评估【二分答案】By cellur925

    题目传送门 这道题:真·凉心出题人. 二分答案,个人感觉其实并不只适用于有明显的"最大值最小/最小值最大"条件的题目,其实也可以称它为一种"优化的暴力".这题就 ...

  2. [luogu4403][bzoj1271][BJWC2008]秦腾与教学评估

    题目描述 在秦腾进入北京大学学习的第一个学期,就不幸遇到了前所未有的教学评估.在教学评估期间,同学们被要求八点起床,十一点回宿舍睡觉,不准旷课,上课不准迟到,上课不准睡觉--甚至连著名的北大三角地也在 ...

  3. [BJWC2008]秦腾与教学评估

    嘟嘟嘟 二分好题. 怎么二分呢?反正我是没想出来. 看了题解. 因为只有一个为奇数的点,所以对于一个位置x,求出区间[0, x]的教总和,如果为奇数,说明x取大了:否则x取小了(妙啊). 虽然答案在i ...

  4. OpenJudge-bailian 3454 秦腾与教学评估

    http://bailian.openjudge.cn/practice/3454?lang=en_US 题目 在秦腾进入北京大学学习的第一个学期,就不幸遇到了前所未有的教学评估.在教学评估期间,同学 ...

  5. $Luogu4403$ 秦腾与教学评估 二分

    $Luogu$ $Description$ 有$N$个数列,求一个$x$,$x$在各个数列中的出现次数之和为奇数.这样的$x$最多存在$1$个.若不存在则输出Poor QIN Teng:( $Sol$ ...

  6. [BZOJ1271][WC2008]秦腾与教学评估(巧妙的二分)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1271 分析: 很巧妙的一道题 因为最多只有一个点是奇数,所以说明这个点前面的前缀和都是 ...

  7. BZOJ 1271 秦腾与教学评估

    二分. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  8. BZOJ1271: [BeiJingWc2008]秦腾与教学评估

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1271 题解: 这种题真是太神了! 只需要考虑被覆盖的次数的奇偶性,并且保证满足题意的点至多只有 ...

  9. bzoj1271 秦腾与教学评估

    SB题!!! 我TM困惑了一下午,三份代码答案全都不一样,后来才发现要用long long来二分... 拿记事本一改就A了. 我TM...... 这SB题目...... 这惨痛的事实充分说明了long ...

随机推荐

  1. Docker 容器备份例子

    # 在 node1 执行 nginx 程序,挂载本地的目录 docker pull nginx:stable-alpine mkdir /data/html echo "hello worl ...

  2. 【CSS学习】--- overflow属性

    一.前言 在网页布局中,未处理的溢出元素绝对算得上是个“毒瘤”.因为如果一个“盒子”周围还有其它元素,而从这个盒子中溢出的元素会和盒子周围的元素发生层叠,并脱离了整个HTML元素,所以我们应当合理使用 ...

  3. JS之this应用详解

    目录 1. this作为全局变量2. 作为对象方法的调用3. 作为构造函数调用4. apply调用 this是Javascript语言的一个关键字.它代表函数运行时,自动生成的一个内部对象,只能在函数 ...

  4. python中传值和传地址问题

    在python中,还没有对这个知识点有一个详细的定义,很模糊的说明了,通过下面代码,可以观察出来,什么时候传的是值,什么时候传的是地址 有时候会发现自己的数据发生变化,可能就是这个原因,python的 ...

  5. ionic打包报错Execution failed for task ':processDebugResources'

    ionic 打包的时候报了这样一个错误:Execution failed for task ':processDebugResources' 分析: compile "com.android ...

  6. 洗礼灵魂,修炼python(53)--爬虫篇—urllib模块

    urllib 1.简介: urllib 模块是python的最基础的爬虫模块,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如 ...

  7. python第九天----今天来晚了!

    作业 1. HAproxy配置文件操作1. 根据用户输入输出对应的backend下的server信息2. 可添加backend 和sever信息3. 可修改backend 和sever信息4. 可删除 ...

  8. 高德地图JS API 开发小结

    项目中有一块功能要用到高德地图,所以,想把编码小结一下. 首先是地图的初始化 var map = new AMap.Map("mapDiv", {                  ...

  9. WFE和WFI的区别

    1. 概念: WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture ...

  10. ARM有几条memory barrier 的指令?分别有什么区别?

    从ARMv7指令集开始,ARM提供3条内存屏障指令. (1)数据存储屏障( Data Memory Barrier,DMB) 数据存储器隔离.DMB指令保证:仅当所有在它前面的存储器访问操作都执行完毕 ...