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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【jzoj】2018.2.1 NOIP普及组——D组模拟赛

發(fā)布時(shí)間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【jzoj】2018.2.1 NOIP普及组——D组模拟赛 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

懶…

正題


題1:牛車(jzoj1390)

有m條公路,有n頭牛各開(kāi)一輛車,如果有x輛車開(kāi)在它前門,它速度就會(huì)降低d*x,路上速度至少為l。求有多少頭牛可以上路。


輸入

第1行: 4個(gè)空格隔開(kāi)的整數(shù)N,M,D,L
第2..N+1行: 第i+1行描述第i頭牛的起初車速。

輸出

第一行: 輸出一個(gè)整數(shù)表示最多可以在高速上行駛的牛車數(shù)量。

樣例輸入

3 1 1 5
5
7
5

樣例輸出

2


貪心,一行一行的從小到大塞牛


代碼

#include<cstdio> #include<algorithm> using namespace std; int n,m,d,l,a[50001],s,num[50001],j; int main() {scanf("%d%d%d%d",&n,&m,&d,&l);for (int i=1;i<=n;i++) scanf("%d",&a[i]);//輸入sort(a+1,a+1+n);//排序for (int i=1;i<=n;i++){for (j=1;j<=(n-1)/m+1;j++)//最多可以塞幾頭牛{if (a[i]-d*(j-1)>=l && num[j]<m)//尋找位置{num[j]++;break;}//塞}if (j<=(n-1)/m+1) s++;//塞入}printf("%d",s);//輸出 }

題2:危險(xiǎn)系數(shù)(jzoj1391)

有n個(gè)島嶼,要按順序到達(dá)m個(gè)島嶼(可以重復(fù)或不連續(xù)),已知每個(gè)島之間的危險(xiǎn)系數(shù)。求最小危險(xiǎn)系數(shù)。


輸入

第1行: 兩個(gè)數(shù), N 和 M
第 2..M+1行: 第i+1行表示給定的序列中第i個(gè)島嶼A_i
第M+2..N+M+1行:每行N個(gè)整數(shù),表示島嶼之間的危險(xiǎn)系數(shù),對(duì)角線上一定是0。

輸出

輸出滿足要求的最小危險(xiǎn)系數(shù)

樣例輸入

3 4
1
2
1
3
0 5 1
5 0 2
1 2 0

樣例輸出

7


最短路,因?yàn)橐竺總€(gè)點(diǎn)的所以用Floyd算法(反正數(shù)據(jù)小)


代碼

#include<cstdio> #include<iostream> using namespace std; int n,m,f[10001],a[101][101],s; int main() {scanf("%d%d",&n,&m);for (int i=1;i<=m;i++) scanf("%d",&f[i]);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)scanf("%d",&a[i][j]);for (int k=1;k<=n;k++)for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (i!=j && i!=k && j!=k){a[i][j]=min(a[i][j],a[i][k]+a[k][j]);}//Floyd算法for (int i=2;i<=m;i++){s+=a[f[i-1]][f[i]];//計(jì)算距離}printf("%d",s); }

題目3:前綴轉(zhuǎn)后綴(jzoj1590)

輸入一個(gè)前綴表達(dá)式,轉(zhuǎn)成后綴表達(dá)式


輸入

輸入一個(gè)前綴表達(dá)式,運(yùn)算符只有“+”和“-”,操作數(shù)都是只有1個(gè)位數(shù)字(0到9),運(yùn)算符和操作數(shù)之間都用一個(gè)空格隔開(kāi),表達(dá)式?jīng)]有前導(dǎo)空格。每個(gè)表達(dá)式都是合法的,并且運(yùn)算符不超過(guò)20個(gè)。

輸出

輸出對(duì)應(yīng)的后綴表達(dá)式。

樣例輸入

1

樣例輸出

1



如圖建立一顆樹(shù),求出他的后序遍歷就好了。這里不難發(fā)現(xiàn),只有符號(hào)后才有分支(兩個(gè))。


代碼

#include<cstdio> #include<cstring> using namespace std; struct point{int son1,son2; }; point tree[201]; int m,n; char c[201]; int buld(int x)//建樹(shù) {m++;//位置if (c[x]=='+' || c[x]=='-')//符號(hào){tree[x].son1=buld(m+1);//分支tree[x].son2=buld(m+1);//分支return x;}else {tree[x].son1=-1;tree[x].son2=-1;//數(shù)字沒(méi)有分支return x;} } int print(int x)//后序遍歷輸出 {if (tree[x].son1!=-1) print(tree[x].son1);if (tree[x].son2!=-1) print(tree[x].son2);printf("%c ",c[x]); } int main() {//freopen("j4.in","r",stdin);//freopen("j4.out","w",stdout);n=0;char w;while ((c[++n]=getchar())!='\n') {w=getchar();if (w=='\n') break;}//讀入n--;buld(1);print(1); }

題目4:游戲(jzoj1591)

有4種材料,ABCD。每種材料有一定數(shù)量,以下情況可以產(chǎn)生反應(yīng):
AABDD
ABCD
CCD
BBB
AD
兩個(gè)人輪流取材料,直到有人無(wú)法產(chǎn)生反應(yīng)為止就輸了。兩個(gè)人是聰明絕頂?shù)娜恕?
求勝者


輸入

第一行輸入一個(gè)整數(shù)N(1<=N<=100),表示游戲次數(shù),接下來(lái)N行,每行四個(gè)整數(shù),分別表示游戲開(kāi)始時(shí)A,B,C,D四種材料的數(shù)量。假設(shè)一開(kāi)始每種材料的數(shù)量都在0到60之間。

輸出

對(duì)于每次游戲輸出贏者的名字。

樣例輸入

6
0 2 0 2
1 3 1 3
1 5 0 3
3 3 3 3
8 8 6 7
8 8 8 8

樣例輸出

Roland
Patrick
Roland
Roland
Roland
Patrick


這里用記憶化搜索模擬情況,然后用返回確定勝者。


代碼

#include<cstdio> using namespace std; int w[5][4]={{2,1,0,2},{1,1,1,1},{0,0,2,1},{0,3,0,0},{1,0,0,1}};//預(yù)處理情況 int f[61][61][61][61],a,b,c,d,n; int dfs(int a,int b,int c,int d) {if (f[a][b][c][d]!=0) return f[a][b][c][d];//記憶化搜索for (int i=0;i<5;i++){if (a>=w[i][0] && b>=w[i][1] && c>=w[i][2] && d>=w[i][3])//如果可以取{if (dfs(a-w[i][0],b-w[i][1],c-w[i][2],d-w[i][3])==2)//搜索{f[a][b][c][d]=1;//記憶return 1;}}}f[a][b][c][d]=2;//記憶return 2; } int main() {//freopen("j5.in","r",stdin);//freopen("j5.out","w",stdout);scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d%d%d",&a,&b,&c,&d);if (dfs(a,b,c,d)==2) printf("Roland\n");else printf("Patrick\n");//輸出} }

總結(jié)

以上是生活随笔為你收集整理的【jzoj】2018.2.1 NOIP普及组——D组模拟赛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。