初賽題解:
決賽題解:
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還未面世的時候就引發了行業的共鳴。由教育部高等學校計算機類專業教學指導委員會 軟體工...