题目

一道神奇的题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. git常用命令以及如何与fork别人的仓库保持同步

    简单常用命令1.git status查看当前仓库是否有文件改动a:提示Your branch is up-to-date with 'origin/master'.nothing to commit, ...

  2. 微信服务器配置令牌(Token)

    实现步骤: 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL).Token和EncodingAESKey,其中UR ...

  3. json&pickle数据序列化模块

    用于序列化的模块 json,通用的序列化方式,序列化成为str类型,支持所有语言识别,序列化的数据具有局限性. pickle,python的所有数据类型都可以被序列化,序列化为bites格式,只适用于 ...

  4. Salesforce的基础用户界面定制

    Salesforce的用户界面 Salesforce的用户界面易于定制.本文将讲述如何定制: 主菜单和选项卡 自定义按钮和链接 视图列表 页面布局 定制主菜单和选项卡 Salesforce的主菜单默认 ...

  5. Installing Language Tool in TexStudio

    This is a recent and more detailed solution for Windows users. Make sure the last version of TeXstud ...

  6. 微软 WPC 2014 合作伙伴keynote

    本周一,2014 微软WPC (Worldwide Partner Conference) 合作者伙伴大会在美国华盛顿开幕,微软除了介绍了Azure.云端化的Office 365和Windows Ph ...

  7. loadrunner 场景设计-添加Windows Resources计数器

    场景设计-添加Windows Resources计数器 by:授客 QQ:1033553122 目的 监控要测试的windows服务器的资源使用情况 步骤 1.添加视图,方法双击.拖动左侧的Windo ...

  8. Kotlin入门(14)继承的那些事儿

    上一篇文章介绍了类对成员的声明方式与使用过程,从而初步了解了类的成员及其运用.不过早在<Kotlin入门(12)类的概貌与构造>中,提到MainActivity继承自AppCompatAc ...

  9. [20171220]toad plsql显示整形的bug.txt

    [20171220]toad plsql显示整形的bug.txt --//下午有itpub网友反应,一个查询在sqlplus,pl/sql下不同.链接如下:--//http://www.itpub.n ...

  10. Linux常用命令大全(新手入门)

    系统信息:  arch 显示机器的处理器架构(1)  uname -m 显示机器的处理器架构(2)  uname -r 显示正在使用的内核版本  dmidecode -q 显示硬件系统部件 - (SM ...