2019全國高校計算機能力挑戰賽

2021-10-04 17:31:28 字數 4546 閱讀 2765

初賽題解:

決賽題解:

1、自動編碼。給乙個字串,裡面含有數字字元,將數字加3後模10的結果放在原位上。即』1』變成』4』,』2』變成』5』,』9』變成』2』,請輸出變換後的字串。

輸入說明:乙個字串(長度小於255)。

輸出說明:按照題目規則變換後得到的字串行。

輸入樣例:2012-09-05a

輸出樣例:5345-32-38a

簡單的字串處理

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1e4+5;

char s[

260]

;int

main

(void)}

cout << s << endl;

return0;

}

2、求各種三維物體的體積,輸入圖形型別,之後是參數列,請計算它們的體積,按體積從大到小排序,輸出這些體積的值。輸入圖形型別包括長方體cu、球體sp和圓柱體cy。

輸入說明:第一行是乙個正整數n(0輸出說明:從大到小排序後的體積,精度保留小數點後2位。

輸入樣例:3

cu 3 4 5

sp 3

cy 3 6

輸出樣例:169.56 113.04 60.00

說明:π取值3.14

計算出體積後,排序輸出

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1e4+5;

const

double pi =

3.14

;double arr[n]

;bool

cmp(

double a,

double b)

intmain

(void

)else

if(s[1]

=='e'

)else

}sort

(arr, arr + n, cmp)

;for

(int i =

0; i < n -

1; i++

)printf

("%.2lf "

, arr[i]);

printf

("%.2lf\n"

, arr[n -1]

);return0;

}

3、對給定的整數陣列(陣列長度n滿足1〈n〈10000),選擇乙個位置,把陣列分割為前後兩個部分。求使得前後兩個部分所有元素和的差值絕對值最大的分割位置(即使得分割後前後兩部分資料的和盡可能懸殊)。如有多種分割情況,選擇分割位置最小的情況輸出。

輸入說明:第一行是整數n,說明陣列中元素個數,接下來一行是這n個數。

輸出說明:乙個整數,即前面部分包含的元素個數。

輸入樣例:6

11 102 13 24 35 46

輸出樣例:1

先計算出字首和,再列舉斷點找到最小的情況即可

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1e4+5;

typedef

long

long ll;

ll arr[n]

, sum[n]

;int

main

(void

)else

}for

(int i =

0; i < n -

1; i++)}

printf

("%d\n"

, pos)

;return0;

}

4、這道題沒有找到題目,只有**還在

忘記了題目是什麼了,大概是求第k大的數

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1e5+5;

int arr[n]

;int

main

(void

)sort

(arr, arr + n)

;printf

("%d\n"

, arr[n - k]);

return0;

}

5、村村通:求解2個村莊之間的修路最低成本。輸入包括兩兩村莊之間道路的建設成本。計算修築給定兩個村莊之間道路的最小建設成本,如果兩村之間通過已知資料發現不能構成聯通,輸出-1。

輸入說明:第一行是3個整數,分別表示村莊的數目n(村莊編號1~n,0〈n〈10000)和待求解的兩個村莊的編號,之後是多行道路修築成本資訊,每行有3個整數,分別表示兩個村莊的編號和修築這兩個村莊之間道路的建設成本,以-1 -1 -1結束。

輸出說明:修築指定村落間道路的最小建設成本。

輸入樣例:5 1 3

1 2 11

1 4 12

2 3 8

3 4 5

4 5 8

-1 -1 -1

輸出樣例:17

因為村莊數目是1w,不能用鄰接矩陣來儲存,需要使用鄰接表來儲存。

複雜度為 o(n

logn

)o(nlogn)

o(nlog

n)

#include

#define push(x,y,z) g[x].push_back(p(y,z))

// 巨集函式

using

namespace std;

const

int inf =

0x3f3f3f3f

, n =

10005

;typedef pair<

int,

int> p;

int n, m, st, ed;

vectorg[n]

;int dis[n]

;bool vis[n]

;void

init()

void

dijk()

}}}int

main

(void

)dijk()

; cout <<

(dis[ed]

== inf ?-1

: dis[ed]

)<< endl;

return0;

}

6、工地上需要順序採購n批材料,所需費用依次為f1, f2, …, fn,因施工關係,採購順序不能改變,需要在連續的k個月內採購完成。財務希望支出盡可能平穩,即這k個月的採購支出的最大值最小,例如需要分2個月依次採購3批材料,所需費用依次是5、3、7。一種方案是先採購5,然後採購3和7,最大支出為10;另一方案是先採購5和3,再採購7,最大支出為8,比前一種採購方式平穩,採購支出的最大值最小是8。

輸入說明:第一行是兩個正整數,分別是採購批數n(0〈n〈10000)和採購月數k(0〈k〈=n〈10000)。第二行是n個正整數,對應n批材料的費用f1, f2, …, fn。

輸出說明:所有採購方案中,支出最大值最小的值。

輸入樣例:3 2

5 3 7

輸出樣例:8

二分問題,數列分段

#include

#include

using

namespace std;

const

int n =

1e5+5;

typedef

long

long ll;

ll a[n]

;int n, m;

//驗證組數是否小於m

bool

valid

(int size)

else

}return group <= m;

}int

main

(void

) cout << l << endl;

return0;

}

2020全國高校計算機能力挑戰賽(word模擬題)

1.當前 是病毒傳播的最主要途徑。答案 網路 2.下列敘述不正確的是 a.internet上的網域名稱由網域名稱系統dns統一管理 b.www上的每乙個網頁都可以加入收藏夾 c.每乙個e mail位址在internet中是唯一的 d.每乙個e mail位址中的使用者名稱在該郵件伺服器中可以不是唯一的...

全國高校計算機能力挑戰賽C語言程式設計題

1 define crt secure no warnings 1 include include include 16.輸入一行由字元a z和a z組成的字串,字串長度 10000,求其中任意兩個字元出現次數的差值的絕對值 輸入 第一行輸入字串第二行輸入兩個字元。輸出 輸出這兩個字元出現次數的差值...

2019中國高校計算機大賽 大資料挑戰賽落幕

有過資料競賽的經歷,我會看簡歷 得過一次前10 我會給 面試機會。得過 2 次或者以上前10 我會給現場面試機會。得過一次前 3 名,我們就會談笑風生了。你如何看待資料競賽?這位企業的技術高管的回答,在alphago還未面世的時候就引發了行業的共鳴。由教育部高等學校計算機類專業教學指導委員會 軟體工...