20170915NOIP練習賽(滑稽)

2022-08-16 15:03:09 字數 3001 閱讀 9105

t1:遊戲(game)

【問題描述】

小r和小

h在玩某個雙人聯機小遊戲,一開始兩人所操控的角色各有

1點力量值,而在遊戲中,每通過一關都會掉落一些力量強化道具。奇怪的是,明明是雙人小遊戲,每關卻都會掉落

3個相同的力量強化道具,於是兩人決定每關每人先拿乙個,剩下乙個猜拳決定給誰。乙個力量強化道具能使乙個角色的力量值變為原來的若干整數倍,同一關卡掉落的道具倍率都相同,而不同的關卡可能不同。小

r從攻略上找到了一些會產生特殊效果的力量值組合,他想知道哪些組合是按他們的道具分配方式有可能在通過某關時達成的。

【輸入格式】

第一行乙個正整數n,表示力量值組合的個數。

接下來n行,每行兩個非負整數

ai,bi

,表示乙個力量值組合。

【輸出格式】

輸出共n行,每行乙個」yes」或」no」表示是否能夠達成。

【樣例輸入】

2 41 8

【樣例輸出】

yesno

【資料範圍】

本題共10個測試點,其中第

x個測試點滿足

n<=

,ai,bi<=。

solution:

注意輸出不要輸錯了。

#include#include

intmain()

if(!a||!b)

c=int(pow(1ll*a*b,1./3)+0.5

); puts(1ll*c*c*c==1ll*a*b&&a%c==0&&b%c==0?"

yes":"no"

); }

fclose(stdin);fclose(stdout);

return0;

}

t2:數字(number)

【問題描述】

小r被某人要求做乙個報告,報告中要用到一些資料,可惜小

r沒有,只好自己瞎編乙個,於是他隨便滾了下鍵盤,出來乙個奇怪的數字。因為明眼人都看的出這個數字是亂打的,所以小

r打算強化一下這個數字的可信度,首先他把這一大長串數字分成了

n個,然後他決定選出其中

k個,把它們乘起來得到最後的數字。眾所周知,乙個數字末尾的

0越多越高大上,所以小

r想要最大化得到的數字末尾

0的數量。按照套路,請你解決一下。

【輸入格式】

第一行兩個正整數n和k。

接下來n行,每行乙個非負整數

ai,表示給出的數字。

【輸出格式】

輸出乙個整數,表示答案。

【樣例輸入】

3 2【樣例輸出】

【資料範圍】

對於20%的資料,

n<=15

,ai<=10

;對於30%的資料,

n<=25

;對於50%的資料,

n<=50

,ai<=100

;對於70%的資料,

n<=100

,ai<=;

對於100%的資料,

n<=200

,ai<=。

#include#include

#include

using

namespace

std;

#define mn 200

#define k 25

int f[mn+5][mn*k+5

];inline

void rw(int&a,int b)

intmain()

for(s2=0;x%2==0;++s2)x/=2

;

for(s5=0;x%5==0;++s5)x/=5

;

for(i=min(k,l);i--;)for(j=0;j<=i*k;++j)rw(f[i+1][j+s5],f[i][j]+s2);

}for(l=0;l<=k*k;++l)rw(ans,min(l,f[k][l]));

printf("%d

",ans);

}

t3:餐廳(restaurant)

【問題描述】

小r最近在玩一款模擬餐廳打工的遊戲,其中有乙個疊盤子的小遊戲小

r很喜歡。這個小遊戲是這樣的:有乙個放盤子的機器會在一條直線上運動,機器裡裝著

n個盤子,其中第

i個盤子半徑為

ri,並且如果要放下該盤子,盤子的中心必須放在直線上

xi的位置上,小

r可以決定放下哪些盤子和放下這些盤子的順序,盤子可以放在空位上,或者疊在乙個上面沒有其他盤子的盤子上,但要求被疊的盤子必須包含要疊上去的盤子。小

r想要讓疊出的盤子盡量高,請你計算出最高的一疊最多能疊幾個盤子 。

【輸入格式】

第一行乙個正整數n,表示盤子數。

接下來n行,每行兩個正整數ri和

xi。【輸出格式】

輸出乙個整數,表示答案。

【樣例輸入】

3 52 4

2 6 

【樣例輸出】

【資料範圍】

對於20%的資料,

n<=10

;對於50%的資料,

n<=1,000

;對於100%的資料,

n<=100,000

,ri,xi<=。

#include#include

using

namespace

std;

#define mn 100000

#define n 131072

struct pp[mn+5

];bool cmp(const p&a,const p&b)

int t[n*2+5],c[mn+5

],cn;

void renew(int k,int x)

int query(int l,int

r)

return

res;

}int

main()

20170117 機房 練習賽

現代科學,面廣枝繁,不是一輩子學得了的。惟一的辦法是集中精力,先打破一缺口,建立一塊或幾塊根據地,然後乘勝追擊,逐步擴大研究領域。此法單刀直入,易見成效。王梓坤 我熱愛生活,我是一名快速成長的oier include include include define program name color...

機房練習賽 Dinner

本來看到這道題的第一想法是環形區間dp的,但是模擬完樣例我就恍然大悟,在10的時間內可以同時讓1,5點完餐,那不就是找最大值得最小值嗎?然後就是二分答案了,二分最少時間。然後就是我的玄學check 我在考試的時候是想到了變成二倍鏈在區間上處理的,但我直接o n 處理了每個區間的和不大於x的塊,然後列...

2010有道難題練習賽

1 時間限制 1000ms 記憶體限制 65536kb 描述 計算a加b。輸入一行,用空格分開的兩個整數a和b。其中0 a,b 10000。輸出乙個整數,為a加b的和。樣例輸入 1 2 樣例輸出 3 include void main 2時間限制 1000ms 記憶體限制 65536kb 描述 計算...