qzezoj 1540 糖果峽谷

2021-10-04 04:32:59 字數 3258 閱讀 1420

題面傳送門

三十分…

於是我只能重新想思路。然後就只得了35

3535

分。考試結束後老師叫我們自己去網上找題解,然而我發現,居然沒有任何一篇luo

gu

luogu

luog

u題解是正解。於是我準備發一篇題解來k

kk掉luo

gu

luogu

luog

u所有題解。

正解:我們先把這個峽谷想象成乙個時間軸,每個時間我們最多能帶c個糖果。

貪心思路:將右端點從小到大排序,驗證這個區間在前面的情況下能不能完成,若能完成,將這一區間內所有點減去當前糖果數。這一定是最優答案。若不能,不去管他。

但這減去又十分費時間,所以我們用線段樹來維護其最小值,因為能帶的糖果數取決與最小值。

但我們發現乙個問題:在糖果消失的時候不能減去時間,所以我們將這個區間變成左閉右開的區間。

這不就很完美的結束了嗎?

**實現:

#include

#include

#define min(a,b) ((a)<(b)?(a):(b))

using

namespace std;

int n,m,k,ans,tot,f[

2000039

],x,y,z,fs[

2003009

],sum[

2000039];

struct yyy a[

2000039

],tmp;

inline

void

read

(int

&x)inline

bool

cmp(yyy a,yyy b)

inline

void

jianshu

(int l,

int r,

int now)

register

int m=

(l+r)

>>1;

jianshu

(l,m,now<<1)

;jianshu

(m+1

,r,now<<1|

1); sum[now]

=k;}

inline

void

push

(int l,

int r,

int now)

inline

void

get(

int l,

int r,

int now)

register

int m=

(l+r)

>>1;

push

(l,r,now);if

(x<=m)

get(l,m,now<<1)

;if(y>m)

get(m+

1,r,now<<1|

1); sum[now]

=min

(sum[now<<1]

,sum[now<<1|

1]);

}inline

intfind

(int l,

int r,

int now)

intmain()

printf

("%d"

,tot)

;return0;

}

但是線段樹常數很大,於是要卡常。

我把s or

tsort

sort

手寫,加暫存器…終於卡過了時限:984ms

984ms

984ms!

**實現:

#include

#pragma gcc optimize(2)

#pragma gcc optimize("inline")

using

namespace std;

int n,m,k,ans,tot,f[

2000039

],x,y,z,fs[

2003009

],sum[

2000039];

struct yyy

} a[

2000039];

inline

void

read

(register

int&x)

inline

void

push

(register

int l,

register

int r,

register

int now)

inline

void

get(

register

int l,

register

int r,

register

int now)

register

int m=

(l+r)

>>1;

push

(l,r,now);if

(x<=m)

get(l,m,now<<1)

;if(y>m)

get(m+

1,r,now<<1|

1); sum[now]

=sum[now<<1]

1]?sum[now<<1]

:sum[now<<1|

1];}

inline

intfind

(register

int l,

register

int r,

register

int now)

inline

void

sort

(register

int l,

register

int r)

}while

(i<=j);if

(lsort

(l,j);if

(isort

(i,r);}

intmain()

printf

("%d"

,tot)

;return0;

}

然而正解是zkw

zkwzk

w線段樹?

算了,去看rsj

rsjrs

j大佬的zkw

zkwzk

w線段樹吧

(154)光照通道

光照通道 lighting channels 使動態光源僅在其光照通道發生重疊時才對物體產生影響。它主要用於動畫,使使用者能更自如地掌握actor的照亮。當前虛幻引擎支援最多 3 種光照通道。定向光源 聚光源 點光源和可被光源影響的所有 actor 靜態網格體 骨架網格體等 均預設啟用lightin...

qzezoj 1568 反覆求和

題面傳送門 這道題首先要有乙個思維的轉換 對於選擇滿足0 i n0 leq i n 0 i n 的任意下標i ii 並讓a aa陣列裡下標為i ii處的值變為sum sumsu m。把賦值的思維轉化成選擇乙個下標,把除了這個下標的所有值加到它身上 這道題正著想很難想,俗話說得好,正難則反,所以我們不...

qzezoj 1543 最快路線

題面傳送門 看到這道題,想到spf aspfa spfa 但這道題好像故意的,偏偏又路牌被拆的道路 在衢州的話負責那一段路的交警就該 了 所以我們不能只以d id i di 為tim etime time 的唯一標準。想象一下 如果下一條路是沒有路牌的,而這時過來一條路,tim etime time...