刷usaco水題的一些啟示

2022-05-20 04:10:12 字數 1828 閱讀 3497

就是斷斷續續刷了一些銀組的題,雖說真的有點水,因為這些題大多是簡單轉化一下模型就可以了,但還是有一些啟示吧

bzoj1618

完全揹包的方程要理解好

1 #include2 #include3 #include4

using

namespace

std;

5const

int maxh=50005;6

const

int maxn=105;7

const

int inf=3e8;

8int

weight[maxn];

9int

cost[maxn];

10int

n,h;

11int f[maxh+5000

];12

intmain()//

理解清楚方程...一次加一件直到無法取為止

22int ans=inf;

23for (int i=h;i<=h+5000;i++)

24 ans=min(ans,f[i]);

25 printf("

%d\n

",ans);

26return0;

27 }

完全揹包

bzoj1623

要簡單分析一下奶牛車速大小與順序前後的關係

重點在於看出把速度較小的奶牛放在前面會使答案盡可能大,貪心地排個序即可

bzoj1619

有時候會因為簡化了不同程度上問題的樣例而忽略了某些需要在**中注意的點

灌水要從最高點開始

bzoj1635

這題有點意思。顯然我們可以用維護差分序列的思想去做這道題。一開始沒細想直接wa了兩發,實際上有很多細節還是值得體味的

1.可以知道區間是不會重合的,頂多端點重合

2.知道第1條的作用就是,我們可以拋掉h[b]>=h[a]這個條件,因為一開始del[a]=del[b]=0,而區間又是不重合的

3.需要判重!!因為區間雖然不能重合但是它可以重複啊!!

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=10200;7

const

int maxh=1000100;8

struct

lnum[maxn];

11int del[maxn];//

差分序列

12int

n,m,h,i,a,b;

13bool

cmp(l a,l b)

16int

main()

22 sort(num+1,num+1+m,cmp);

23for (int i=1;i<=m;i++)

24if (i==1||num[i].l!=num[i-1].l||num[i].r!=num[i-1

].r)

27for (int i=1;i<=n;i++)

28 del[i]=del[i-1]+del[i];

29int t=h-del[i];

30for (int i=1;i<=n;i++)

31 printf("

%d\n

",del[i]+t);

32return0;

33 }

view code

一些動規水題

開學以來的乙個半月做了不少動規 水 題,那就寫寫題解吧。1.vijos 1059 積木城堡 一開始看到這是浙江省選題頓時嚇尿。但其實是大水題 主要體現在資料弱 用揹包求出每個城堡能達到的高度,取所有城堡都能達到的最大高度即可。具體一點 用 f i,j,k 表示對於第 i 個城堡,用前 j 個積木能否...

做過的一些水題的總結

在藍橋杯決賽的前一天,我整理了下這個部落格,從一月份左右到現在現在一共是五十四篇,艾瑪我寫居然這麼多了,加上去年暑假開始,也差不多一年了。至今的水平也是非常一般,所以做的都是入門級別的水題。回首一年之前,從台州oj到藍橋杯題庫到zoj到poj,也是一段有趣的歷程很多題目的難度應該屬於 熟練語言 級別...

USACO 完結的一些感想

其實日期沒有那麼近啦 只是我偶爾還點進去造成的,導致我沒有每一章刷完的紀念日了 但是全刷完是今天啦 講真,題很鍛鍊思維能力,usaco保持著一貫獵奇的題目描述,以及盡量不用高階演算法就完成的題解 例如用暴搜加優化代替插頭dp 但是第6章!我就說第6章!為什麼大賽的實踐,幾乎全是暴搜!是為了傳達給我們...