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代码的原则,我们不单单 ...
随机推荐
- HPU--1221 Fibonacci数列
题目描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入 输入包含一个整数n. ...
- 重构tableview!
昨天用字典构筑tableview简直愚蠢!不过蠢过才知道如何写出好的代码.下面将用模型重构tableview! -------------------------------------------- ...
- HDU 1231 最大连续子序列:水dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231 题意: 给你一个整数序列,求连续子序列元素之和最大,并输出该序列的首尾元素(若不唯一,输出首坐标 ...
- python基础笔记(一)
python解释器执行python程序的过程:python3 C:\test.py 1.启动python解释器(内存中) 2.将C:\test.py 内容从硬盘读入内存(这一步与文本编辑器是一样的) ...
- layer弹出层详解
前言:学习layer弹出框,之前项目是用bootstrap模态框,后来改用layer弹出框,在文章的后面,我会分享项目的一些代码(我自己写的). layer至今仍作为layui的代表作,她的受众广泛并 ...
- 【每天一道算法题】Lucky String
A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Gi ...
- 设计模式之桥接模式(Bridge模式)
我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...
- 刚安装Fedora 23工作站后,你必须要做的24件事
[51CTO.com快译]Fedora 23工作站版本已发布,此后我们就一直在密切关注它.我们已经为新来读者介绍了一篇安装指南:<Fedora 23工作站版本安装指南> 还有一篇介绍如何从 ...
- 使用百度云同步盘和Git Extensions进行代码托管
一.软件安装 百度云同步盘和Git Extensions的安装和配置略过. 二.建立Git代码库,以[GHO2VMDK转换工具]项目为例 1. 建立本地代码库 进入[GHO2VMDK转换工具]项目文件 ...
- 新鲜出炉的JSON,拿走不谢!
一.JSON简介 1.JSON全称是JavaScript Object Notation即JavaScript对象标记法. JSON是一种轻量级(Light-Weight).基于文本的(Text-Ba ...