1 #include <stdio.h> 2 #include <string.h> 3 #define N 50 //叶子结点数 4 #define M 2*N-1 //树中结点总数 5 typedef struct 6 { 7 char data[5]; //结点值 8 int weight; ...
分类:
编程语言 时间:
2020-04-29 12:51:44
阅读次数:
71
LINK: "Multiple Testcases" 得到很多种做法。其中O(n)的做法值得一提。 容易想到二分答案 check的时候发现不太清楚分配的策略。 需要先考虑如何分配 容易发现大的东西会对小的产生影响 而 对于某个能放的位置 我们放大的一定比小的要优。所以为了防止出现对小的影响到了需要调 ...
分类:
其他好文 时间:
2020-04-28 20:10:56
阅读次数:
61
直接判断分成x组能否满足,从大到小平均分是最合理的方案 #include<bits/stdc++.h> using namespace std; #define N 200006 int suf[N],n,k,m[N],c[N]; vector<int>v[N]; long long t[N]; i ...
分类:
其他好文 时间:
2020-04-28 15:14:45
阅读次数:
85
感觉dp状态还是挺不容易想到的 /* dp[i][j]表示后i个数用j根火柴棒是否可行 mp[i][j]表示第i个字符变成j需要多少根火柴棒求答案时从高位到低位贪心 */ #include<bits/stdc++.h> using namespace std; #define N 4005 int ...
分类:
其他好文 时间:
2020-04-28 15:14:29
阅读次数:
56
A 先构造最左方案,然后能调整尽量调整即可。 时间复杂度 $O(m)$. 代码: "75367082" B 显然每个二进制位是独立的,且只能有 $0$ 个或 $1$ 个数在该位上有值。乘起来即可。 时间复杂度 $O(\log n)$. 代码: "75373134" C 贪心。每次删去能删的尽量大的( ...
分类:
其他好文 时间:
2020-04-27 19:36:56
阅读次数:
46
分析: $dfs$ 剪枝+贪心。 如果用记忆化搜索,应该可以保证时间复杂度更优。 "传送门" 代码: ...
分类:
其他好文 时间:
2020-04-27 15:03:35
阅读次数:
64
/**乘船问题:有n个人,第i个人重量为wi。每艘船的最大载重量均为C,且最多只能乘两个人。用最少的船装载所有人。贪心策略:考虑最轻的人i,如果每个人都无法和他一起坐船(重量和超过C),则唯一的方案是每个人坐一艘否则,他应该选择能和他一起坐船的人中最重的一个j求需要船的数量 */ 思路:先把每艘船的 ...
分类:
其他好文 时间:
2020-04-27 13:43:49
阅读次数:
127
CF1303D 题目大意: 有一个大小为n的背包,有m个大小为2i(i=0,1,2,3...)的物品,并且每个物品可以分成大小相同的两份,可以一直分成到大小为1为止,问能否用这些物品把背包恰好填满,如果能填满,输出拆分物品的最小次数。 解题思路: 通过二进制的方法,从高位到低位贪心的一位一位处理。 ...
分类:
其他好文 时间:
2020-04-27 09:23:54
阅读次数:
52
"Beautiful Now" 题意 给出一个最大为10^9的数字n,以及一个k,你最多交换n中任意两个位置的数字k次,问形成的最大数字和最小数字。 思路 看到这题,我靠这题暴力交换一下,不难啊,咋没人做。。 后来发现是我菜了,贪心写完成功WA了,比如这个样例970970 2,最小值不对。 正解是暴 ...
分类:
其他好文 时间:
2020-04-25 16:56:44
阅读次数:
57
贪心算法 思路 所谓贪心算法就是我们在寻找整体最优解的情况下,先找到局部最优解。 例如: 12 可以多种组合表示 12 = 10 + 1 + 1 -> XII 12 = 9 + 1 + 1 + 1 -> IXIII 12 = 5 + 5 + 1 + 1 -> VVII 12 = 5 + 4 + 1 ...
分类:
其他好文 时间:
2020-04-25 12:39:01
阅读次数:
76