- 博客(10)
- 收藏
- 关注
原创 割点模板啦
割点模板 0 likes, on 2019-09-13 17:00:46, in未分类 #include<iostream> #include<cstdio> #include<stdio.h> using namespace std; int root,tot=0; int first[201001],to[201001],next[201001]; int tt=0,ans=0; int dfn[30001],low[30001]; bool vis[3000.
2022-01-26 21:20:56 360 1
原创 tarjan
tarjan 0 likes, on 2019-11-16 23:47:43, in未分类 求强联通分量的个数 #include<iostream> #include<stack> #include<cstdio> #include<algorithm> using namespace std; int n,m,a,b; stack<int>s; int tot=0,head[10012],to[10212],next[20120]; .
2022-01-26 21:20:14 237
原创 图论--最小生成树
kruskal #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,m; int k=0,tot=0; int fa[100012]; struct str{ int from,to,dis;//起点,终点,边的权值 }map[200012]; bool comdis(str a,str b) { return a.dis<b.
2022-01-26 21:19:09 166
原创 图论--最短路
dijkstra /*将顶点分为两个集合:已求得最短距离的集合1,待求集合2。 (1) 在集合2中找一个到start距离最近的顶点k : min{d[k]} (2) 把顶点k加到集合1中,同时检查集合2中的剩余顶点j的d[j]是否 经过k后变短,如果变短修改d[j]。 if ( d[k]+a[k][j]<d[j] ) d[j]=d[k]+a[k][j] (3) 重复(1)和(2),直至集合2空为止。*/ //不能处理负边,也不能处理负权回路 #include<iostream>
2022-01-26 21:18:38 349
原创 (保安站岗)树形DP板子
状态转移方程1: f[t][0]:如果这个节点被控制并且有一个守卫,那么这个节点的代价 就是 f[t][0] += min(f[v][0], min(f[v][1], f[v][2])); 因为这个点已经被控制了,已经是妈祖要求的了,所以对于他的儿子已经没有要求了在儿子的 3中选择中取min 状态转移方程式2: f[t]2对于根节点的儿子的情况一定是f[v][1],(因为要求的是每一个点必须被覆盖,扫到t这一个节点时会发现这个 t节点没有被任何儿子节点覆盖,因此儿子节点一定是f[v][1]的情况,反正若.
2022-01-26 21:17:54 164
原创 切蛋糕4 likes in 二分答案,剪枝优化
给定m个人和n块蛋糕 首先是需要先sort一遍把人的嘴的大小拍一遍序,如果是我,的话,用有限的蛋糕,满足的更多的人,我会选择满足 嘴巴小的人 所以先sort一遍,把所有的人的嘴巴排序一遍,二分答案 WDC:二分的作用是先假定我可以满足x个人的嘴巴,每一次二分出一个答案后,都要对答案进行验证 而DFS、深搜的目的就是验证二分的区域对不对 根据二分答案的大,小来不断更新右边界,左边界直到找到一个确切的值 对于Dfs, operate: 1.先要维护一下目前的蛋糕的数量总共的大小 2.在维护目前的人的嘴的总
2022-01-26 21:16:06 907
原创 P1020
#include<iostream> #include<cstdio> using namespace std; int n=0;//n是用来计数总的个数 int a[100050]; int low[100050]; int d=0;//d是长度 int find(int x) { int l=1,r=d,mid; while(l<r) { mid=(l+r)/2; if(x<=low[mid]) .
2022-01-26 21:14:24 78
原创 树状数组 (及其应用~~~)
菜鸡冒泡~~ 有锅请各位dalao指出 ~~first of all 先交代故事发生的背景......... 关于lowbit的函数介绍(so easy) lowbit是找最后一位是一的位数 ●在计算机中,负数的存储为(以八进制为例,-10 就是10001010※第一位是符号位 对于正数来说,原码,反码,补码都是同一个,对于负数来说,反码就是除去符号位以外,其余的取反 补码是反码最后加一,(加爆了也不用管,加就是了)) ●按位& 例如1&1=1,是两边同时满足才可以 ●一个数和他的相.
2022-01-26 21:09:09 151
原创 导弹拦截的(题解)
各位dalao~ ~~有锅莫喷orz..... 贴AC代码 #include<iostream> #include<cstdio> using namespace std; int n=0;//n是用来计数总的个数 int a[100050]; int low[100050]; int d=0;//d是长度 int find(int x) { int l=1,r=d,mid; while(l<r) { mid=(l+r)/2;
2022-01-26 21:03:46 412
原创 C++语言(单源最短路)
只有一丢~的代码(附加一些不知道对不对的口胡) 至于图吗,,,,,我想后期我会补上~只是我想~~~~ 先贴上 #include<iostream> #include<cstdio> #include<string.h> #define Tnf 2147483647 /* fist[一个点x]=边 表示x这个点连接的第一条边是谁 next[一条边mm]=边kk 表示mm这条边连接的下一条边的名字叫kk to[一条边xx]=一个点y1 表示xx这条边连向的点是y1
2022-01-06 09:56:10 464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人