2018 10 03 NOIP 模擬賽 解題報告

2022-05-14 15:27:29 字數 2632 閱讀 4758

得分:\(30+5+0=35\)(考得真不咋滴)

以為很簡單,對著這題想了乙個多小時,最後果斷打了個暴力交了... ...

看完題解發現其實也不是很難。

對於\(t=1\)的情況,似乎與一道題目很像:【洛谷3396】雜湊衝突,可以用分塊來做。

對於\(t>1\)的情況,似乎與暴力類似,但是要加乙個玄學的優化。

如果有多種顏色,它們的數目分別為\(c_1\sim c_t\),不難想到,給\(k\)染上數目最少的顏色肯定是最優的。

我們用\(min\)表示\(min(c_i)\)。

則第\(k±xd\)個商品被選中的概率應為\(\prod_^x \frac\)。

因此它對答案造成的貢獻應為\(v_\prod_^x \frac\)。

不難發現,這種方法是近似於\(o(n^2)\)的,肯定會\(t\)飛。

但是,我們必須要注意到,在\(t>1\)時,\(min\)肯定是\(≤\frac2\)的,因此這個式子的值是以指數級降低的),在大約\(60\)次操作後對答案就不會造成任何影響了。

所以,我們就可以將操作次數與\(60\)取\(min\),這樣跑起來就十分輕鬆了。

綜上所述,可以對\(t\)進行分類討論,然後就是亂搞。

#include#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define uint unsigned int

#define ll long long

#define ull unsigned long long

#define swap(x,y) (x^=y,y^=x,x^=y)

#define abs(x) ((x)<0?-(x):(x))

#define inf 1e9

#define inc(x,y) ((x+=y)>=mod&&(x-=mod))

#define n 100000

using namespace std;

int n,a[n+5];

class fio

}s2;

int main()

return 0;

}

有一道弱化版的題目:【bzoj1912】[apio2010] patrol 巡邏。

這題的正解似乎是乙個很複雜的樹形\(dp\)

但是,太複雜的動態規劃我寫不來,因此我用的是另外一種做法,雖然照樣要用樹形\(dp\)。

不難想到,如果要從乙個點到達另乙個點,選擇的肯定是樹上最長鏈(即樹的直徑)的兩個端點。

於是,我們只要每次求出樹的直徑,更新答案,然後將這條直徑上所有邊的邊權全部改為原來的相反數即可。

至於為什麼要取相反數,這是因為每條邊必須經過一次,這樣一來如果再選一次這條邊,就會與原先的抵消,避免一條邊被選擇兩次。

有乙個很重要的問題就是如何求樹的直徑

#include#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define uint unsigned int

#define ll long long

#define ull unsigned long long

#define swap(x,y) (x^=y,y^=x,x^=y)

#define abs(x) ((x)<0?-(x):(x))

#define inf 1e9

#define inc(x,y) ((x+=y)>=mod&&(x-=mod))

#define n 2000

#define logn 15

#define add(x,y,z) (e[++ee].nxt=lnk[x],e[lnk[x]=ee].to=y,e[ee].val=z)

#define dis(x,y) (dis[x]+dis[y]-dis[lca(x,y)])

using namespace std;

int n,m,k,ee=0,lnk[n+5];

struct edge

e[2*n+5];

class fio

max1[x]+max2[x]>maxans&&(maxans=max1[x]+max2[x],res=x);

}public:

inline int getans()

}treedp;

int main()

{ register int i,j,x,y,z,t,ans;

while(f.read(n),f.read(m),f.read(k))

{for(i=ee=ans=0;i<=n;++i) lnk[i]=0;

for(i=1;i說實話,一看到多項式行列式我就沒心情做下去了... ...

題解就等以後有時間\(a\)掉了再補吧。也許永遠都沒時間。

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...

NOIP模擬賽 分錢

題目描述 兩個人在街上撿到了一些錢,這些錢共有n張,他們等了很久也沒有等來失主,於是決定把錢平分。但錢可能無法平分。他們先把能夠平分的錢盡量先平分了,使得剩下不能平分的錢盡量少。這些不能平分的錢怎麼辦呢他?他們決定拿去賭場裡面賭一把。他們運氣太好了,那些不能平分的錢變成了雙倍,於是他們就把那個錢分了...