cogs 181. [USACO Jan07] 最高的牛
181. [USACO Jan07] 最高的牛
★★ 输入文件:tallest.in
输出文件:tallest.out
简单对比
时间限制:1 s 内存限制:32 MB
FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000) of the tallest cow along with the index I of that cow.
FJ has made a list of R (0 ≤ R ≤ 10,000) lines of the form "cow 17 sees cow 34". This means that cow 34 is at least as tall as cow 17, and that every cow between 17 and 34 has a height that is strictly smaller than that of cow 17.
For each cow from 1..N, determine its maximum possible height, such that all of the information given is still correct. It is guaranteed that it is possible to satisfy all the constraints.
为了方便我们把FJ养的N头(1 ≤ N ≤ 10,000)奶牛从1号开始编号,一直编到N号,并且让他们站成一列。每头牛都有一个正整数用来描述她的身高(有些牛不愿意说,她们的身高保密)。你只知道这些牛中最高的那一头的身高是H,她的编号是第I号。
FJ写了一张单子,上面有R个陈述句,大概是”第17号牛可以看见第34号牛”这种。这意味着第34号牛最起码和第17号牛一样高。而且17号牛和34号牛之间的牛得身高都严格的小于min(H[17],H[34])。
从第1号牛到第N号牛,求她们可能拥有的最大身高,所给出的所有信息都是正确的。这可以保证满足所有条件。
Input
- Line 1: Four space-separated integers: N, I, H and R
- Lines 2..R + 1: Two distinct space-separated integers A and B (1 ≤ A, B ≤ N), indicating that cow A can see cow B.
输入:
第1行:四个由空格分开的整数,N,I,H和R。
第2..R+1行:两个由空格分开的整数A和B(1 ≤ A, B ≤ N),表示第A号牛可以看到第B号牛。
Output
- Lines 1..N: Line i contains the maximum possible height of cow i.
输出:
第1..N行:第i行包括第i号牛可能拥有的最大身高。
Sample Input
9 3 5 5
1 3
5 3
4 3
3 7
9 8
Sample Output
5
4
5
3
4
4
5
5
5
Input Details
There are 9 cows, and the 3rd is the tallest with height 5.
输入细节:
由9头奶牛,第三头奶牛最高,身高是5.
- 译byKZFFFFFFFF
思路:线段树。
#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 10000
using namespace std;
map<int,int>ma[MAXN];
struct nond{
int l,r,flag;
}tree[MAXN*];
long long n,I,H,R;
void build(int now,int l,int r){
tree[now].l=l;tree[now].flag=;
tree[now].r=r;
if(tree[now].l==tree[now].r)
return ;
long long mid=(tree[now].l+tree[now].r)/;
build(now*,l,mid);
build(now*+,mid+,r);
}
void down(int now){
tree[now*].flag+=tree[now].flag;
tree[now*+].flag+=tree[now].flag;
tree[now].flag=;
}
void change(int now,int l,int r){
if(tree[now].l==l&&tree[now].r==r){
tree[now].flag+=;
return ;
}
if(tree[now].flag) down(now);
int mid=(tree[now].l+tree[now].r)/;
if(r<=mid) change(now*,l,r);
else if(l>mid) change(now*+,l,r);
else{
change(now*,l,mid);
change(now*+,mid+,r);
}
}
int query(int now,int x){
if(tree[now].l==tree[now].r)
return tree[now].flag;
if(tree[now].flag) down(now);
int mid=(tree[now].l+tree[now].r)/;
if(x<=mid) return query(now*,x);
else if(x>mid) return query(now*+,x);
}
int main(){
//freopen("tallest.in","r",stdin);
//freopen("tallest.out","w",stdout);
while(scanf("%lld%lld%lld%lld",&n,&I,&H,&R)!=EOF){
build(,,n);
for(int i=;i<=R;i++){
long long a,b;
scanf("%lld%lld",&a,&b);
if(a>b) swap(a,b);
if(ma[a][b]) continue;
ma[a][b]=;
if(a+==b) continue;
change(,a+,b-);
}
for(long long i=;i<=n;i++)
cout<<H-query(,i)<<endl;
}
}
一直调不对的20分代码
AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<limits.h>
using namespace std;
const int maxn=+;
int LL[maxn],RR[maxn];
long long N,H,R,I;
long long add[maxn<<],ans[maxn];
struct node{
int l,r;
int sum;
}t[maxn<<];
void pushdown(int rs)//向下更新lazy积累的值
{
if(add[rs])
{
add[rs<<]+=add[rs];
add[rs<<|]+=add[rs];
add[rs]=;
}
}
void build(int rs,int l,int r)
{
t[rs].l=l;
t[rs].r=r;
add[rs]=;
if(l==r)
{
t[rs].sum=H;
return ;
}
int mid=(l+r)>>;
build(rs<<,l,mid);
build(rs<<|,mid+,r);
}
void update(int l,int r,int rs)//更新操作
{
if(t[rs].l>=l&&t[rs].r<=r)
{
add[rs]+=;
return ;
}
pushdown(rs);
int mid=(t[rs].l+t[rs].r)>>;
if(l<=mid) update(l,r,rs<<);
if(r>mid) update(l,r,rs<<|);
}
int query(int k,int rs)
{
if(t[rs].l==t[rs].r)
{
return t[rs].sum-=add[rs];
}
pushdown(rs);
int mid=(t[rs].l+t[rs].r)>>;
if(k<=mid) return query(k,rs<<);
else return query(k,rs<<|);
}
int main()
{
freopen("tallest.in","r",stdin);
freopen("tallest.out","w",stdout);
int u,v;
scanf("%I64d%I64d%I64d%I64d",&N,&I,&H,&R);
build(,,N);
int k=;
while(R--)
{
scanf("%d%d",&u,&v);
if(u>v) swap(u,v);
int flag=;
for(int i=;i<k;i++)//判断重边,在poj做题一定要防这东西
{
if(u==LL[i]&&v==RR[i])
{
flag=;
break;
}
}
if(!flag)
continue;
LL[k]=u;RR[k]=v;
k++;
if(v-u==)//相邻的话就不用更新了
continue; update(u+,v-,);//注意是开区间的值更新
}
for(int i=;i<=N;i++)
ans[i]=query(i,);
for(int i=;i<=N;i++)
printf("%I64d\n",ans[i]);
return ;
}
cogs 181. [USACO Jan07] 最高的牛的更多相关文章
- cogs 182. [USACO Jan07] 均衡队形 线段树
182. [USACO Jan07] 均衡队形 ★★☆ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约 ...
- COGS 182. [USACO Jan07] 均衡队形
★★ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛 ...
- COGS 163 [USACO Mat07] 牛语
COGS 163 [USACO Mat07] 牛语 输入文件:latin.in 输出文件:latin.out 简单对比 时间限制:1 s 内存限制:128 MB 奶牛们听说猪发明了一种秘密 ...
- COGS182 [USACO Jan07] 均衡队形[RMQ]
182. [USACO Jan07] 均衡队形 ★★ 输入文件:lineup.in 输出文件:lineup.out 简单对比时间限制:4 s 内存限制:128 MB 题目描述 农夫约翰 ...
- RMQ——[USACO Jan07] 均衡队形题解
题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
- 177. [USACO Jan07] 有限制的素数
177. [USACO Jan07] ★ 输入文件:qprime.in 输出文件:qprime.out 简单对比 时间限制:1 s 内存限制:128 MB Farmer John 开始 ...
- Cogs 1435. [USACO NOV]金发姑娘和N头牛
1435. [USACO NOV]金发姑娘和N头牛 ★★☆ 输入文件:milktemp.in 输出文件:milktemp.out 简单对比时间限制:1 s 内存限制:256 MB [题 ...
- COGS 133. [USACO Mar08] 牛跑步
★★★ 输入文件:cowjog.in 输出文件:cowjog.out 简单对比时间限制:1 s 内存限制:128 MB Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她 ...
- Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★ 输入文件:butter.in 输出文件 ...
随机推荐
- 1.什么是Cython
Cython是一种编程语言,它使Python语言的C扩展像Python本身一样简单.它旨在成为Python语言的超集,为其提供高级,面向对象,功能和动态编程.它的主要功能是支持可选的静态类型声明作为语 ...
- POJ 1185 炮兵阵地 (状压dp)(棋盘dp)
这题和poj 3254很像,但是更复杂了一些 都属于棋盘里放东西,然后又各种各样的限制,然后求方案或者最大值 (1)上一道题距离要大于1,这道题是大于2.所以判断的时候变成 !(x & (x ...
- CSDN开博一周年--总结、感想和未来规划
2012年9月22日,我在CSDN发表了第1篇博文-为了忘却的纪念,我的天龙游戏生涯.本文讲述了我大学期间玩网络游戏-天龙八部的故事. 在大学期间,实际上我也有自己的帐号-huoyingfans,主要 ...
- [环境搭建] VS-Visual Studio-IIS Express 支持局域网訪问
原创作品,转载请注明出处:http://blog.csdn.net/qiujuer/article/details/40350385 使用Visual Studio开发Web网页的时候有这种情况:想要 ...
- 【JavaEE WEB 开发】Tomcat 具体解释 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817 一. Tomcat 下载安装配置 1. Tomcat 下载 T ...
- 【Oracle学习笔记】
内容主要包括: (1)三种循环及其简化 (2)游标的使用 (3)异常处理 (4)存储过程 (5)存储函数 (6)触发器 (7)其它pl/sql操作 ---------------loop循环定义变量- ...
- AspNet WebApi 中应用fo-dicom抛出异常:No codec registered for tranfer syntax:
背景: 在做一个Dicom Web Service, 当中WADO-RS中须要解析TransferSyntax, 然后就用到了fo-dicom中的DicomFile.ChangeTransferSyn ...
- zzulioj--1712--神秘的数列(水题)
1712: 神密的数列 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 122 Solved: 92 SubmitStatusWeb Board De ...
- 固比固布局 圣杯布局 css实现传统手机app布局
手机app的布局大致上都是头部.内容.底部三部分: 我们需要实现的是头部.底部高度固定:中间内容区域自适应且可以滚动:直接贴代码: css: html,body { width: 100%; heig ...
- [JZOJ NOIP2018模拟10.19]
T1写炸了今天,期望70却落了个20...连链上的都没有写对 T3什么什么线段树分治套AC自动机,表示我完全自闭了,幸好考场上没有杠T3 总体比赛还是比较舒服,暴力分给的蛮足的,不像昨天那样 T1:林 ...