- 博客(58)
- 收藏
- 关注
原创 2024年第七届传智杯程序设计挑战赛第一场初赛题解
先对每个点按照象限分类计数,显然一象限和三象限的点相连必然经过两条坐标轴,二象限和四象限的点相连必然经过两条坐标轴,最后在计算配对后剩下的点即可,只能经过一条坐标轴。枚举每一个棋子,判断是否能为四子棋,注意,只需要以当前点为起点,往右,往下,往右下,往坐下这四种情况。对于每一个数字,从后往前开始找,如果找到偶数位,则和最后一位交换即可。需要注意的是答案的范围,极限情况是。的个数只和相乘的每一个数的因子。的情况,此时最小的可能答案为。考虑动态规划,定义状态表示为。简单数学知识,乘积末尾的。
2024-12-04 17:38:05
2313
3
原创 2024年西安交通大学软件工程专业考研915真题
本文旨在帮助考生了解915的知识点考察方法,我备考过程也做过那些机构所谓的回忆版真题,实在错漏百出让人难以理解出题人的想法,但是上了考场之后发现出题人真的非常严谨,于是考完之后就想把所有题目回忆出来,
2024-08-28 16:34:08
2003
3
原创 2024HBCPC:J Iris‘ Food
然而,Iris 还是一只小猫,不宜食用太多的猫粮。天的时间里,每一天 Iris 会在玩 oql 键盘的时候敲下若干个字符,而这些字符恰好全都是。oql 每天可能会给 Iris 喂一定数量的猫粮。对于每一天,输出一行一个整数,表示 Iris 这一天能得到的猫粮对。很简单的一个贪心,因为不能有前导零,所以可以先从。请注意,你需要输出的是最小答案模。中拿出一个最小的数作为第一个数,之后就可以从。现在,问题都解决了,我们只需要预处理出一个数组。猫猫 Iris 又在玩 oql 的键盘了。个,经过重新排列后形成一个。
2024-05-29 08:37:36
1395
原创 2024HBCPC:E Breakfast II
请注意,对于每位同学,每个食堂最多只能去购买一次。你们需要进行商量,并决定哪些同学去买早饭、每个同学去哪些食堂、以及这些同学的路线,使得所有同学路线长度之和最小。你们需要选出若干同学,这些同学从各自的宿舍出发,前往食堂购买早饭后,然后将至少。为了防止一个人买太多的早饭,每个人在每间食堂买的包子数和鸡蛋数分别不能超过。分析题目可以得知,可以通过所需购买的包子和鸡蛋的个数推算出至少需要去食堂。次食堂所需的最短距离,问题就转换成了一个很经典的背包模型了。,分别表示每个人在每间食堂可以购买的包子与鸡蛋的上限。
2024-05-28 19:03:20
913
1
原创 2024HBCPC:C Goose Goose Duck
考虑贪心,我们很容易可以想到按照左端点从小到大排序,那么对于同一人数时,有多个人可以加入游戏,应该选择右端点最小的人参加游戏,实现这个思路则是用优先队列动态维护右端点最小的人即可。假期的时候,大家经常会在群里问有没有人玩鹅鸭杀,并且报出现在已经参与的人数。你认为参与游戏的人越多,游戏将会越有趣,所以你决定给大家安排一个加入顺序,使得加入游戏的人数最多。,表示最多能有多少个人加入游戏。个人,如果当前已经加入游戏的人数处于区间。若有多种加入游戏的方案,你可以输出任意一种。个整数,由空格分隔,第。
2024-05-28 18:27:28
1368
2
原创 第十四届蓝桥杯编程题部分代码题解
嵌套搜索,先搜索海水的部分,遇到岛屿就把岛屿的所有连通块搜索并标记。每次循环,拿到数组中最小的数,标记上位置,然后操作它和它的前驱后继。但是可能拿到的数,已经被改变过了,所以我们需要开一个。开一个小根堆,把所有数的大小和位置都放进去。的最小值,最小值就是二分找到满足。全排列枚举所有降落方案,然后判断即可。结尾的最长合法子序列,答案就是。,记录下每个位置被改变过多少次。首先初始化下每个数的前驱和后继。最后把没有被标记的数输出即可。的前缀和,然后扫一遍即可。
2023-04-10 19:18:00
869
原创 配置轻量级竞赛刷题环境!VScode上运行C++代码
Ctrl + shift + P 打开搜索,搜Preferences: Open Keyboard Shortcuts (JSON)配置完成后,创建一个cpp文件,敲好代码后直接Ctrl + R运行,会在终端里面执行代码。注意所有文件夹都尽可能不要用中文名,有时候路径有中文会出问题。建一个文件叫c_cpp_properties.json。拓展里面搜C/C++,没有什么后缀,第一个就是。再建一个tasks.json。然后把下面这段复制进去即可。
2023-04-04 17:56:02
991
原创 Codeforces Round #783 (Div. 2) A - C
A. Direction Change题意:给定一个n∗mn * mn∗m 的方格图,在不能连续朝同一个方向走的前提下,问从 (1,1)(1, 1)(1,1) 走到 (n,m)(n, m)(n,m) 的最少步数为多少做法:先右下右下的走,走到右边界或者下边界,步数为 (min(n,m)−1)∗2(min(n, m) - 1) * 2(min(n,m)−1)∗2 ,再往右或往下走,步数为 (max(n,m)−min(n,m))/2∗2+(max(n,m)−min(n,m))(max(n, m) - min
2022-04-20 09:48:24
174
原创 Educational Codeforces Round 126 (Rated for Div. 2) A - C
A. Array Balancing题意:给定一个操作,可以交换 aiaiai 和 bibibi 使得两序列相邻绝对值的和最小做法:小的放上面,大的放下面#include<bits/stdc++.h>#define int long longusing namespace std;signed main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; wh
2022-04-11 17:02:47
420
原创 第十三届西南民族大学程序设计竞赛题解
A. 落花》&&《红衣集》模拟#include<bits/stdc++.h>#define int long longusing namespace std; signed main(){ int n; cin >> n; vector<int> a(n - 1), b(n - 1); for (int i = 0; i < n - 1; i++) cin >> a[i]; for (
2022-04-05 20:28:23
1358
原创 Educational Codeforces Round 125 (Rated for Div. 2) A - C
A. Integer Moves题意:给你一个坐标 (x,y)(x, y)(x,y) ,问你从 (0,0)(0, 0)(0,0) 开始,每次走任意整数长的步,问最少需要几步可以到达做法:特判 (0,0)(0, 0)(0,0),如果可以一步到位就是1,否则是2#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<in
2022-03-23 11:15:32
579
原创 Codeforces Round #778 (Div. 1 + Div. 2) A - C
A. Maximum Cake Tastiness题意:给你一个长度为 nnn 的序列,定义这个序列的权值为相邻两个元素的和,给你一次反转序列的操作,问你该序列的最大权值为多少做法:输出最大值和次大值的和#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N
2022-03-21 11:06:49
594
原创 Codeforces Round #774 (Div. 2) A - C
A. Square Counting题意:给你一个长度为 nnn 的序列,给出总和 sss ,问其中最多能含多少个 n2n^2n2做法:直接输出 s/n2s / n ^2s/n2 即可,因为序列元素可以是0#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int
2022-03-07 15:30:35
279
原创 Codeforces Round #775 (Div. 2) A - C
A. Game题意:你可以在陆地上行走,遇到水坑必须跳过去,且你只能跳一次,问走到最后的最小花费做法:从前往后找到第一个0和从后往前找到第一个0,然后位置相减即可#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 100010;const int
2022-03-07 15:04:29
124
原创 Codeforces Round #773 (Div. 2) A - C
A. Hard Way题意:给你一个三角形的三个点,问你有多长的边上的点沿着 y=0y = 0y=0 这条线往下走会穿过三角形做法:其实就是问你这个三角形是否存在一条水平边,且这条边是三角形区域的上边界#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N
2022-02-24 17:37:05
593
原创 AtCoder Beginner Contest 240 (A - D)
A - Edge Checker题意:已知一个环,给你两个点 aaa 和 bbb ,问你这两个点之间有没有边做法:随便写,意思到位就行#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 100010;int t, n, m; int main(
2022-02-20 23:08:39
533
原创 AtCoder Beginner Contest 239 (A - E)
A - Horizon题意:给你一个 xxx ,输出 x(12800000+x)\sqrt{x(12800000 + x)}x(12800000+x) 的值做法:直接输出,注意精度#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 100010;long long t, n, m; int main(voi
2022-02-20 16:19:20
467
原创 Codeforces Round #771 (Div. 2) (A - C)
A. Reverse题意:给你一个排列和一次反转区间的操作,问操作后的最小字典序排列做法:枚举找到第一个和编号不符的位置,然后再找到这个编号的位置,然后反转这个区间即可#include<bits/stdc++.h>using namespace std;int main(){ int t; cin >> t; while (t--) { int n; cin >> n; vect
2022-02-15 13:37:40
400
原创 2022牛客寒假算法基础集训营1题解
牛客寒假训练营1A-九小时九个人九扇门_2022牛客寒假算法基础集训营1 (nowcoder.com)结论:一个数的数字根等于这个数对9取模的结果,特别地,取模得0则数字根为9证明:假设一个数为abcd, 那么:abcd % 9 = (a * 1000 + b * 100 + c * 10 + d * 1) % 9由取模的性质我们可以知道:= ((a % 9) * (1000 % 9) + (b % 9) * (100 % 9) + (c % 9) * (10 % 9) + (d % 9) *
2022-02-14 18:05:08
623
原创 寒假:Day27
Day27二分图问题257. 关押罪犯 - AcWing题库二分图之染色法问题,二分答案,然后用染色法check这个二分图的可行性即可#include<bits/stdc++.h>using namespace std;const int N = 20010, M = 200010;int n, m;int h[N], e[M], ne[M], w[M], idx;int color[N]; // 0表示未染色,1表示白色,2表示黑色void add(int a, in
2022-02-07 23:30:46
361
原创 寒假:Day26
Day26有向图的强连通分量1174. 受欢迎的牛 - AcWing题库TarjanTarjanTarjan算法,将一个有向图中的环都缩点,使得这个新图是有向无环图(DAG),每一个点都属于一个强连通分量中,也就是一个环,最后判断下新图中每一个点的出度,如果只有一个出度为0的点,那么答案就是这个连通分量内的所有点,如果有多个出度为0的点,则答案为0#include<bits/stdc++.h>using namespace std;const int N = 10010, M =
2022-02-06 13:42:33
338
原创 寒假:Day25
Day25最近公共祖先问题(LCA)1172. 祖孙询问 - AcWing题库LCA模板题#include<bits/stdc++.h>using namespace std;const int N = 40010, M = 2 * N;int n, m;int h[N], e[M], ne[M], idx;int depth[N], fa[N][16]; // depth存每个节点的深度,fa存倍增往前走2^i步到哪个点编号int q[N]; // 数组模拟队列void
2022-02-02 22:45:37
375
原创 寒假:Day24
Day24继续图论。346. 走廊泼水节 - AcWing题库Kruskal模板应用,先把每个点看作一个集合,然后从小到大枚举边,每次把两个集合合并时,两个集合互相连边直至成局部完全图即可#include<bits/stdc++.h>using namespace std;const int N = 6010;struct Edge{ int a, b, w; bool operator< (const Edge &t) const {
2022-01-30 18:49:35
703
原创 寒假:Day23
Day23最小生成树开搞!1140. 最短网络 - AcWing题库primprimprim 模板题,因为数据量小,而且是以邻接矩阵的方式给出图,所以用 primprimprim 算法更加方便#include<bits/stdc++.h>using namespace std;const int N = 110;int w[N][N];int dist[N];bool st[N];int n;int prim(){ memset(dist, 0x3f, size
2022-01-23 23:26:25
534
原创 寒假:Day22
Day22340. 通信线路 - AcWing题库#include<bits/stdc++.h>using namespace std;const int N = 1010, M = 20010;int n, m, k;int h[N], e[M], ne[M], w[M], idx;deque<int> q;int dist[N];bool st[N];void add(int a, int b, int c){ e[idx] = b, w[id
2022-01-23 15:28:11
237
原创 寒假:Day21
Day21今天进入图论,为了加快进度,我偏向先自己写,如果写得出来就直接跳过了,写不出来的再去看视频。基础课把这些算法模板都背熟了,提高课直接学习如何建图,这是图论难点。Y总的总结很好用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XP6JjhcQ-1642483693999)(C:\Users\lenovo\AppData\Local\Temp\1642329881043.png)]1127. 香甜的黄油 - AcWing题库第一次用spfa,代码确实简洁,但是可
2022-01-18 13:28:53
217
原创 寒假:Day20
Day20今天把搜索专题弄完,准备进入图论部分!166. 数独 - AcWing题库利用数字的二进制来枚举每一个格子都能填哪些数,先将每一行、每一列、每一个九宫格都初始化成二进制的 111111111111111111111111111 也就是十进制的511,然后如果要用到某一个数字 iii ,那就把二进制上的那一位1变成0,也就是十进制减去 2i2^i2i 即可。利用二进制来枚举表示状态,妙哉!#include <iostream>#include <algorithm>
2022-01-15 11:43:34
327
原创 寒假:Day19
Day19今天开始进入搜索,速度提上来!173. 矩阵距离 - AcWing题库求所有0到最近的1,反过来想就是用1去更新到0的每一个距离,因为有多个1,所以就是多源BFS。#include<bits/stdc++.h>#define x first#define y secondusing namespace std;const int N = 1010;char f[N][N];int g[N][N];bool st[N][N];int n, m;queue<
2022-01-12 19:45:33
179
原创 寒假:Day18
Day181083. Windy数 - AcWing题库数位DP的题的预处理就含有一定的DP方式,预处理可以让你的个数更好的求出来,而且每一道题不同的条件有不同的预处理方式,这也是数位DP的一个难点#include<bits/stdc++.h>using namespace std;const int N = 11;int f[N][N]; // 剩余i位且最高位是j的Windy数的个数void init(){ for (int i = 0; i < 10; i+
2022-01-09 22:43:19
384
原创 寒假:Day17
Day17数位DP数位DP很经典的情况就是问你一段区间内满足某种性质的数的个数,一般如果数据量小的话可以暴搜,但是如果数据范围大了就需要数位DP了1081. 度的数量 - AcWing题库求一段区间满足条件的数的个数,我们可以利用前缀和的思想,求出 dp(x)dp(x)dp(x) 是从 000 到 xxx 满足条件的数,然后答案就能表示为 f(r)−f(l−1)f(r) - f(l - 1)f(r)−f(l−1) ,数位DP的核心思想就是分类讨论,从每一位数字上分类讨论,最后得出结论。#inclu
2022-01-07 23:22:46
521
原创 寒假:Day16
Day16479. 加分二叉树 - AcWing题库区间DP套路模板直接做就好,注意时间复杂度即可#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 35;int t, n, m;int w[N], f[N][N], g[N][N];void
2022-01-06 22:14:05
204
原创 寒假:Day15
Day15继续刷课!加快速度327. 玉米田 - AcWing题库和上一题基本一摸一样,只不过换了个判定条件。但是这个代码实现可以说是很妙了,二进制运用的太好了!#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 14, M = 1 <<
2022-01-05 23:02:55
483
原创 寒假:Day14
Day14加快进度,不然感觉要刷不完了1058. 股票买卖 V - AcWing题库因为有冷冻期,所以这个时候两个状态已经无法表示出题目意思,这个时候需要三个状态。状态表示={第i天手上有货f[i,0]第i天手上无货第1天f[i,1]第i天手上无货第≥2天f[i,2]状态表示 = \begin{cases} 第i天手上有货 & f[i, 0]\\\\ 第i天手上无货第1天 &f[i, 1]\\ \\第i天手上无货第≥2天 &f[i, 2] \end{cases}状态表示=
2022-01-04 23:35:34
157
原创 寒假:Day13
Day13元旦放了自己两天假舒舒服服跨个年,今天继续DP,提速提速状态机模型1049. 大盗阿福 - AcWing题库这道题可以用背包问题的思考方式根据第 iii 家商铺选不选划分集合,状态表示也和背包大径相同:f[i]f[i]f[i] 表示前 iii 家商铺最大价值。不选这家那就是 f[i−1]f[i - 1]f[i−1] ,如果选这一家,那前一家必不选,那么就是 f[i−2]+wf[i - 2] + wf[i−2]+w 很好理解状态划分={选第i家店铺f[i−2]+w不选第i家商铺f[i−1]
2022-01-03 23:57:14
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人