2017 8 12 考試吐槽

2022-03-27 02:51:20 字數 2872 閱讀 6222

我只能說一句話:這才是$noip$難度吧……(神$tm$聯賽考$fft$)

題意:$n$根板子長度是$1~n$全排列,找出一種方法,使得板子組成的容器容量恰好為定值。

眼瞪十分鐘$+$$coding$ $15$分鐘 $+$ $debug$ $5$分鐘 $=$ $ac$。

首先我們可以知道,整個容器容量最大的情況就是兩根最長的板子夾在兩邊,中間全是相對較短的板子,這樣獲得的最大的容量就是\[\frac\]。那麼我們就可以知道大於這個的一定不合法。

確定合法之後,我們就可以愉快的貪心了,不斷選取當前可抽出的板子中最短的放在左側並按照遞增順序擺放,避免出現額外容量。合格後直接兩個長板放在兩邊,中間沒放過的隨意放即可。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=(int)1e6+5;7

int ord[maxn],n;long

longx;8

bool

used[maxn];

9int

haha()

1018

int cur=1,cn=1,nn=1;19

while(res>x)

2029

else

30for(;nn1;nn++)

3138}39

}40 ord[cur]=n;ord[n]=n-1;cur++;

41 used[n]=used[n-1]=1;42

int now=1;43

while(cur

44for(;now<=n;now++)

45if(!used[now])

4650

for(int i=1;i<=n;i++)printf("

%d "

,ord[i]);51}

52int sb=haha();

53int main()

a題意:求出所有長度為$k$子串行的最大元素之和。

撕烤了十五分鐘認為不太可能是第二個思博題,但是又想不到風險係數更低的想法,於是敲了上去。事實證明,正解就是這個……

我們可以發現乙個子串行的貢獻只與最大元素有關。那麼我們就可以只觀察最大元素的變化。我們先對序列從小到大排序,對於排序後的序列,從第$k$個開始都是可能的。對於第$i$個元素可以發現它成為最大元素的情況有 $\binom$種。

直接計算組合數肯定會超時,那麼我們考慮前後項之間關係。我們可以看到,前項與後項關係是 $\binom=\binom*(i-1)/(i-k)$。那麼我們遞推計算即可。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=100005,mod=(int)1e9+7;7

long

long c=1,ans=0;8

intn,k,a[maxn];

9long

long qpow(int val,int

tim)

1016

inthaha()

1727 printf("

%lld\n

",ans);28}

29int sb=haha();

30int main()

b題意:給出一棵二叉樹,問最少修改幾次可以轉化為$bst$。$bst$特點是,左兒子元素$

這道題考試時候坑壞我了……剛開始以為這個題是個樹歸,但是考慮了很久並沒有發現什麼樹形關係……後來在紙上畫了畫,發現這個東西其實是個什麼呢……就像下面這個圖:

噹噹噹噹!就是這個!我意識到$bst$中序遍歷之後就可以變成乙個序列,這個序列之中最長上公升子串行的長度就是不需要修改的長度。於是我就這麼敲了一發。

但是交卷後我出了一組資料,發現不太對:

就是這張圖。如果說單純求最長上公升子串行長度是$3$,但是這個序列是$2、3、5$,顯然中間存在問題,因為$2$、$3$之間存在乙個數,這兩個數不可能作為最優情況連續出現,正確情況是修改$3$次。但是已經交卷了,再加之腦子很亂,並沒有想出怎麼解決。

直到看見題解,我的腦子真的是炸裂……每一項中序遍歷之後都減去這個數所在位置,問題轉化為求出新序列的最長不下降子串行……說不太明白,還是直接**送上吧……

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=100005;7

int son[maxn][2

],ord[maxn],cnt,n,a[maxn];

8long

long

g[maxn];

9void middle(int

root)

1015

inthaha()

1625 middle(1

);26

for(int i=1;i<=n;i++)g[i]=2147483648ll;

27int ans=0;28

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

2934 printf("

%d\n

",n-ans);35}

36int sb=haha();

37int main()

c

2017 8 9 考試吐槽

感覺現在自己最弱的地方不是在於思維活性上,而是在於那些本不應該出現在我身上的問題,比如說什麼看出正解打不出來啦 打出正解莫名其妙被卡分啦 莫名其妙少些什麼導致爆零啦 讀不懂題啦 讀不懂題啦 讀不懂題啦 反正問題太多了 題意 求出所有順序對的貢獻,定義順序對貢獻為這兩個數之間比前者大比後者小數的個數。...

2017 7 30 考試吐槽

一句話 原來oi是個文科競賽 吐槽 尼瑪啊 我為什麼要曠了heoi2017 day1講評 題解 就是那個畢老師的 相逢是問候 思路啊 觀察數列可以意識到這個數列的指數是 fibonacci 數列,因此乙個矩陣快速冪日翻 然而它的增長速度過快,需要減小冪次。這時我們請出完美錯過的尤拉定理,降次之後再套...

吐槽大會4 《吐槽大會4》是《吐槽大會》的終點嗎?

1月18日,吐槽大會4 最新一期如約開播。導演徐崢作為 主咖 帶著自己即將於大年初一上映的電影 囧媽 參加節目。節目播出之後,徐崢吐槽郭京飛 李誕讚吐槽大會沒有下一季 李庚希跟徐崢要易烊千璽演唱會門票 等話題接連登上微博熱搜榜,而在這之中最為觀眾注意的則是思文不僅喊話 囧系列 不要繼續了,同時也調侃...