自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除