![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《算法竞赛进阶指南》
目标:10月之前做一遍,之后有时间把不会的再做一遍.
Chemin Du Retour
这个作者很懒,什么都没留下…
展开
-
dfs 木棒
木棒 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序,帮助乔治计算木棒的可能最小长度。 每一节木棍的长度都用大于零的整数表示。 dfs(int num , int length, int last) //现在是第几根大木头,这根木头现在的长度,当下枚举第几根小木头 剪枝 : 1)如果大木头完了,return true; 2)如果长度到了,dfs下一根木头原创 2020-08-27 18:42:28 · 127 阅读 · 0 评论 -
二分
板子 int erfen(int l,int r){ while(l < r){ int mid = l + r >> 1; if(check(mid))r = mid; else l = mid + 1; } return l; } while(r - l > 1e-5){ double mid = (l+r)/2; if(check(mid))l = mid; else r = mid; } 最佳牛围栏 一个数组中找到原创 2020-08-18 00:06:37 · 125 阅读 · 0 评论 -
前缀和-差分
激光炸弹 题意:地图上有很多个点上有价值,一个炸弹掉落能摧毁R*R的方块,问最大能摧毁多少价值. 求一遍二维前缀和然后扫一遍就行了 int sum[5050][5050]; int n,r; int main(){ cin >> n >> r; memset(sum,0,sizeof(sum)); int nn = r,mm = r; while(n--){ int a,b,c; cin >> a >> b >> c;原创 2020-08-16 22:23:04 · 101 阅读 · 0 评论 -
0x20 拓扑排序,bitset
164. 可达性统计 拓扑排序,链式前向星,bitset 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 const int N = 30020; int n,m; struct Edge{ int to,next; //to:终点 next:下一条边对应的cnt值 head[]起点 }edge[N]; int head[N],cnt; int in[N],seq[N]; //拓扑排序后的序列 bitset<N>f[N]; void add(原创 2020-08-14 22:05:49 · 81 阅读 · 0 评论