YYHS-怎样更有力气
题目描述
长者回答:“你啊,Too Young Too Simple,Sometimes Naive!如果你想要我教你,你要先进行艰苦的修行。”
输入
输出
样例输入
2 5
4 8
9 10
样例输出
提示
|
测试点编号
|
n
|
m
|
x
|
|
1
|
n≤10
|
m≤1
|
|
|
2
|
n≤10
|
m≤10
|
|
|
3
|
n≤100
|
m≤100
|
|
|
4
|
n≤1000
|
m≤1000
|
|
|
5
|
n≤10000
|
m≤10000
|
|
|
6
|
n≤100000
|
m≤100000
|
x=0
|
|
7
|
n≤1018
|
||
|
8
|
n≤100000
|
|
|
|
9
|
n≤1018
|
||
|
10
|
题解
这道题首先是二分需要的天数
然后你需要统计出哪些区间没有被涂,然后用自己每天能涂的数量判断天数是否可以
但是自己刚开始被如何统计剩余区间给卡住了,后来才知道可以把记者涂的区间从小到大排序(双关键字),然后就是判断剩余区间了
当一段区间是4 5,后面一段是6 7的时候是没有区间漏涂的,所以判断q[i].l-q[i-1].r>1,但其实这样是不对的,自己就是被这个坑了
比如
3 7
4 5
7 8
如果判断q[i].l-q[i-1].r>1,就会以为6~7这段区间是没有被涂得,但是其实前面3 7已经涂到7了,是没有剩余的,所以就要统计之前的max{q[i].r},判断q[i].l-Max>1
统计完剩余区间后是计算自己涂的次数
这里要多判断一下x=0的情况,还有要考虑到x很大的情况,说不定能够涂到两块区间的情况
最后还要注意读入的n是10的18次,要long long读入
#include<bits/stdc++.h>
#define ll long long
#define M 100005
using namespace std;
ll n,m,k,num,ss;
int l,r,mid;
ll x[M],y[M];
bool Flag;
struct node{ ll x,y; }b[M],a[M],q[M];
bool cmp(node x,node y){
if (x.x!=y.x) return x.x<y.x;
else return x.y<y.y;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&k);
for (int i=;i<=m;i++)
scanf("%lld%lld",&a[i].x,&a[i].y);
l=; r=m;
while (l<=r){
mid=(l+r)>>;
for (int i=;i<=mid;i++) b[i]=a[i];
sort(b+,b++mid,cmp);
int cnt=;
if (b[].x>) q[++cnt].x=,q[cnt].y=b[].x-;
ll Max=b[].y;
for (int i=;i<=mid;i++){
if (b[i].x-Max>) q[++cnt].x=Max+,q[cnt].y=b[i].x-;
if (b[i].y>Max) Max=b[i].y;
}
if (Max<n) q[++cnt].x=Max+,q[cnt].y=n;
bool flag=false;
num=; int p=;
ll last=,s;
if (!k){
if (cnt>) flag=true;
} else
while (p<=cnt){
if (q[p].x<=last&&q[p].y>last) q[p].x=last+; else
if (q[p].y<=last){
p++; continue;
}
s=(q[p].y-q[p].x)/k+;
num=num+s;
if (num>mid){
flag=true; break;
}
last=q[p].x+s*k-;
p++;
}
if (flag) l=mid+; else{
Flag=true;
ss=mid;
r=mid-;
}
}
if (!Flag) puts("Poor Douer!");
else printf("%d\n",ss);
return ;
}
YYHS-怎样更有力气的更多相关文章
- UOJ#61. 【UR #5】怎样更有力气
大力水手问禅师:“大师,很多事情都需要用很大力气才能完成,而我在吃了菠菜之后力气很大,于是就导致我现在非常依赖菠菜.我很讨厌我的现状,有没有办法少吃点菠菜甚至不吃菠菜却仍很有力气?” 禅师浅笑,答:“ ...
- 【NOIP2017练习】怎样更有力气(二分答案,线性扫描)
题意:OI大师抖儿在夺得银牌之后,顺利保送pku.这一天,抖儿问长者:“我虽然已经保送了,但我的志向是为国家健康工作五十年.请问我应该怎样变得更有力气?” 长者回答:“你啊,Too Young T ...
- 【UOJ#61】【UR #5】怎样更有力气(最小生成树)
[UOJ#61][UR #5]怎样更有力气(最小生成树) 题面 UOJ 题解 最最最暴力的想法是把所有边给处理出来然后跑\(MST\). 考虑边权的情况,显然离线考虑,把么一天按照\(w_i\)进行排 ...
- 「UR#5」怎样更有力气
「UR#5」怎样更有力气 解题思路 考虑没有限制的情况,一定是把操作离线下来,按照边权从小到达做.可以发现,如果没有限制,完全图是多余的,直接拿树边进行合并就可以了.我们要做这么一件事情,把每个点属于 ...
- 【UR #5】怎样更有力气
Problem Description 大力水手问禅师:"大师,很多事情都需要用很大力气才能完成,而我在吃了菠菜之后力气很大,于是就导致我现在非常依赖菠菜.我很讨厌我的现状,有没有办法少吃点 ...
- [UOJ61]怎样更有力气
这个题还是挺有意思的... 一个小结论是:在一个$n$点$m$边的图中,如果度数最小的点度数为$d$,那么$d^2=O(m)$,因为$d\leq\frac{2m}n$,所以$d^2\leq dn\le ...
- UOJ61. 【UR #5】怎样更有力气
题目链接 Statement 给定一棵 \(n\) 点树 \(T\) 和 \(m\) 个操作 v u w : 在 \(T\) 中 \(u,v\) 的最短路上所有点里面选出若干对(可以不选,可以重复), ...
- 校际联合Contest
每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...
- 如何编写高质量的 jQuery 代码?
想必大家对于jQuery这个最流行的javascript类库都不陌生,而且只要是前端开发人员肯定或多或少的使用或者接触过,在今天的这篇文章中,我们将介绍一些书写高质量jQuery代码的原则,我们不单单 ...
随机推荐
- absolute 的containing block( 容器块)计算方式跟正常流有什么不同?
无论属于哪种,都要先找到其祖先元素中最近的 position 值不为 static 的元素,然后再判断:1.若此元素为 inline 元素,则 containing block 为能够包含这个元素生成 ...
- 【NO.1】Jmeter-安装JDK- 配置Jmeter运行的环境 - 是使用Jmeter的前提
本篇文档是描述:当我们遇到没有安装JDK的Windows系统的电脑.Linux系统的电脑的时候,该怎么来安装JDK. 如果你不安装JDK,那么就没办法开始使用Jmeter. JDK下载地址 http: ...
- centos 7.2 配置Nginx
1.添加资源 添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令(没有换行): rpm -Uvh http://nginx.org/packages/centos/7/noarch ...
- 利用Arduino快速制作Teensy BadUSB, 攻击计算机
BadUsb介绍 BadUSB是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布. 虽然已隔一两年,但还是有 ...
- 第1天:CSS基本样式
今天学习了CSS基本样式和属性.在做练习的时候遇到一个小问题,最后解决了. 记住:浏览器有默认margin和padding.样式最开始记得一定写:*{margin:0;padding:0}. 学习经验 ...
- ELK搭建指南(linux及Windows)
当前公司系统使用mongodb记录日志,最近想对日志做可视化分析,尝试了exceptionless,感觉扩展性不高,所以尝试搭建elk,过程如下: ELK核心由三部分组成: Elasticsearch ...
- C/C++ 定义与声明详解(转)
转自:http://blog.csdn.net/xiaoyusmile/article/details/5420252 1. 变量的定义.声明 变量的声明有两种情况: 一种是需要建立存储空间的.例如: ...
- Java基础二
1 关键字 定义:被java语言赋予了特殊含义的单词. 特点:关键字中的所有字母都为小写. 用于定义数据类型的关键字 class.interface.byte.short.int.long.float ...
- mysql 常用函数总结
常用处理函数: mysql_connect(server,user,pwd,newlink,clientflag) 连接服务器的函数,成功则返回MySQL标识,失败则返回FALSE mysql_sel ...
- Tkinter 导入安装包
Tkinter (capitalized) refers to versions <3.0. tkinter (all lowecase) refers to versions ≥3.0