摘要:
深度优先搜索 小木棍 int cnt=0; bool dfs(int len,int now,int used,int last)//枚举的长度 现在拼的长度 使用的棍棒数量 { if((used==n)&&(now==len)) return 1; if(now==len) { int fail= 阅读全文
posted @ 2022-01-21 20:41
__iostream
阅读(32)
评论(0)
推荐(0)
摘要:
给定一个有向无环图,询问每个点可以到达点的数目. void toposort() { for(rint i=1;i<=n;i++) if(!deg[i]) q.push(i); while(!q.empty()) { int x=q.front(); q.pop(); f[x].set(x,1); 阅读全文
posted @ 2022-01-21 20:32
__iostream
阅读(34)
评论(0)
推荐(0)
摘要:
给定m个长度为n的序列 每个序列选一个数求和,求最小的n个 用堆来模拟搜索的过程 关键在于状态不重复 朴素写法: 用map来维护m个指针,判重 但是空间复杂度是$mn^2$的会爆 #include <iostream> #include <cstdio> #include <cstring> #in 阅读全文
posted @ 2022-01-21 20:24
__iostream
阅读(38)
评论(0)
推荐(0)
摘要:
哈夫曼树: 最小化权值与距离的乘积和 对于形如 \(min\{\sum w_i \times l_i\}\) 的形式,都可以考虑采用哈夫曼树来贪心 荷马史诗 哈夫曼树和trie树结合考察 两者有相似的性质, 并且满足哈夫曼树要求的条件 int main() { n=read(); k=read(); 阅读全文
posted @ 2022-01-21 19:07
__iostream
阅读(64)
评论(0)
推荐(0)
摘要:
每个商品有收益p和时限d 求时限内的最大收益 法一: 当从前向后贪心的时候 可能会出现反悔的情况 这样局部最优解和全局最优解有不一致. 为了解决反悔问题,我们可以采用倒序贪心的方式 int main() { while(scanf("%d",&n)!=EOF) { while(q.size()) q 阅读全文
posted @ 2022-01-21 19:06
__iostream
阅读(27)
评论(0)
推荐(0)
摘要:
给定一个序列 求其中最小的k个的和(这k个数任意两个不能相邻) 从k=2的时候出发: 发现要么选择最小的,要么选择最小元素两边的 用类似数学归纳的方式不断进行这种操作 设置一种反悔贪心 价值作为两边的价值减去中间的价值 #include <iostream> #include <cstdio> #i 阅读全文
posted @ 2022-01-21 19:03
__iostream
阅读(31)
评论(0)
推荐(0)

浙公网安备 33010602011771号