中山DAy2 普及

2022-07-23 04:48:09 字數 2853 閱讀 9959

今天挺不友好的,早上忘記定鬧鐘,晚了半小時起床,然後早上信心滿滿打算弄他個300分。結果……132.2分·。wtf???

題意:有n頭奶牛,k種細菌(k<=15),給你每頭奶牛攜帶的細菌種類,問:若讓選出所有奶牛攜帶細菌少於d種,最多選幾頭奶牛?

思路:上手就用了動歸,可能是昨天打積木那題,自己信心爆棚。然後……神奇的22.2分出爐啦!  之後,我痛定思痛,發現動歸真的是偽得快。

正解:反正k小,把可能情況列舉一下,最多也沒幾種。不就是$c_k^d$種嗎?然後比較打擂台就可以了。

見**:

#include#include

#include

#include

using

namespace

std;

int n,ans,d,k,inf=-0x3f3f3f,flag[16],use[16

]; bool a[1001][16

];void dfs(int

x) }

}if(ans>inf)

inf=ans;

ans=n;

}else

dfs(x+1

);

flag[i]=0

; use[x]=0

; }

}}int

main()

}dfs(1);

printf("%d

",inf);

return0;

}

要開乙個陣列,依次向後走,去記錄,萬萬不能從1到k來回搞,不然就不是$c_d^k$而是c!了。

題意:有乙個序列,你可以選擇其中任意個數組成乙個子串行,其中有個彈跳值,彈跳值為子串行奇數項的和乘上偶數項的和,問:彈跳值最大為多少?

思路:熟悉的操作,熟悉的味道——動歸!一開始在考場上,把奇偶混在一起,沒有分開奇數項和偶數項,只有10分。

正解:奇偶分開是什麼意思呢?很簡單。就是設乙個二維陣列:a[n][2],其中第二維為1表示此項做奇數項是的情況,第二維為0表示此項是偶數項的情況。

轉移方程:a[n][1]=max(a[n-1][0]+a[n][1],a[n-1][1])這個意思就是:如果不選此項就是前乙個奇數項,然後依次向後轉移。若選此項就是前一項為偶數項那就加上。

同理:a[n][0]=max(a[n-1][1]-a[n][0],a[n-1][0])。

見**:

#include#include

#include

#include

using

namespace

std;

int n,max1=-0x3f3f3f,max2=-0x3f3f3f,inf=-0x3f3f3f

;int a[150001][2

];int

main()

for(int i=2;i<=n;i++)

a[i][

0]=max1-a[i][1

]; a[i][

1]+=max2;

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

printf("%d

",inf);

return0;

}

題意:有乙個被水淹沒小鎮,給你小鎮每塊地的高度,每塊地上的水可以流到上、下、左、右當中不高於它高度的格仔裡,可以在任何格仔裡安裝一台水幫浦,水幫浦可以抽走無限量的水。問:最少需要安裝幾台水幫浦可以抽走所有的水?

正解:寬搜。先找到最低的格仔,然後向高處拓展標記,如果沒有抽完就找第二小的格仔繼續搜,以此類推。用乙個變數記錄一下次數即可。

見**:

#include#include

#include

using

namespace

std;

int n,m,k,head,ans,tail=1

;int h1[2501],l1[2501],p[5]=,y[5]=;

char a[51][51

];bool flag[51][51

];void bfs(int h,int

l) }

}}int

main()

while(1

)

}if(flag2==false

)

break

; bfs(minh,minl);

ans++;

}printf(

"%d\n

",ans);

}return0;

}

最大生成樹模板題:沒啥好講的,博主也不會講,上網搜唄。

見**:

#include#include

#include

#include

using

namespace

std;

int n,m,ans,ans1,fa[20001

],flag;

struct

cow;

cow tree[

20001

];bool

cmp(cow x,cow y)

int find(int

x)void add(int x,int

y)int

main()

sort(tree+1,tree+1+m,cmp);

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

}if(ans1==n-1

)

else

printf("-1

");return0;

}

中山Day5 普及

今天題目真是賊難吶。才38。收穫 樹狀陣列單個修改 樹狀陣列區間修改 題意 有n個數,問 從中取任意個數,他們的和為質數的方案數是多少?n 50 暴力模擬即可,這裡不講。見 include include include include using namespace std int n,ans,s...

中山紀中Day1 普及

早上一起,撲面是瓢潑的大雨。跨過千山萬水,來到紀中門前,毅然以一種大無畏的英雄氣概跨進了考場。面對四道神題。然後,我成功過五關斬六將,a掉了2道題!收穫 優先佇列 大 小根堆 wexley最近發現了乙個古老的螢幕遊戲。遊戲的螢幕被劃分成n列。在螢幕的底端,有乙個寬為m列的籃子 m思路 此題略簡單,設...

暴搜 中山紀念中學暑期遊Day2 佳餚

考的不好,但是評講過後發現 都!好!水!啊!還是那句自己的老話 佳餚就是非常美味的菜的意思,佳餚最關鍵的是選擇好原料。現在有n種原料,每種原料都有酸度s和苦度b兩個屬性,當選擇多種原料時,總酸度為每種原料的酸度之積,總苦度為每種原料的苦度之和。正如大家所知,佳餚是既不酸也不苦的,因為要保證所選的原料...