BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )
生活随笔
收集整理的這篇文章主要介紹了
BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
果然寫得短就跑得慢...
直接用set就行了(你要寫棵平衡樹也可以).沒有包含的話, 假如L(i) <= L(j), 那么R[i] <= R[j]. 所以從小到大掃, 每次查找左端點小于當前的第一只牛, 然后判斷右端點就行了.?
-----------------------------------------------------------------
#include<bits/stdc++.h>?
using namespace std;typedef pair<int, int> pii;const int maxn = 100009;??set<pii> S;
int L[maxn], R[maxn], N;int main() {cin >> N;for(int i = 0; i < N; i++) ? ?scanf("%d%d", L + i, R + i);int ans = N;for(int i = 0; i < N; i++) {pii cur = make_pair(-L[i], -R[i]);set<pii>::iterator it = S.upper_bound(cur);if(it != S.end() && -it->second > R[i]) {ans = i;break;} elseS.insert(cur);}cout << ans << "\n";return 0;}-----------------------------------------------------------------?
3375: [Usaco2004 Mar]Paranoid Cows 發瘋的奶牛
Time Limit:?10 Sec??Memory Limit:?128 MBSubmit:?5??Solved:?4
[Submit][Status][Discuss]
Description
????約翰有N(1≤N≤100000)頭奶牛,它們都可以控制自己的產奶量.一頭產奶不多的奶牛會被其它奶牛嘲笑,?約翰制訂一張產奶時間表,第i頭奶牛在Ai_Bi時間段里產奶(0≤Ai<Bi≤10^9).這頭奶牛必須在Ai的時候進入奶棚在Bi的時候離開.奶棚的門很小,同一時刻只能有一頭奶牛通過.?如果第i頭奶牛產奶的時間段包含第j頭奶牛產奶的時間段,即A<Aj<Bj<Bi.那么,我們稱這兩個時間段是“巢段”.??“巢段”是一件很糟糕的事,因為第j頭奶牛在奶棚的時間里第i頭奶牛一直都在.這樣第i頭奶牛就能估計第j頭奶牛的產奶量.由于產奶量被別的奶牛知道了的奶牛會發瘋,所以約翰不希望“巢段”的發生.????幫助約翰確定最大的k(1≤K≤N),在1到K的奶牛中不存在“巢段”.Input
????第1行:奶牛的數量N.????第2到N+1行:每行有兩個用空格隔開的數字,表示這頭奶牛的產奶時間段.Output
????一個整數KSample Input
57 20
1 4
3 12
6 10
0 3
Sample Output
3樣例說明
第4頭奶牛( 6-10)被包含于第3頭奶牛(3-12).另外,1至3頭奶牛不存在“巢段”
HINT
Source
Orange
?
轉載于:https://www.cnblogs.com/JSZX11556/p/4717929.html
總結
以上是生活随笔為你收集整理的BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构知识点 -- 链表(Java实现
- 下一篇: 操作系统_05_调度算法(个人总结)