BZOJ 5194--[Usaco2018 Feb]Snow Boots(STL)
5194: [Usaco2018 Feb]Snow Boots
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 81 Solved: 61
[Submit][Status][Discuss]
Description
Input
第一行包含两个空格分隔的整数N和B(1≤N,B≤10^5)。
Output
输出包含N行
Sample Input
0 3 8 5 6 9 0 0
0 5
0 6
6 2
8 1
10 1
5 3
150 7
Sample Output
1
1
0
1
1
1
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=5194
Solution
这种题感觉已经是套路了。。。
反正就是两种思路。。。
1.只走小于D的雪堆需要走的最长的一步。。
2.最长的一步为不超过S的需要走的最大的雪堆。。
这里只写了第1种的。。。第2种应该也能写吧。。
先将所有雪堆从小到大排序,鞋子也要排序。。
对于某一种鞋子的di,求一下需要多大的si。。。就是求一下能走的雪堆的最大间隔。。
每次放入一个新的雪堆只会改变几个间隔大小。。
所以只需要用set维护一下集合内的前驱和后驱,然后用两个优先队列维护一下带删除的集合内最大值。。
然后就做完了。。。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<set>
#define pa pair<LL,LL>
#define LL long long
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void Out(int a){
if(a>9) Out(a/10);
putchar(a%10+'0');
}
const LL inf=1e9+10;
const LL mod=1e9+7;
const int N=1e5+50;
int n,m,cnt=1; struct date{
int v,id;
}f[N];
bool cmpd(date A,date B){
return A.v<B.v;
}
struct xie{
int s,d,id;
}a[N];
bool cmpx(xie A,xie B){
return A.s<B.s;
}
set<int> S;
priority_queue<int> P,Q;
void del(int x){
Q.push(x);
while(Q.empty()==0&&P.empty()==0&&Q.top()==P.top()){
P.pop();Q.pop();
}
}
void add(int x){
P.push(x);
}
int ans[N];
int main(){
n=read();m=read();
if(n==1||n==2){
for(int i=1;i<=m;++i){
putchar('1');puts("");
}
return 0;
}
f[1].v=read();
for(int i=2;i<n;++i){
f[i].v=read();f[i].id=i;
}
f[n].v=read();
f[1]=f[n-1];
n=n-2;
for(int i=1;i<=m;++i){
a[i].s=read();a[i].d=read();a[i].id=i;
}
sort(f+1,f+1+n,cmpd);
sort(a+1,a+1+m,cmpx);
P.push(n+1);
set<int>::iterator L,R;
int l,r;
S.insert(1);S.insert(n+2);
for(int i=1,j=1;j<=m;++j){
while(i<=n&&f[i].v<=a[j].s){
R=S.lower_bound(f[i].id);
L=R;--L;
l=*L;r=*R;
del(r-l);
add(f[i].id-l);
add(r-f[i].id);
S.insert(f[i].id);
++i;
}
if(P.top()<=a[j].d) ans[a[j].id]=1;
else ans[a[j].id]=0;
}
for(int i=1;i<=m;++i) printf("%d\n",ans[i]);
return 0;
}
This passage is made by Iscream-2001.
BZOJ 5194--[Usaco2018 Feb]Snow Boots(STL)的更多相关文章
- BZOJ5194: [Usaco2018 Feb]Snow Boots(排序&set)(可线段树优化)
5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 102 Solved: 79[Subm ...
- 线段树||BZOJ5194: [Usaco2018 Feb]Snow Boots||Luogu P4269 [USACO18FEB]Snow Boots G
题面:P4269 [USACO18FEB]Snow Boots G 题解: 把所有砖和靴子排序,然后依次处理每一双靴子,把深度小于等于它的砖块都扔线段树里,问题就转化成了求线段树已有的砖块中最大的砖块 ...
- [Usaco2018 Feb]Snow Boots
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1-N,第i块地砖上积了fi英尺的雪.在Farmer John的农舍的地窖中,总共有B双靴子,编号为1-B ...
- bzoj5194: [Usaco2018 Feb]Snow Boots
还真是.. 就是 一个被不点名批评的垃圾骗分暴力选手被普及难度的省选信心(??)模拟赛艹爆的题解 的t3嘛... #include<cstdio> #include<iostream ...
- bzoj 5195: [Usaco2018 Feb]Directory Traversal【树形dp】
注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数 第二遍dfs换根即可 #include<iostream> #i ...
- BZOJ5196: [Usaco2018 Feb]Taming the Herd(DP暴力)
5196: [Usaco2018 Feb]Taming the Herd Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 78 Solved: 71[ ...
- [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游
[bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ...
- 2019 GDUT Rating Contest II : Problem G. Snow Boots
题面: G. Snow Boots Input file: standard input Output file: standard output Time limit: 1 second Memory ...
- Bzoj[Usaco2018 Feb]5194 Snow Boots(线段树)
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1… ...
随机推荐
- 常见CSS
.login_top_bg { background-image: url(/pcssc/images/login/login-top-bg.gif); background-repeat: repe ...
- Oracal 学习之用户角色创建分配表空间 给角色分配权限
//创建角色inspur 密码为inspur,默认的表空间为USERS create user inspur identified by inspur default tablespace USERS ...
- 初识jvm堆,栈参数
堆的分配参数: -Xmx //设立最大堆 -Xms //最小堆,初始化堆大小 -Xmn //设置新生代(eden+2*surviivor+old)大小 官方推荐:3/8Xmx------> ...
- curl命令整理
##curl命令 curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件. #####1. 下载单个文件,默认将输出打印到标准输出中(STDOUT)中``` c ...
- vue.js实现购物车功能
购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...
- Python中逗号的妙用
闲着没事打算用Python刷一遍pat,输出过程中遇到了一个这样的问题: 题目1002题目要求 在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格, 但是P ...
- Mysql 数据库修改datadir和调整默认引擎要注意的问题
数据库更改 datadir 默认位置: 首先前面的基础操作我就不多说了,无非是复制mysqldata目录,然后修改 my.conf 配置文件 datadir 的 路径地址.然后重启mysql.这里可能 ...
- Amaze UI 云适配
Amaze UI 云适配 陈本峰 一中,中科大 香港科大
- OEM-ODM-OBM
Original Equipment ManufacturerOriginal Design ManufacturerOwn Branding & Manufacturing OEM,即“原始 ...
- 连接oracle数据库报错:TNS-12516 TNS:listener could not find available handler with matching protocol stack解决方法
导致此问题的可能原因为:数据库的当前会话说不满足造成的. 解决方法如下: (1)连接数据库: [localhost@oracle]$:sqlplus /nolog sql>conn / as ...