试题A :取余

1

试题 B: 双阶乘

// 59375
#include <iostream>
using namespace std;const int mod = 100000;int main() {int n = 2021;int res = 1;for (int i = 1; i <= 2021; i += 2) {res = (res * i) % mod;}cout << res;
}

试题 C: 格点

// 15698
#include <iostream>
using namespace std;int main() {int cnt = 0;for (int i = 1; i <= 2021; ++ i) {for (int j = 1; j <= 2021; ++ j) {if (i * j == 2021)cnt ++ ;}}cout << cnt;
}

试题 D: 整数分解

  • dp
  • f[i][j]f[i][j]f[i][j]表示用i个数相加表示数字j的方案数
// 691677274345
#include <iostream>
#include <cstring>
using namespace std;typedef long long ll;ll f[10][2030];int main() {f[0][0] = 1;for (int i = 1; i <= 5; ++ i) {for (int j = 1; j <= 2021; ++ j) {for (int k = 1; k <= 2021; ++ k) {if (j >= k) f[i][j] += f[i - 1][j - k];}}}cout << f[5][2021];
}
  • 数论隔板法
  • 将2021拆分成2021个1,期间可以放2020个搁板,将2021分成五个正整数相加,也就是在这2020个搁板中选四个位置放四个搁板,因此,答案就是C20204C^4_{2020}C20204​
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;int main() {ll fenmu = 4 * 3 * 2;ll fenzi = 1;for (int i = 2020; i >= 2017; -- i)fenzi *= i;cout << fenzi / fenmu;
}

试题 E: 城邦

  • prim
// 4046
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;int dist[2030];
int g[2030][2030];
bool st[2030];int calc(int x, int y) {int a[5], b[5];for (int i = 0; i < 4; ++ i) {a[i] = x % 10;b[i] = y % 10;x /= 10, y /= 10;}int res = 0;for (int i = 0; i < 4; ++ i) {if (a[i] != b[i])res += a[i] + b[i];}return res;
}
int prim() {memset(dist, 0x3f, sizeof dist);int res = 0;dist[1] = 0;for (int i = 0; i < 2021; ++ i) {int t = -1;for (int j = 1; j <= 2021; ++ j) {if (!st[j] && (t == -1 || dist[j] < dist[t])) {t = j;}}st[t] = true;res += dist[t];for (int j = 1; j <= 2021; ++ j)dist[j] = min(dist[j], g[t][j]);}return res;
}int main() {for (int i = 1; i <= 2021; ++ i) {for (int j = 1; j <= 2021; ++ j) {if (i == j) g[i][j] = g[j][i] = 0x3f3f3f3f;g[i][j] = g[j][i] = calc(i, j);}}cout << prim();
}
  • kruscal
#include <iostream>
#include <algorithm>
using namespace std;const int N = 2021 * 2021 + 10, M = 2021 + 10;struct Edge {int a, b, w;bool operator< (Edge const&e) const {return w < e.w;}
}e[N];
int cnt = 0;
int p[M];int calc(int x, int y) {int a[5], b[5];for (int i = 0; i < 4; ++ i) {a[i] = x % 10;b[i] = y % 10;x /= 10, y /= 10;}int res = 0;for (int i = 0; i < 4; ++ i) {if (a[i] != b[i])res += a[i] + b[i];}return res;
}
int find(int x) {if (p[x] != x) p[x] = find(p[x]);return p[x];
}
int kruscal() {int res = 0;for (int i = 1; i <= 2021; ++ i)p[i] = i;for (int i = 0; i < cnt; ++ i) {int a = e[i].a, b = e[i].b, w = e[i].w;a = find(a);b = find(b);if (a == b) continue;res += w;p[a] = b;}return res;
}
int main() {for (int i = 1; i <= 2021; ++ i) {for (int j = 1; j <= 2021; ++ j) {e[cnt ++ ] = {i, j, calc(i, j)};}}sort(e, e + cnt);cout << kruscal();
}

试题 F: 特殊年份

#include <iostream>
using namespace std;bool check(int x) {int a[5];for (int i = 0; i < 4; ++ i) {a[i] = x % 10;x /= 10;}if (a[1] == a[3] && a[0] - 1 == a[2]) return true;return false;
}int main() {int cnt = 0;for (int i = 0; i < 5; ++ i) {int year;cin >> year;if (check(year))cnt ++ ;}cout << cnt;
}

试题 G: 小平方

#include <iostream>
using namespace std;int main() {int n;cin >> n;int cnt = 0;for (int i = 1; i <= n - 1; ++ i) {int pf = i * i;if (pf % n < n / 2.0)cnt ++ ;}cout << cnt;
}

试题 H: 完全平方数

#include <iostream>
#include <cmath>
using namespace std;bool check(int x) {int t = (int)sqrt(x);if (t * t == x)return true;return false;
}int main() {int n;cin >> n;for (int i = 1; i <= n; ++ i) {if (check(i * n)) {cout << i << endl;return 0;}}
}

试题 I: 负载均衡

#include <iostream>
#include <queue>
using namespace std;
typedef pair<int, int> PII;
const int N = 2e5 + 10;int power[N];
priority_queue<PII, vector<PII>, greater<PII>> que[N]; // 小顶堆数组int main() {int n, m;cin >> n >> m;for (int i = 1; i <= n; ++ i)cin >> power[i];while (m -- ) {int a, b, c, d;cin >> a >> b >> c >> d;while (que[b].size() && que[b].top().first <= a) {power[b] += que[b].top().second;que[b].pop();}if (power[b] < d) {cout << -1 << endl;} else {power[b] -= d;cout << power[b] << endl;que[b].push({a + c, d});}}
}

试题 J: 国际象棋

  • 典型的 状压dp
  • 由于这里行数比列数少,因此我们枚举每一列的摆放状态
  • f[i][a][b][j]f[i][a][b][j]f[i][a][b][j]表示考虑前i列,第i-1列状态为a,第i列状态为b,且一共放了j个马(因为这道题与数量有关)的方案数
  • 确定正确的初始状态
#include <iostream>
using namespace std;
const int N = 110, M = (1 << 6), K = 21, MOD = 1e9 + 7;int f[N][M][M][K];int get_count(int x) {  // 二进制下1的个数int res = 0;while (x) {res ++ ;x -= (x & -x);}return res;
}int main() {int n, m, k;cin >> n >> m >> k;f[0][0][0][0] = 1;   // 初始状态for (int i = 1; i <= m; ++ i) {       // 枚举每一列for (int a = 0; a < (1 << n); ++ a) {   // 第i-2列for (int b = 0; b < (1 << n); ++ b) {   // 第i-1列if ((a & (b << 2)) || ((a << 2) & b)) continue; // 状态矛盾for (int c = 0; c < (1 << n); ++ c) {    // 第i列if ((c & (b << 2)) || ((c << 2) & b)) continue; // 状态矛盾if ((c & (a << 1)) || ((c << 1) & a)) continue; // 状态矛盾int t = get_count(c);  // 根据第i列个数来确定总个数的下限for (int j = t; j <= k; ++ j) {   // 枚举总个数f[i][b][c][j] = (f[i][b][c][j] + f[i - 1][a][b][j - t]) % MOD;}}}}}int res = 0;for (int i = 0; i < (1 << n); ++ i) {for (int j = 0; j < (1 << n); ++ j) {res = (res + f[m][i][j][k]) % MOD;}}cout << res;
}

第十二届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学B组相关推荐

  1. 第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目蓝桥杯JavaB组大赛软件类省赛第十二届第一场

    第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目 在线看题 题目PDF下载链接 百度云 链接:https://pan.baidu.com/s/1LSZvUV5dFwNtSbOshORU1 ...

  2. 第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组解析

    第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组 试题 A: 空间 试题 B: 卡片 试题 C: 直线 试题 D: 货物摆放 试题 E: 路径 试题 F: 时间显示 试题 G: 砝码称重 试题 ...

  3. 第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组(2021年4月18日)

    第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组第一场 下载原题PDF 欢迎评论区留下答案讨论!!! 试题 A: ASC 本题总分:5 分 [问题描述] 已知大写字母 A 的 ASCII 码为 6 ...

  4. 2021第十二届蓝桥杯大赛软件赛省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  5. 第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组

    第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组 试题 A: ASC 试题 B: 空间 试题 C: 卡片 试题 D: 相乘 试题 E: 路径 试题 F: 时间显示 试题 G: 最少砝码 试题 H: ...

  6. 第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组 试题

    第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组 试题   大家好,我叫亓官劼(qí guān jié ),在GitHub & CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~ ...

  7. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  8. 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解

    ========================================== 2019-2021蓝桥杯C++ B组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解 2020第 ...

  9. 蓝桥杯软件类比赛java,第十届蓝桥杯大赛软件类省赛

    第十届蓝桥杯大赛软件类省赛 这些题官网还没有解答的,我主要参考了b站UP主大雪菜的解法(绝大部分题先自己做了一遍),当然也网上查了一些解答,但发现现在网上的一些解法并不正确,希望可以给大家一个参考. ...

  10. 第十二届蓝桥杯大赛软件赛决赛(C/C++ 大学C组)

    蓝桥杯 2021年国赛真题 C/C++ 大学C组 试题 A: 整数范围 试题 B: 带宽 试题 C: 纯质数 试题 D: 完全日期 试题 E: 最小权值 试题 F: 大写 试题 G: 123 试题 H ...

最新文章

  1. 设计模式系列8--策略模式
  2. 1 编码_TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)
  3. 比特飞使用的是什么主题
  4. 设计素材模板|如何从优秀作品里学习版面设计?
  5. AndroidStudio安卓原生开发_Android扫描附近指定的蓝牙设备_通过设备名称过滤_计算距离_离扫描设备近的显示的时候放在前面---Android原生开发工作笔记128
  6. 3G 资费 流量套餐
  7. Codeforces Round #513 总结
  8. 大学生活的真实写照(经典)
  9. java视频教程 设计模式,Gof设计模式视频课程(Java实现)
  10. java完成crm系统ppt,客户关系管理系统答辩稿.ppt
  11. 网传华为员工未加班领夜宵被冻薪降考评,并终身不得领夜宵
  12. 强化学习评估-Doubly robust
  13. Unity绿幕视频后期制作方案探索
  14. WordPress安装时未选择语言导致变成英文无法修改成中文
  15. SqlDbx远程链接DB2数据库
  16. PPT中图表不同粘贴方式的区别
  17. vue3.0 + tsx 构建el-button
  18. 基于 ocr 的屏幕文字识别 开源
  19. JavaScript设计模式有哪些?
  20. 分布式和非分布式_分布式防御虚假信息

热门文章

  1. 备份表到存在的表或者自动新建表
  2. 对于按成本组件结构(要素)还原
  3. 用户退出后还锁表的处理方法
  4. SAP系统中设备管理模块的主要增强出口
  5. 物料变式的订货型生产(3.0C:可库存的类型)(26)
  6. 外国人起争执时最常说的话
  7. ABAP入门程序,你会了嘛?
  8. 新茶饮“降价内卷”的尽头,是供应链?
  9. html5在线考试开发,基于HTML5的无纸化在线考试系统.docx
  10. 单片机流星灯_51单片机拖尾灯实现