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代码的原则,我们不单单 ...
随机推荐
- Jmeter关联,正则表达式提取器使用
一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如 ...
- 自适应Simpson积分
自适应Simpson积分 作用 如标题所示,这玩意就是当你不会微积分的时候来求积分的. 总所周知,积分的定义就是函数的某一段与坐标轴之间的面积. 那么,自适应Simpson积分就是一种可以再某些精度下 ...
- Windows开发笔记-错误处理
Windows函数为开发者提供了错误代码,这样当调用Windows函数失败后,可以通过查看错误代码了解错误信息.相应的错误与主调线程关联在一起,这种机制使得不同的线程能够独立运行而不会相互干扰.调用G ...
- Linux 磁盘分区修改与管理
--Linux 磁盘分区修改与管理 -----------------------------2014/03/05 1. 目的,将磁盘卷/dev/cciss/c0d0p8修改成新的用途. 原: /de ...
- Android App 压力测试 monkeyrunner
Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试?第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. ADB ...
- DVWA笔记之二:Command Injection
命令注入 1.Low级别 <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUE ...
- Python 写网络爬虫思路分析
首先从程序入口开始分析,在程序入口处传入一个待爬取的网址, 使用下载器Html_downloader类下载该地址的内容,使用解释器 parser分析内容,利用BeautifulSoup包抓取想要爬取的 ...
- Linux学习总结(十)—— Java开发环境搭建:JDK+Maven
Java开发环境最基础的两个开源软件是JDK和Maven. JDK 到Oracle官网下载相对应的源码包,这里我选择的是:Linux x64系统的jdk-8u131-linux-x64.tar.gz. ...
- easyui+ztree 后台管理系统模板
用easyui+ztree做了个后台管理系统模板,效果图: 下载地址: csdn:http://download.csdn.net/detail/jackpay/6744505 github:http ...
- ExpandableListView实现手风琴效果
1. 效果示例图 2. 创建方法 (1)第一种方法与ListView等普通控件一样,直接在布局文件中添加ExpandableListView控件即可. (2)第二种方法则是创建一个Activity继承 ...