P3114 [USACO15JAN]踩踏Stampede
我一开始看错题了,看成每秒走\(c_i\)个单位了,于是样例答案就变成了3。。害我调好久,还以为样例错了
对于每头奶牛,我们求出它经过\(y\)轴的时间段,然后离散化一下,将奶牛按照从低到高的顺序排序,区间上记录最新经过的奶牛,如果当前奶牛的区间都已经被覆盖过了,那么说明完全被遮挡,反之则可以被看到,这样的话由于已经排过序了,可以很容易看出这是正确的,用线段树实现即可
线段树我是这么实现的,初始值为无限大,\(update\)时直接覆盖修改的区间,这样查询区间最大值,只要不是无限大,就说明完全被遮挡
下面放代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cctype>
#define ll long long
#define gc getchar
#define maxn 50005
using namespace std;
inline ll read(){
ll a=0;int f=0;char p=gc();
while(!isdigit(p)){f|=p=='-';p=gc();}
while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=gc();}
return f?-a:a;
}int n,ans,cnt,x[maxn],c[maxn];ll b[maxn<<1];
struct ahaha{
int h,l,r;
inline bool friend operator<(const ahaha x,const ahaha y){
return x.h<y.h;
}
}q[maxn];
struct ahaha1{
int v,lz;
ahaha1(){
v=1000001;
lz=-1;
}
}t[maxn<<3];
#define lc p<<1
#define rc p<<1|1
inline void pushup(int p){
t[p].v=max(t[lc].v,t[rc].v);
}
inline void pushdown(int p){
int &lz=t[p].lz;
t[lc].v=lz;t[lc].lz=lz;
t[rc].v=lz;t[rc].lz=lz;
lz=-1;
}
void update(int p,int l,int r,int L,int R,int z){
if(l>R||r<L)return;
if(L<=l&&r<=R){t[p].v=z;t[p].lz=z;return;}
int m=l+r>>1;if(~t[p].lz)pushdown(p);
update(lc,l,m,L,R,z);update(rc,m+1,r,L,R,z);
pushup(p);
}
int query(int p,int l,int r,int L,int R){
if(l>R||r<L)return -1;
if(L<=l&&r<=R)return t[p].v;
int m=l+r>>1;if(~t[p].lz)pushdown(p);
return max(query(lc,l,m,L,R),query(rc,m+1,r,L,R));
}
int main(){
n=read();
for(int i=1;i<=n;++i){
x[i]=read();q[i].h=read();c[i]=read();
b[++cnt]=1ll*-x[i]*c[i];
b[++cnt]=1ll*(-x[i]-1)*c[i];
}
sort(b+1,b+cnt+1);cnt=unique(b+1,b+cnt+1)-b-1;
for(int i=1;i<=n;++i){
q[i].l=lower_bound(b+1,b+cnt+1,1ll*(-x[i]-1)*c[i])-b;
q[i].r=lower_bound(b+1,b+cnt+1,1ll*-x[i]*c[i])-b;
}
sort(q+1,q+n+1);
for(int i=1;i<=n;++i){
int v=query(1,1,cnt,q[i].l,q[i].r-1);
if(v==1000001)++ans;
update(1,1,cnt,q[i].l,q[i].r-1,q[i].h);
}
printf("%d\n",ans);
return 0;
}
P3114 [USACO15JAN]踩踏Stampede的更多相关文章
- [USACO15JAN]踩踏Stampede
[USACO15JAN]踩踏Stampede 题目描述 DJ站在原点上向y轴正半轴看,然后有一群奶牛从他眼前飞过.这些奶牛初始都在第二象限,尾巴在(Xi,Yi),头在(Xi+1,Yi),每Ci秒向右走 ...
- words
conscious[英][ˈkɒnʃəs][美][ˈkɑnʃəs]consensus[英][kənˈsensəs][美][kənˈsɛnsəs] scious sensuswaterflood; de ...
- 品牌营销:不要Beat,要逼格!
品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...
- 布里斯班Twilight Bay Run半程马拉松
自从8月3日跑了半马以后,又一鼓作气报了11月份的西昌马拉松.与第一次马拉松的只求完赛目标不同,第二次当然想取得一个更好的成绩.所以8月份练的比较猛,基本上是练2.3天休息一天,周么还要拉个长于21公 ...
- Bzoj3041 水叮当的舞步
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 132 Solved: 75 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物 ...
- DevOps is dirty work - CI drives you crazy
一直很想谈谈Continuous Integration(CI),持续集成. 就在不久前一次朋友聚会上,一个刚刚跳槽到一家创业公司的朋友跟我抱怨说他们没有CI,没有code review,要做点事太累 ...
- 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说
[SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/ ...
- 【4412嵌入式开发板学习笔记】认识uboot
转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令, ...
- UIView.frame的骗局
如果你刚刚开始接触IOS编程, 刚刚接触UIKit, 肯定会被 frame, bounds, center, layer.anchorPoint, layer.position 这些乱七八糟得属性折腾 ...
随机推荐
- mysql删除关联表数据
DELETE og,oiFROM order_goods og, order_info oiWHERE oi.order_id = og.order_id and oi.user_id = 6
- C语言各种数据类型取值范围
速查表: char -128 ~ +127 1Byte -2^7 ~ 2^7-1 unsigned char 0 ~ 255 1Byte 0 ~ 2^8-1 short -32767 ~ + 3276 ...
- 第18章 SysTick—系统定时器
第18章 SysTick—系统定时器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- Python操作Saltstack
1.代码 # -*- coding:utf-8 -*- import urllib.request import urllib.parse import json class saltAPI(): d ...
- Mac 如何显示隐藏文件夹并设置快捷键
通过在终端运行命令可以控制隐藏文件是否显示: 输入defaults write com.apple.finder AppleShowAllFiles NO 就不显示, 输入defaults write ...
- 【实战】verilog中`define的使用记录
背景: 在最近实战开发中发现:对外部芯片进行初始化时,往往需要定义大量参数. 若直接在module中通过localparam或者parameter进行参数定义的话,会带来两个问题: 1.代码长度增加, ...
- WPF 嵌入winform 控件
引入 WindowsFormsIntegration.dll 和 System.Windows.Forms.dll <Window x:Class="wgscd.Window1 ...
- WPF listview Test Message list
UI: <Window x:Class="WoZhuLianyuanTool.SendContentsWind" xmlns="http://schemas.mic ...
- Exp6 20155218 信息搜集与漏洞扫描
Exp6 信息搜集与漏洞扫描 1.DNS IP注册信息的查询 1.进行whois查询时,要去掉www,ftp等前缀,否则可能在whois服务器中查询不到: 2.使用whois查询ip的地理位置: 2. ...
- Exp4 恶意代码分析 20155223
Exp4 恶意代码分析 20155223 使用原生命令schtasks监视系统运行 在系统盘目录下建立脚本文件netstatlog.bat,包含以下命令: date /t >> c:\ne ...