摘要: 【问题分析】 分析题目可得此问题为01背包问题 因此题数据较小 所以可用枚举每一样物品选或不选的方法来写 【设计程序】 #include<bits/stdc++.h> #include<iostream> #include<stdio.h> #include<cstdio> #include<que 阅读全文
posted @ 2024-02-17 21:01 睡不醒的凪 阅读(83) 评论(0) 推荐(0)
摘要: 【问题分析】 分析题目可得此问题为连通块问题 因此题枚举被包围的‘0’较难 所以可用枚举每一个不被包围的‘0’ 【设计程序】 #include<bits/stdc++.h> #include<iostream> #include<stdio.h> #include<cstdio> #include< 阅读全文
posted @ 2024-02-17 21:00 睡不醒的凪 阅读(26) 评论(0) 推荐(0)
摘要: 【问题分析】 本题有n个数(n > 10^6)n很大, 查找m 个数(m≤10^5) ,数最大为(10^9) 方法一:用顺序查找的话时间复杂度为:O(n * m)会超时, 只能得部分分; 方法二:用桶排时间复杂度为O(n)+ O(m),但是因为数最大为(109)空间复杂度为:O(109); 方法三: 阅读全文
posted @ 2024-02-17 21:00 睡不醒的凪 阅读(209) 评论(0) 推荐(0)
摘要: 【题目分析】 本题有两个方法, 方法一:每一个位置可得的分分别求出,打擂找出最大(可得部分分) 方法二:从后往前求可得的分数,以避免一些不必要的重复。 【设计程序】 方法一: #include<bits/stdc++.h> #include<iostream> #include<stdio.h> # 阅读全文
posted @ 2024-02-17 21:00 睡不醒的凪 阅读(28) 评论(0) 推荐(0)
摘要: 【问题分析】 本题考了奇数。 由此想到以下定律: 奇数+偶数=奇数; 奇数+奇数=偶数; 偶数+偶数=偶数; 所以偶数可以忽略不计,只有奇数可以对结果产生影响, 所以我们只要注意奇数即可。 经过思考可得奇数的个数至少为 $k$ 个且比 $k$ 多的个数为偶数,此时多出的奇数可组成偶数,对结果不产生影 阅读全文
posted @ 2024-02-17 20:59 睡不醒的凪 阅读(11) 评论(0) 推荐(0)
摘要: 【问题分析】 方法一:排序后从小到大排查,因为同色的数必须要是此色中最小数的倍数,又因为小的数不可能是大的数的倍数,所以从小开始算,把后面它的倍数都标记掉。记颜色的数量。 方法二:因为数的最大小于等于 $100$ ,所以可以用桶排来写,把所有数分别装入相应的桶中后,从桶 $1$ 开始到桶 $100$ 阅读全文
posted @ 2024-02-17 20:59 睡不醒的凪 阅读(13) 评论(0) 推荐(0)
摘要: 【问题分析】 本题中只能相加,所以大于2048的数都没用,这使得本题有用的数据最大为2048, 所以可用桶排也是理所当然啦!用桶把小于等于2048的数都装进桶中从桶1开始把可以相加的数都进上去,直到1024,因为1024是相加小于等于2048中的最大数。 【设计程序】 #include<bits/s 阅读全文
posted @ 2024-02-17 20:58 睡不醒的凪 阅读(31) 评论(0) 推荐(0)
摘要: 【问题分析】 因为要求和是奇数,所以可以想到想到以下定律: $1+0\equiv1(\bmod2)$ $1+1\equiv0(\bmod2)$ $0+0\equiv0(\bmod2)$ 所以不管什么数加上偶数,它的奇偶性都不会改变。 因此我们发现偶数只有凑数量的作用,只有奇数可以对结果的奇偶性产生影 阅读全文
posted @ 2024-02-17 20:58 睡不醒的凪 阅读(32) 评论(0) 推荐(0)
摘要: 【问题分析】 此题题目意思每次取左或右的零食。 按区间dp的惯例,要区间从小到大dp。 上代码。 【Code】 #include<bits/stdc++.h> using namespace std; const int N = 2000 + 5; int f[N][N], a[N]; //f[i] 阅读全文
posted @ 2024-02-17 20:57 睡不醒的凪 阅读(58) 评论(0) 推荐(0)
摘要: 有两种方法,代码注释都很详细了直接上代码 一:记忆化搜索 #include<bits/stdc++.h> using namespace std; int t[15]; int n, m; int a[400]; int mp[45][45][45][45];//mp[i][j][k][l]表示1号 阅读全文
posted @ 2024-02-17 20:56 睡不醒的凪 阅读(62) 评论(0) 推荐(0)
摘要: 本题每个位置有 $5$ 种可能,据题中 $n,m$ 均小于五,所以可以用搜索直接过。 上代码 #include<cstdio> using namespace std; bool mp[15][15]; int n, m, ans; int dt[4][5][2] = {{{-1, -1}, {0, 阅读全文
posted @ 2024-02-17 20:55 睡不醒的凪 阅读(56) 评论(0) 推荐(0)
摘要: 本题就是要找到最短的捷径。 注意事项: 捷径必须是直线。 要求捷径最短而非总路程最短。 捷径不与原有的路重合 既然在同一直线上,则该捷径的起点与终点的横坐标或纵坐标相等。要把横坐标或纵坐标相同的聚在一起只需要排个序即可。 捷径最短的话(以横坐标相等举例),只需要以 $x$ 为第一关键字,以 $y$ 阅读全文
posted @ 2024-02-17 20:54 睡不醒的凪 阅读(16) 评论(0) 推荐(0)
摘要: #include<cstring> #include<cstdio> using namespace std; char s[50]; int len; signed main() { int T; scanf ("%d", &T); while (T--) { scanf ("%s", s); l 阅读全文
posted @ 2024-02-17 20:54 睡不醒的凪 阅读(22) 评论(0) 推荐(0)
摘要: 首先,圈重点: $1\le n \le 500$ 所有元素在 $1\sim4$ 之间 任意连续的连续子串不相同 只要输出一种答案即可 于是我们可以得到的是: 由第一点和第二点可以看出此题可以写搜索解决。 由第三点我们可以得到一种剪枝方式,就是如果目前数字放入后会产生相同的连续的连续子串。 由第四点我 阅读全文
posted @ 2024-02-17 20:53 睡不醒的凪 阅读(17) 评论(0) 推荐(0)
摘要: [![桃雨凪丝](https://cdn.luogu.com.cn/upload/usericon/366316.png)](https://www.luogu.com.cn/user/366316) [![本人](https://cdn.luogu.com.cn/upload/usericon/191819.png)](https://www.luogu.com.cn/user/191819) 阅读全文
posted @ 2024-02-17 20:53 睡不醒的凪 阅读(28) 评论(0) 推荐(0)
摘要: 未获得准确的时间。导致了迟到 /(ㄒoㄒ)/~~ 结果错过了前面的小半节课,也是让人难受 ≧ ﹏ ≦ 。 进入正题 T1 最优贸易简化版 解题方法: 分块 倍增 线段树 并查集 本次使用分块解决,其他方法见题目中的附件。 $n$ 个城市分布在一条直线上,从 $L$ 到 $R$ 获得最大利润时 $an 阅读全文
posted @ 2024-02-17 20:52 睡不醒的凪 阅读(14) 评论(0) 推荐(0)
摘要: 分块的思想就是将一大段数据分成若干个整段来达到快速维护和查询的效果。运用了懒标记的思想。 最简单的例子如题 一个简单的整数问题 #include <cstdio> #include <cmath> #define orz(i,a,b) for (int i = a;i <= b; i++) #def 阅读全文
posted @ 2024-02-17 20:52 睡不醒的凪 阅读(19) 评论(0) 推荐(0)
摘要: 树链剖分分为重链剖分和长链剖分 重链剖分 首先是重链剖分,树链剖分顾名思义是一种将代码大小增加1k树剖成一条条链的方法。 定义: 重儿子 该节点所有儿子中以该儿子为根的子树最大的儿子 重边 连接该节点与该节点的重儿子的那条边 重链 由根节点或一个轻儿子为链头一路重边连到叶子节点的链 总结一下就是将一 阅读全文
posted @ 2024-02-17 20:50 睡不醒的凪 阅读(16) 评论(0) 推荐(0)
摘要: 本题是非常非常非常纯粹的树剖,利用了重链剖分后下标的性质 不多说上代码就好了 #include <cstdio> #include <vector> #define ll long long using namespace std; const int N = 1e5 + 5; int n, m, 阅读全文
posted @ 2024-02-17 20:50 睡不醒的凪 阅读(18) 评论(0) 推荐(0)
摘要: 本题可以说是板题 P3384 的弱化版,只不过要改的变成了边权 边权很好处理,只需要将每个边的边权下放到两端点深度比较深的上面就好了(因为每个点连比它浅的节点必定只有一条边)。 那么就将模板改一下就好了 代码如下: #include <cstdio> using namespace std; con 阅读全文
posted @ 2024-02-17 20:49 睡不醒的凪 阅读(23) 评论(0) 推荐(0)