洛谷1607 USACO09FEB 廟會班車

2021-08-03 15:49:42 字數 2236 閱讀 6986

逛逛集市,兌兌獎品,看看節目對農夫約翰來說不算什麼,可是他的奶牛們非常缺乏鍛鍊——如果要逛完一整天的集市,他們一定會筋疲力盡的。所以為了讓奶牛們也能愉快地逛集市,約翰準備讓奶牛們在集市上以車代步。但是,約翰木有錢,他租來的班車只能在集市上沿直線跑一次,而且只能停靠n(1 ≤n≤20000)個地點(所有地點都以1到n之間的乙個數字來表示)。現在奶牛們分成k(1≤k≤50000)個小組,第i 組有mi(1 ≤mi≤n)頭奶牛,他們希望從si跑到ti(1 ≤si

【輸入】

第一行:包括三個整數:k,n和c,彼此用空格隔開。

第二行到k+1行:在第i+1行,將會告訴你第i組奶牛的資訊:si,ei和mi,彼

此用空格隔開。

【輸出】

第一行:可以坐班車的奶牛的最大頭數。

輸入樣例#1:

8 15 3

1 5 2

13 14 1

5 8 3

8 14 2

14 15 1

9 12 1

12 15 2

4 6 1

輸出樣例#1:這道題很明顯的一道貪心題目。

首先對每一組奶牛進行排序

類似於線段覆蓋之類的題目

很顯然

終點越靠前的組的優先順序越高

因此,排完序之後,直接貪心求解即可。

但是,,,,洛谷的資料略水。。。。

對於任意一組,當前能夠放多少就放多少

而能夠放的最大數量,就是它所在的區間的最小值。

而要時時維護區間最小值顯然要使用o(logn)的資料結構(看一看題目資料範圍)

但是。。。在洛谷上面直接使用o(n)的暴力既可以ac

資料真的水。。。

但是我還是把線段樹的ac**放在底下

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max 1000100

struct tree

t[max*4];

struct group

g[max];

bool

operator

<(group a,group b)

; if(l==r)

int mid=(l+r)>>1;

build(k*2,l,mid);

build(k*2+1,mid+1,r);

t[k].num=min(t[k*2].num,t[k*2+1].num);

}void down(int k)

t[k].num+=t[k].lazy;

t[k*2].lazy+=t[k].lazy;

t[k*2+1].lazy+=t[k].lazy;

t[k].lazy=0;

}void update(int k,int l,int r,int w)

int mid=(t[k].l+t[k].r)>>1;

if(l<=mid&&r>mid)

else

if(l>mid)

update(k*2+1,l,r,w);

else

if(r<=mid)

update(k*2,l,r,w);

down(k*2);

down(k*2+1);

t[k].num=min(t[k*2].num,t[k*2+1].num);

}int query(int k,int l,int r)

else

if(l>mid)

re=query(k*2+1,l,r);

else

if(r<=mid)

re=query(k*2,l,r);

down(k*2);

down(k*2+1);

t[k].num=min(t[k*2].num,t[k*2+1].num);

return re;

}inline

int read()

return x*t;

}int main()

; sort(&g[1],&g[k+1]);

build(1,1,n);

int ans=0;

for(int i=1;i<=k;++i)

cout

0;}

洛谷 P1339 USACO09OCT 熱浪

有乙個 n 個點 m 條邊的無向圖,請求出從 s 到 t 的最短路長度 簡單的無向圖最短路問題,採用堆優化的dijkstra dijkstra 初始到所有點的距離標記為很大很大,兩個集合 已發現和未發現。將起點距離標記為0。之後,每次從未發現的節點集合中挑選距離起點最近的 單源最短路 放入已發現的節...

洛谷 P1605 迷宮 USACO

1.problem description 迷宮 問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸...

洛谷 P2894 USACO08FEB 酒店

題目描述 用線段樹維護三個值 區間最長空位長度,從左端點可以延伸的最長空位長度,從右端點可以延伸的最長空位長度。include include using namespace std const int n 2e6 7 int n,m intlen n max n maxl n maxr n laz...