【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)
A。?
數數題。
答案:490
B。
26進制模擬。
答案:BYQ
C。
?類似fib數列求值,遞推一下就好。
答案:4659
D。
?注意兩個坑點,一個是正整數,所以枚舉要從1開始。第二個坑點是互不相同的,為了達到這一點我們可以考慮三層循環枚舉的時候令i<j<k、
答案:40785
E。
?這題注意dfs會炸(據說),但是直接bfs是O(n*m)的復雜度跑的飛快秒出結果。至于字典序,直接按照那個方向搜索,然后直接回溯的時候輸出答案就可以了。當然也可以把路徑以字符串的形式每次都存到一個對應的結構體里,到時候直接輸出用可以。
答案:DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
F。
?
水題,直接暴力。
?
G。?
水題,直接讀入到數組中然后按2的冪次遍歷數組就可以了,學過數據結構的話這題會好做很多。
H。
水題,按照差去求gcd就可以了。最后對于一個數的情況,特判一下。
?
注意這題后綴表達式不能直接排個序然后貪心,因為后綴表達式相當于是可以加括號改變優先級的正常表達式。正解是先求和,然后看可以將多少個減號放到括號里變成一個加號,其實就是貪心減號就可以了。
參考代碼:
#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];//拿出一個當負數,其他全可以為正數。(也就是在這個負數前面加括號,然后不用管正負號的個數,這一個括號定好之后,正號放在括號外面,負號放在括號里面就可以了。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。?
這里不得不說一句,bzoj原題。。。?其實是有一道類似但是不完全相同的題。
題解再說吧emmm暫無正解。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017最受欢迎信用卡排名 精彩权益与你
- 下一篇: AMD真战未来!11年前的古董显卡突然升