摘要:
课代表笔记https://www.acwing.com/file_system/file/content/whole/index/content/1120024/ 主要复习下空间复杂度,之后会用到 基础的单位换算 每个0, 1 是 1 位 1 字节 (Byte) = 8 位 (bit) 1 KB = 阅读全文
posted @ 2020-08-21 18:39
kyk333
阅读(240)
评论(0)
推荐(0)
摘要:
样例解释:用方块表示牛 题目意思就是,我们要安排一个从上到下的顺序,使得牛按照这个顺序叠高高 然后使得所有牛的危险系数的最大值最小 每个牛的危险系数 = 它上面所有牛的重量w之和 减去 它自己的强壮值s 证明: 首先有成立 然后需要证明,用反证法:假设最优解不是按照wi + si从小到大排序的 那么 阅读全文
posted @ 2020-08-21 17:46
kyk333
阅读(343)
评论(0)
推荐(0)
摘要:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 100010; 4 int n; 5 int a[N]; 6 int main() { 7 cin >> n; 8 for (int i = 0; i < n; i++ 阅读全文
posted @ 2020-08-21 16:46
kyk333
阅读(141)
评论(0)
推荐(0)
摘要:
贪心思路:让最麻利的人最先打水 注意是求总等待时间最短,是等待时间 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N = 100010; 5 int t[N]; 6 int 阅读全文
posted @ 2020-08-21 16:17
kyk333
阅读(163)
评论(0)
推荐(0)
摘要:
经典的Huffman树问题 样例用树表示出来就是这样 Huffman树一定是一个完全二叉树,每一个节点一定有俩儿子,叶子节点除外,不存在只有一个儿子的情况 所有叶子节点就是需要合并的节点 总消耗就是 贪心思路:每次挑选出来最小的两个合并,直到合并到一堆为止 1 #include <bits/stdc 阅读全文
posted @ 2020-08-21 15:50
kyk333
阅读(116)
评论(0)
推荐(0)
摘要:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 100010; 4 struct Range { 5 int l, r; 6 } range[N]; 7 bool cmp(Range r1, Range r2) { 阅读全文
posted @ 2020-08-21 15:30
kyk333
阅读(156)
评论(0)
推荐(0)
摘要:
用堆来维护每个组的max_r 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 100010; 4 struct Range { 5 int l, r; 6 } range[N]; 7 bool cmp(Range r 阅读全文
posted @ 2020-08-21 14:52
kyk333
阅读(220)
评论(0)
推荐(0)
摘要:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 100010; 4 struct Range { 5 int l, r; 6 } range[N]; 7 bool cmp(Range r1, Range r2) { 阅读全文
posted @ 2020-08-21 12:42
kyk333
阅读(268)
评论(0)
推荐(0)
摘要:
区间问题一般都需要对区间进行排序,对左端点排序,或对右端点排序,或双关键字排序 然后需要证明这样的选法选出来的点数一定是符合答案的,且是选点最少的 首先按照这个方法来选的话,每一个区间上一定选了一个点,所以这种选法是一种合法的方案 然后这道题的最优解是指所有合法方案中的选点最少的,所以 所以ans 阅读全文
posted @ 2020-08-21 12:16
kyk333
阅读(403)
评论(0)
推荐(0)
摘要:
进阶版的SG函数 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 110; 4 int n; 5 int f[N]; //sg的值 6 int sg(int x) { 7 if (f[x] != -1) { 8 re 阅读全文
posted @ 2020-08-21 11:26
kyk333
阅读(258)
评论(0)
推荐(0)
摘要:
SG(x) = 0,必败 SG(x) != 0,必胜 如果是多张图的话 石子堆数是10000,所以一共是10000个状态,枚举集合的个数是100 时间复杂度就是1e6 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 阅读全文
posted @ 2020-08-21 11:25
kyk333
阅读(200)
评论(0)
推荐(0)
摘要:
如果奇数级台阶上的石子数异或和不等于0,先手必胜 如果奇数级台阶上的石子数异或和等于0,先手必败 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int n; 5 cin >> n; 6 int res = 0; 阅读全文
posted @ 2020-08-21 11:23
kyk333
阅读(113)
评论(0)
推荐(0)
摘要:
先手必胜状态:可以走到某一个必败状态 先手必败状态:走不到任何一个必败状态 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int n; 5 cin >> n; 6 int res = 0; 7 while (n- 阅读全文
posted @ 2020-08-21 11:22
kyk333
阅读(112)
评论(0)
推荐(0)
摘要:
所以一共会有2 ^ n项,时间复杂度O(2 ^ n) 用容斥原理来做的话,时间复杂度就是2 ^ 16 * 16 用位运算来枚举所有情况,从1枚举到2 ^ n - 1 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long lo 阅读全文
posted @ 2020-08-21 11:19
kyk333
阅读(230)
评论(0)
推荐(0)

浙公网安备 33010602011771号