1. 程式人生 > >2016.11.12【初中部 NOIP普及組 】模擬賽

2016.11.12【初中部 NOIP普及組 】模擬賽

T1:

小數加法高精度,注意進位

T2:很明顯只需要列舉側面的點數,其餘面不管怎麼擺和都為7

T3:比較有意思。

題目描述:

給定一01串,讓你分出最多段使得每段的0和1的比例相等。

很顯然的一個貪心思路,能分就分,因為當到第i位時,當前擁有的0與1的比例與所有0和1的比例相等,那麼就分段,因為分了之後並不會對接下來的01分段造成影響。

想到這一點之後,還需注意,因為串的長度為10^9,則如果逐個列舉是會超時的,所以只能列舉n(<=10^5)

假設列舉到第i段,0的個數為k0,1的個數為k1,而0的總個數為tot0,1的總個數為tot1,當第i段加的是0的個數時,我們需要判斷1,當加1時,我們需要判斷0。

——因為每次分不可能一定可以分完整,所以當加0的個數時,當前肯定是以0結尾,所以我們判斷——tot1/tot0(需被整除)*tot0就是0被分的個數w,注意,如果前i-1段0的個數就大於w,我們還不能分,直到前i-1段0的個數小於等於w,且加上第i段0的個數後就大於w才分。

為什麼?

很簡單,如果對於前i-1段的0就大於w,則肯定會有餘下的0,那麼如果有餘下的0就不符合題意了。

T4:

很明顯因為求個正方形,我們只需列舉其中的兩點就可以推知其他點了,那麼這樣子的話,時間就很快了。