【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)
A。?
數(shù)數(shù)題。
答案:490
B。
26進(jìn)制模擬。
答案:BYQ
C。
?類似fib數(shù)列求值,遞推一下就好。
答案:4659
D。
?注意兩個(gè)坑點(diǎn),一個(gè)是正整數(shù),所以枚舉要從1開始。第二個(gè)坑點(diǎn)是互不相同的,為了達(dá)到這一點(diǎn)我們可以考慮三層循環(huán)枚舉的時(shí)候令i<j<k、
答案:40785
E。
?這題注意dfs會(huì)炸(據(jù)說(shuō)),但是直接bfs是O(n*m)的復(fù)雜度跑的飛快秒出結(jié)果。至于字典序,直接按照那個(gè)方向搜索,然后直接回溯的時(shí)候輸出答案就可以了。當(dāng)然也可以把路徑以字符串的形式每次都存到一個(gè)對(duì)應(yīng)的結(jié)構(gòu)體里,到時(shí)候直接輸出用可以。
答案:DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
F。
?
水題,直接暴力。
?
G。?
水題,直接讀入到數(shù)組中然后按2的冪次遍歷數(shù)組就可以了,學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)的話這題會(huì)好做很多。
H。
水題,按照差去求gcd就可以了。最后對(duì)于一個(gè)數(shù)的情況,特判一下。
?
注意這題后綴表達(dá)式不能直接排個(gè)序然后貪心,因?yàn)楹缶Y表達(dá)式相當(dāng)于是可以加括號(hào)改變優(yōu)先級(jí)的正常表達(dá)式。正解是先求和,然后看可以將多少個(gè)減號(hào)放到括號(hào)里變成一個(gè)加號(hào),其實(shí)就是貪心減號(hào)就可以了。
參考代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define ll long long #define pb push_back #define pm make_pair using namespace std; const int MAX = 2e5 + 5; int n,m; int a[MAX]; int main() {cin>>n>>m;int all = n + m + 1;ll sum = 0;for(int i = 1; i<=all; i++) scanf("%d",a+i),sum += a[i];sort(a + 1,a + all + 1);if(a[1] >= 0 && m>0) sum -= 2 * a[1];//拿出一個(gè)當(dāng)負(fù)數(shù),其他全可以為正數(shù)。(也就是在這個(gè)負(fù)數(shù)前面加括號(hào),然后不用管正負(fù)號(hào)的個(gè)數(shù),這一個(gè)括號(hào)定好之后,正號(hào)放在括號(hào)外面,負(fù)號(hào)放在括號(hào)里面就可以了。if(a[1] < 0) {for(int i = 0; i<=all ; i++) {if(a[i] > 0 || m == 0) break;sum += (-a[i]) * 2;m--;}}printf("%lld\n",sum);return 0; }?
I。?
這里不得不說(shuō)一句,bzoj原題。。。?其實(shí)是有一道類似但是不完全相同的題。
題解再說(shuō)吧emmm暫無(wú)正解。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2017最受欢迎信用卡排名 精彩权益与你
- 下一篇: AMD真战未来!11年前的古董显卡突然升