第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)

张开发
2026/4/9 5:17:36 15 分钟阅读

分享文章

第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
目录一.密密摆放1.题目讲解2.代码实现二.脉冲强度之和1.题目讲解2.代码实现三.25 之和1.题目讲解2.代码实现四.旗帜1.题目讲解2.代码实现五.数列差分1.题目讲解2.代码实现六.树上寻宝1.题目讲解2.代码实现七.翻转硬币1.题目讲解2.代码实现八.破解信息1.题目讲解2.代码实现一.密密摆放题目链接:https://www.lanqiao.cn/problems/20565/learning/1.题目讲解2.代码实现#include iostream using namespace std; int main() { cout 25 * 8 endl; return 0; }二.脉冲强度之和题目链接:https://www.lanqiao.cn/problems/20555/learning/1.题目讲解2.代码实现#include iostream using namespace std; bool check(int sum) { int x sum % 10; while(sum) { if(x ! sum % 10) { return false; } sum / 10; } return true; } int main() { long long ret 0; for(int k 1;k 2025515;k) { int sum k * 10 45; if(check(sum)) { retsum; } } cout ret endl; return 0; }三.25 之和题目链接:https://www.lanqiao.cn/problems/20548/learning/1.题目讲解2.代码实现#include iostream using namespace std; int main() { int n; cin n; long long sum (n n 24) * 25 / 2; cout sum endl; return 0; }四.旗帜题目链接:https://www.lanqiao.cn/problems/20543/learning/1.题目讲解直接把我们的cnt表打好,然后一直加就好了2.代码实现#include iostream using namespace std; int h,w; int cnt[7]; string s LANQIAO; int main() { cin h w; string aim s; while(aim.size() w) { aim s; } aims; for(int i 0;i 7;i) { int sum 0; for(int j i;j w i;j) { if(aim[j] A) { sum; } } cnt[i] sum; } int ret 0; for(int i 0;i h;i) { ret cnt[i % 7]; } cout ret endl; return 0; }五.数列差分题目链接:https://www.lanqiao.cn/problems/20530/learning/1.题目讲解2.代码实现#include iostream #include algorithm using namespace std; const int N 1e5 10; int a[N]; int b[N]; int n; int main() { cin n; for(int i 1;i n;i) { cin a[i]; } for(int i 1;i n;i) { cin b[i]; } sort(a 1,a 1 n); sort(b 1,b 1 n); int cnt 0; int aend n,bend n,abegin 1,bbegin 1; while(aend abegin bend bbegin) { if(a[aend] b[bend]) { cnt; bend--; abegin; } else { aend--; bend--; } } cout cnt endl; return 0; }六.树上寻宝题目链接:https://www.lanqiao.cn/problems/20523/learning/1.题目讲解2.代码实现#include iostream #include vector using namespace std; #define int long long const int N 1e5 10; vectorint edges[N]; int n,k; int w[N]; int ret; void dfs(int x,int step,int fa) { if(step -1) { return; } ret w[x]; for(auto e : edges[x]) { if(e fa) { continue; } dfs(e,step - 1,x); } } signed main() { cin n k; for(int i 1;i n;i) { cin w[i]; } for(int i 1;i n - 1;i) { int u,v; cin u v; edges[u].push_back(v); edges[v].push_back(u); } dfs(1,2 * k,0); cout ret endl; return 0; }七.翻转硬币题目链接:https://www.lanqiao.cn/problems/20520/learning/1.题目讲解2.代码实现#include iostream using namespace std; const int N 1010,M 3; int n,m; char a[M][N][N];//a[0]: 不反转的状态 a[1]: 反转的状态 int f[N][M][M]; int calc(char a[],char b[],char c[]) { int sum 0; for(int j 1;j m;j) { int cnt 0; if(b[j] b[j - 1]) { cnt; } if(b[j] b[j 1]) { cnt; } if(b[j] a[j]) { cnt; } if(b[j] c[j]) { cnt; } sum cnt * cnt; } return sum; } int main() { cin n m; for(int i 1;i n;i) { for(int j 1;j m;j) { cin a[0][i][j]; if(a[0][i][j] 0) { a[1][i][j] 1; } else { a[1][i][j] 0; } } } for(int i 1;i n;i) { for(int now 0;now 2;now) { for(int down 0;down 2;down) { int x f[i - 1][0][now] calc(a[0][i - 1],a[now][i],a[down][i 1]); int y f[i - 1][1][now] calc(a[1][i - 1],a[now][i],a[down][i 1]); f[i][now][down] max(x,y); } } } cout max(f[n][0][0],f[n][1][0]) endl; return 0; }八.破解信息题目链接:https://www.lanqiao.cn/problems/20508/learning/1.题目讲解2.代码实现#include iostream #include algorithm using namespace std; const int N 1e5 10,M 30; string s; int cnt[M]; int main() { cin s; for(int i 0;i s.size();i) { cnt[s[i] - a]; } for(int i 26;i 0;i--) { if(cnt[i]) { for(int j 0;j cnt[i];j) { cout char(i a); } return 0; } } return 0; }

更多文章