[USACO07JAN]区间统计Tallest Cow

题目描述

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.

给出牛的可能最高身高,然后输入m组数据 a b,代表a,b可以相望,最后求所有牛的可能最高身高输出

输入输出格式

输入格式:

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.

输出格式:

Lines 1..N: Line i contains the maximum possible height of cow i.

输入输出样例

输入样例#1:
复制

9 3 5 5
1 3
5 3
4 3
3 7
9 8

输出样例#1: 复制

5
4
5
3
4
4
5
5
5
 1 //2018年2月14日17:41:54
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <map>
 5 using namespace std;
 6
 7 const int N = 100001;
 8
 9 int n, id, f[N], m;
10 map<pair<int, int>, bool> mp;
11
12 int main(){
13     scanf("%d%d%d%d", &n, &id, &f[1], &m);
14     while(m--){
15         int x, y;
16         scanf("%d%d", &x, &y);
17         if(x > y) swap(x, y);
18         if(x != y){
19             if(mp[pair<int, int>(x, y)] != 1){
20                 mp[pair<int, int>(x, y)] = 1;
21                 f[x+1]--;
22                 f[y]++;
23             }
24         }
25     }
26     for(int i=1, now=0;i<=n;i++)
27         printf("%d\n", now+=f[i]);
28
29     return 0;
30 }


原文地址:https://www.cnblogs.com/sineagle/p/8448610.html

时间: 2024-10-09 18:59:34

[USACO07JAN]区间统计Tallest Cow的相关文章

洛谷P2879 [USACO07JAN]区间统计Tallest Cow

To 洛谷.2879 区间统计 题目描述 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 th

洛谷 P2879 [USACO07JAN]区间统计Tallest Cow 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=2879 题目描述 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 on

洛谷 P2879 [USACO07JAN]区间统计Tallest Cow

传送门 题目大意: n头牛,其中最高身高为h,给出r对关系(x,y) 表示x能看到y,当且仅当y>=x并且x和y中间的牛都比 他们矮的时候,求每头牛的最高身高. 题解:贪心+差分 将每头牛一开始都设为最高高度. 每一对关系(x,y),我们将[x+1,y-1]这个区间的身高变为 min(x,y)-1.这样是不对了.因为要维护[x+1,y-1]这个区间里 各个元素的大小关系,所以要将[x+1,y-1]的元素身高都减1. 一开始我是用线段树做的,后来发现题解用的差分. 没有询问的区间修改,差分做就好了

【P2879】 [USACO07JAN]区间统计Tallest Cow {前缀和,思维}

思路: 先初始化所有牛的身高为0. 对于每一个约束条件(a,b)我们将a+1 ~ b-1的牛的身高全部减一. 朴素的减是TLE的,所以我们维护一个前缀和数组d[]来搞,对于约束条件(a,b)我们将d[a+1]--,将d[b]++. 碎碎念: 这个思路很明白,但是为什么是正确的(尤其是为什么每次减一不会产生矛盾)?我把luogu的题解浏览了一遍也没有看到证明. 所以我就自己证了一下.有两种证明方法: 一是循环不变式(算法导论上有很漂亮的例子),证起来很清晰. 二是反证法:假设有一组约束条件必须减>

[Luogu] 区间统计Tallest Cow

https://www.luogu.org/problemnew/show/P2879 差分 | 线段树 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N = 1e4 + 10; #define gc getchar() struct Node {int l, r;}A[N]; int n, my, Maxh, R; int H[N];

POJ3263 Tallest Cow

Tallest Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2368   Accepted: 1084 Description 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

Tallest Cow(线段树较易)

题目描述 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 tha

Tallest Cow(POJ3263)

Tallest Cow(POJ3263) 给出N头牛的身高,和M对关系(ai与bi可以相互看见.即他们中间的牛都比他们矮).已知最高的牛为第P头,身高为H.求每头牛的身高最大可能是多少.( \(1 \leq N,M \leq 10^4, 1 \leq H \leq 10^6\) ) 输入样例: 9 3 5 5 1 3 5 3 4 3 3 7 9 8 输出样例: 5 4 5 3 4 4 5 5 5 分析: 朴素解法:数组C初始化0 ,ai与bi之间的数减一 最后设C[P] = 0 即Hi = H+

poj 3263 Tallest Cow(线段树)

Language: Default Tallest Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1964   Accepted: 906 Description 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 i