自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KGV093的博客

Revelations and heartaches, make you realize.

  • 博客(17)
  • 收藏
  • 关注

原创 Codeforces 1324F Maximum White Subtree(树形dp)

传送门题意:给一棵n个点的已黑白染色的图,对于每个点,求出一个包含它的,白点个数与黑点个数差值最大的连通图题解:定义f[p]表示p点的子树(题目中的"subtree"其实是连通图而非子树)内包含p点的白点个数与黑点个数差值最大值。从下往上更新f值,如果S是p的儿子集合,那么定义g[p]表示p点往上能拓展的连通图白点个数与黑点个数差值最大值,定义ans[p]=f[p]+g[p]。从上往下更新g值,如果v是p的儿子,那么相当于用父亲节点的答案减去当前点子树的贡献。#include&

2020-06-30 18:29:48 233

原创 Codeforces 839C Journey(期望dp)

传送门题意:给一棵大小为n,边长都为1的树,从1号点开始每次等概率地走向某个非父节点,走到叶节点为止,求走的长度的期望。题解:定义f[x]为从x出发走到不能再走的期望,dfs一次,用子节点更新父节点即可。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long ll;const

2020-06-29 18:09:23 223

原创 Codeforces 1336A Linova and Kingdom(树上贪心)

传送门题意:一棵大小为n的有根树上,要求将K个节点设为工业城市,其余为旅游城市。只有工业城市对总收益有贡献且每个工业城市的贡献为从它到根的路径上旅游节点的个数。求合理安置K个工业城市后最大化的收益。题解:这就是传说中的“正难则反”吗...如果考虑贪心地安放工业城市,那安排完最深的点之后,先安排其他子树中较深的点?还是安排当前子树中次深的点?这个似乎无法确定。所以先默认所有点是工业城市,尝试贪心地安放旅游城市。引理:如果x点是旅游城市,那么它的父节点一定是旅游城市。否则两者交换一下一定更优

2020-06-29 11:22:35 392

原创 待填的算法坑--

分块字符串(KMP,Manachar,AC自动机......)博弈论......

2020-06-28 16:57:25 193

原创 AtCoder Beginner Contest 172 总结

颓了三天端午回来打比赛感觉,还是秒切前几道水题但做不动后面的难题。前四题思路都比较简单,C枚举一个数组的前缀和并用差值在另外一个数组里二分查找,D可以线性筛约数个数函数然后暴力算,也可以分析每个数的贡献来搞,复杂度都为O(n)。E没有做出来是真的不爽,只想到了先考虑A,枚举一个排列,A确定以后对B的计算方式确实没有想到。看了题解说的容斥原理恍然大悟。先不考虑A算B有多少种排法(也是),然后减去至少有一位与A相同的排法(),再加回来至少两位与A相同的排法()......当年搞OI时数学的薄弱板块容

2020-06-28 14:25:45 1113

原创 Coursera “机器学习 - Andrew Ng”(前7.5周)总结

有幸在旷视科技的大佬推荐下自学吴恩达(Andrew Ng)的机器学习课,小小地总结一下最近都学了点啥~Week 11. 单变量线性回归(Linear Regression with One Variable)2. 梯度下降法(Gradient Descent)3. 线性代数相关介绍(矩乘、求逆、转置)Week 21. 多变量线性回归(Multivariate Linear Regression)2. 正规方程法(Normal Equation)3. Octave/Matlab

2020-06-24 10:41:27 247

原创 AtCoder Beginner Contest 171 总结

比上次多做了一道,但排名退了600,确实题比较水......ABCDE几乎都算水题,C是一个类似秦九韶算法的东西,在26进制下搞一下即可,第一波搞忘减去余数还WA了......D利用“同一个数跟自己异或偶数次为0”的性质也很容易整出来,说一下F这道计数题。题意很简单,问在一个给定的长为m的原字符串的基础上插入(可以插在串头和串尾)n个新字符能得到多少种新串,要做到不重复计数有一定难度。最直接的思路就是n+m个位置上选m个位置放入原字符串的字符然后剩下的随便填,但很容易发现这么算会算重,比如aab

2020-06-22 12:09:50 446

原创 Luogu 3386(二分图最大匹配)(模板)

传送门匈牙利算法讲解参考此博客对于左侧V个节点,E条边的二分图,复杂度为#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=5e2+4;const int M=5e4+4;int n1,n2,m;struct Edge { int v,nxt;}e[M<<1];i

2020-06-17 18:18:37 266

原创 AtCoder Beginner Contest 170 总结

比赛中只A了四道...E题由于不熟悉set和multiset操作导致花了整个下半场调试都始终无法拯救WA的一个点,赛后发现是multiset的erase操作如果是erase一个值就会将multiset中所有这个值都erase掉而非只删掉1个......这回惨痛的教训也该刻骨铭心了QAQ......F题暴力建边(边长为1-k)居然几十毫秒就能A,比按题解写的快了整整30倍......不过题解给的思路还是相当值得学习,每走一步如果方向不变则消耗1/k,转向时则把距离向上取整,可以避免去讨论走1/k还是1

2020-06-15 18:25:10 207

原创 Luogu 1429(平面最近点对)(模板)

传送门O(nlogn)算法详解参考此博客时间复杂度证明参考此博客#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=2e5+4;const double INF=1e100;int n;struct Point { double x,y

2020-06-09 12:19:37 168

原创 hdu 1006 Tick and Tick(枚举)

传送门题意:求一天当中有百分之多少时间满足时针、分针、秒针两两所成角度不小于n度(所成角度不大于180度)题解:第一次写直接将时间离散化处理,跑完样例才发现这样只能求得近似解(比如当n=90时答案始终有误差),因为每一段满足条件的时间段的起始时间和终止时间都不一定是1秒的整数倍。所以考虑两两时针在一次重合和下一次重合这个周期内有多少时间段满足所成角度不小于n度,用三重循环(三根针两两组合有三种组合)枚举这些时间段,计算被三种时间段都覆盖一次的子段,每次答案加上这样的子段的终止时间与起始时间之差即可。

2020-06-08 17:57:49 229

原创 Luogu 1495(中国剩余定理)(模板)

传送门题意:给定数组m[N]和r[N],求一个最小的正整数x满足x%m[i]=r[i](已知对于任意i, j保证mi, mj互质)题解:模数互质的中国剩余定理模板题,下面的图文引用自该博客设正整数两两互素,则同余方程组有整数解。并且在模下的解是唯一的,解为其中,而为模的逆元。#include<cstdio>#include<cstrin...

2020-06-03 15:22:22 176 2

原创 hdu 4812 D Tree(点分治)

传送门题意:询问一棵树上是否存在点对满足这两个点的最短路径上所有点的点权之积mod M之后等于K。若存在,则输出满足条件的字典序最小的一对点。已知M=1e6+3。题解:一般询问树上是否存在某种“合法”路径,可以考虑点分治。如果一对点(u,v)满足,设当前重心为p,链[u,p)的点权之积为a,链[v,p)的点权之积为b,则,则。对于每个重心,相当于用某棵子树中的点与其他子树中的点匹配,用cov数组记录一下可以匹配到的点的最小编号即可。(因为M不大,所以逆元可以递推存到inv数组)注意:1. b

2020-06-03 13:32:37 195

原创 hdu 5015 233 Matrix(矩阵快速幂)

传送门题意:矩阵横排第0行初始是0,233,2333,23333...,通项公式为a[i][j] = a[i - 1][j] + a[i][j - 1],给出了n,m以及第0列的各值,求a[n][m]的值。题解:因为m很大,所以无法逐项递推,再看一眼n不超过10(多半要写成向量整体算),可以猜到矩阵快速幂。以case 2为例,如图构矩阵(活生生给做成一道线代题......)#include<cstdio>#include<cstring>#include&l

2020-06-02 18:35:35 216

原创 POJ 3070 Fibonacci(矩阵快速幂)(模板)

传送门题意:求斐波那契数列的第n项,但是n很大,达到1e9题解:由于n很大,所以不能逐项递推,采用矩阵快速幂加速递推,如图#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MOD=1e4;int n;struct Matrix { int v[2][2]; Matrix ()

2020-06-02 17:49:09 198

原创 POJ 1061 青蛙的约会(扩展欧几里得)(模板)

传送门题意:在一条首尾相接的纬度线上,青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。题解:设要跳x次,那么...

2020-06-02 17:41:33 218

原创 POJ 1741(点分治)(模板)

传送门题意:统计树上距离不超过K的点对数量题解:点分治,求树的重心,统计有多少条经过重心的合法路径,再对子树进行相同操作(递归处理),总复杂度O(nlog(n)log(n))。为什么是这个复杂度?因为以重心为根的树至少有两棵子树,所以分治的层数不超过log(n)。每次统计时,设当前树的大小为size,那么排序的复杂度为size*log(size),双指针扫描为size,所以复杂度取size*log(size)。每一层分治的总复杂度为,所以整个算法复杂度为nlog(n)log(n)。注意点:1

2020-06-01 14:48:56 312 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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