日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8.19noip模拟题

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.19noip模拟题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

2017 8.19 NOIP模擬賽

by coolyangzc

?

?

?

共3道題目,時間3小時

?

?

題目名

高級打字機

不等數列

經營與開發

源文件

type.cpp/c/pas

num.cpp/c/pas

exploit.cpp/c/pas

輸入文件

type.in

num.in

exploit.in

輸出文件

type.out

num.out

exploit.out

時間限制

1000MS

1000MS

1000MS

內存限制

256MB

256MB

256MB

測試點

5+(5)

10

10

測試點分值

20

10

10

?

?

?

評測環境

?

操作系統:Windows XP SP3

CPU: Pentium(R) Dual-Core CPU E5300 @ 2.60Ghz(2CPUs)

系統內存:2GB

?

?

?

?

?

?

Problem 1 高級打字機(type.cpp/c/pas)

【題目描述】

早苗入手了最新的高級打字機。最新款自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。

請為這種高級打字機設計一個程序,支持如下3種操作:

1.T x:在文章末尾打下一個小寫字母x。(type操作)

2.U x:撤銷最后的x次修改操作。(Undo操作)

(注意Query操作并不算修改操作)

3.Q x:詢問當前文章中第x個字母并輸出。(Query操作)

文章一開始可以視為空串。

?

【輸入格式】

第1行:一個整數n,表示操作數量。

以下n行,每行一個命令。保證輸入的命令合法。

?

【輸出格式】

每行輸出一個字母,表示Query操作的答案。

?

【樣例輸入】

7

T a

T b

T c

Q 2

U 2

T c

Q 2

【樣例輸出】

b

c

【數據范圍】

對于40%的數據 n<=200;

對于100%的數據 n<=100000;保證Undo操作不會撤銷Undo操作。

<高級挑戰>

對于200%的數據 n<=100000;Undo操作可以撤銷Undo操作。

<IOI挑戰> type

必須使用在線算法完成該題。

?

#include<iostream> #include<cstdio> using namespace std; int n,top; char a[100001]; int main() {freopen("type.in","r",stdin);freopen("type.out","w",stdout);scanf("%d",&n);while(n--){char ch[2];scanf("%s",ch);if(ch[0]=='T')cin>>a[++top];else if(ch[0]=='U'){int x;scanf("%d",&x);if(top>=x)top-=x;else top=0;}else {int x;scanf("%d",&x);cout<<a[x]<<endl;}} return 0;} 蜜汁RE

黃學長的代碼也是掛了50

?

?

Problem 2 不等數列(num.cpp/c/pas)

【題目描述】

將1到n任意排列,然后在排列的每兩個數之間根據他們的大小關系插入“>”和“<”。問在所有排列中,有多少個排列恰好有k個“<”。答案對2012取模。

?

【輸入格式】

第一行2個整數n,k。

?

【輸出格式】

一個整數表示答案。

?

【樣例輸入】5 2

【樣例輸出】

66

【數據范圍】

對于30%的數據:n <= 10

對于100%的數據:k < n <= 1000,

?

?

#include<iostream> #include<cstdio> #include<cstring>#define mod 2012 #define N 1007using namespace std; int L[N][N],n,m,cnt,k;int main() {freopen("num.in","r",stdin);freopen("num.out","w",stdout);scanf("%d%d",&n,&k);if(k>=n) {printf("0\n");return 0;}for(int i=1;i<=n;i++) L[i][0]=1;for(int i=2;i<=n;i++)for(int j=1;j<=k;j++){if(j>=i) continue;L[i][j]=(L[i][j]+L[i-1][j-1]*(i-j)+(j+1)*L[i-1][j])%mod;}printf("%d\n",L[n][k]%mod);fclose(stdin);fclose(stdout);return 0; } 水水水DP

?

?

?

Problem 3 經營與開發(exploit.cpp/c/pas)

【題目描述】

4X概念體系,是指在PC戰略游戲中一種相當普及和成熟的系統概念,得名自4個同樣以“EX”為開頭的英語單詞。

eXplore(探索)

eXpand(拓張與發展)

eXploit(經營與開發)

eXterminate(征服)

——維基百科

?

今次我們著重考慮exploit部分,并將其模型簡化:

你駕駛著一臺帶有鉆頭(初始能力值w)的飛船,按既定路線依次飛過n個星球。

?

星球籠統的分為2類:資源型和維修型。(p為鉆頭當前能力值)

1.資源型:含礦物質量a[i],若選擇開采,則得到a[i]*p的金錢,之后鉆頭損耗k%,即p=p*(1-0.01k)

2.維修型:維護費用b[i],若選擇維修,則支付b[i]*p的金錢,之后鉆頭修復c%,即p=p*(1+0.01c)

??? 注:維修后鉆頭的能力值可以超過初始值(你可以認為是翻修+升級)

?

請作為艦長的你仔細抉擇以最大化收入。

?

【輸入格式】

第一行4個整數n,k,c,w。

以下n行,每行2個整數type,x。

type為1則代表其為資源型星球,x為其礦物質含量a[i];

type為2則代表其為維修型星球,x為其維護費用b[i];

?

【輸出格式】

一個實數(保留2位小數),表示最大的收入。

?

【樣例輸入】

5 50 50 10

1 10

1 20

2 10

2 20

1 30

【樣例輸出】

375.00

【數據范圍】

對于30%的數據 n<=100

另有20%的數據 n<=1000;k=100

對于100%的數據 n<=100000; 0<=k,c,w,a[i],b[i]<=100;保證答案不超過10^9? ?

?

/* 可以發現,當前的決策只對后面的開采有影響,且剩余耐久度與之后的開采收益成正比,如果倒著考慮這個問題,得出i-n的星球1點耐久度所能獲得的最大收益,從后往前dp,得出最大值最后乘w就是答案 */ #include<cstdio> #include<algorithm> using namespace std; const int maxn=100001; int n,w,t[maxn],a[maxn]; double k,c,ans; int main() {freopen("exploit.in","r",stdin);freopen("exploit.out","w",stdout);scanf("%d%lf%lf%d",&n,&k,&c,&w);k=1-0.01*k;c=1+0.01*c;for(int i=1;i<=n;i++)scanf("%d%d",&t[i],&a[i]);for(int i=n;i;i--)if(t[i]==1)ans=max(ans,ans*k+a[i]);elseans=max(ans,ans*c-a[i]);printf("%.2lf\n",ans*w); } 還是不大懂

?

?

/*T1個人覺得沒問題啊,,,,,, T2水dp,第一次考場上A dp題,太弱了,,,,, T3沒耐心讀(我不會告訴你是在聊QQ...)寫了個20分暴力光榮爆零...... 有這么兩個問題吧: 1.讀題不認真,導致開始就寫錯。 2.推dp方程不耐心。 還有就是不能不能不能畏懼dp,,,,,, */ conclusion

?

轉載于:https://www.cnblogs.com/L-Memory/p/7396631.html

總結

以上是生活随笔為你收集整理的8.19noip模拟题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。