- 博客(24)
- 收藏
- 关注
原创 CCPC2019网络赛 array【后缀数组】【主席树】【线段树上二分】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6703#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)#define per(i, a, b) for(int i = (a); i >= (b); i++)#de...
2019-08-27 16:50:38 308
原创 Candies 【后缀数组】【主席树】
题目链接:https://vjudge.net/problem/Gym-102302K前置技能:后缀数组处理本质不同的字串。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)#define per(i, a, b) for(int i = (a); i >= ...
2019-08-27 16:42:42 181
原创 A+B>=K(?????)
A 的取值范围[l1,r1], B 的取值范围[l2,r2]。问有多少种取值方案满足A+B>=K。时间复杂度O(1)用对拍稍微验证了一下代码的正确性ll nb(ll l1,ll r1,ll l2,ll r2,ll k) { ll ans=0; ll lll=k-r1; ll rrr=k-l1; if(lll>r2)return an...
2019-08-22 08:34:16 427
原创 Make Rounddog Happy【序列分治+DP】
DP维护从某点 往后/往前 遇到的第一对非法点对。然后分治计数,合并的时候根据最大值是 由左区间贡献还是右区间贡献 来进行分类,注意去重。可以枚举左/右区间端点,这样即能固定最大值也能固定剩余区间的长度。复杂度O(NlogN)#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (...
2019-08-22 08:13:30 322
原创 Rikka with Travels【换根树dp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6686不写题解了,写不动还有其他简单的做法#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)#define per(i, a, b) for(int i = (a);...
2019-08-20 08:59:15 299 2
原创 Coprimes(从 i 位置往后第一个与其互质的数的位置)
bitset维护每个质因子出现的位置从后往前跑,每次找到一个位置使该数的所有质因子都没有出现过。把该数的所有质因子的bitset或起来,然后找从当前位置往后的第一个0位置。取反后用bitset的_Find_first函数可以解决。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i &...
2019-08-19 10:47:52 221
原创 Floyd求最小环模板
int val[maxn + 1][maxn + 1]; // 原图的邻接矩阵inline int floyd(const int &n) { static int dis[maxn + 1][maxn + 1]; // 最短路矩阵 for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) ...
2019-08-19 08:48:50 182
原创 最长道路tree【点分治】
题目链接:https://ruanx.pw/bzojch/p/2870.html?tdsourcetag=s_pcqq_aiomsg用map记录子树中每个最小路径长度的最大边长,定义map从大到小排序,然后用双指针的方法进行路径合并。#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>...
2019-08-17 08:44:14 180
原创 聪聪可可【点分治】
模板题题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2152求长度为3的倍数的路径条数#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/hash_policy.hpp>...
2019-08-16 21:01:17 118
原创 [Jsoi2009]有趣的游戏【概率DP】【AC自动机+高斯消元】
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1444首先构建AC自动机。然后问题就变成了经典问题:给一个有环图,0号点为起点,每条边有一定的概率去走,有若干个终点,到达终点后必须停止,问经过某一点的概率是多少。然后就可以用高斯消元解决了。(我怀疑这题数据水)#include<bits/stdc++...
2019-08-16 15:04:41 224
原创 圆桌问题【网络流24题】
题目链接:https://www.luogu.org/problem/P3254二分图最大流然后看一下残留网络就行了#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)#define pii pair<int,int>#define mp make...
2019-08-16 10:09:57 127
原创 数字梯形问题【网络流24题】【费用流】
题目链接:https://www.luogu.org/problem/P4013对于第一问把一个点拆成入点和出点,从入点到出点连一条容量1,费用0的边,表示每个点最多只能经过一次。从S连向第一层的各点的入点,容量1,费用为负的点权。从最后一层点的出点连向T,容量1,费用0。从各个点的出点连向下次能到达点的入点,容量1,费用为负的目标点点权。拆点保证点只经过一次,各边的容量1...
2019-08-16 09:31:02 136
原创 Acesrc and Travel【换根树dp】
考虑固定根(起点)情况下的最优解,可以用dp容易求出。考虑换根操作,假设当前根为u,需要换成v。(v是以1为根情况下u的子节点)那么需要保证v->u后,u不能再返回v,所以需要记录最优值和次优值。当发现u的最优值不经过v,用最优值对v进行转移,否则用次优值进行转移。基本做法就是这样,但是在实际写代码的过程中,发现了2种需要特判的情况。第一种:在写dfs2时发现u没有次优解...
2019-08-15 10:05:37 220
原创 菜菜种菜 Comet OJ - Contest #8
题目链接:https://cometoj.com/contest/58/problem/D?problem_id=2758对于第i个点,记录他左右距离最近的直接到达点的编号,分别为le[i]和ri[i]。当且仅当询问区间[L,R] ,满足 L<=i&&R >=i &&L>le[i]&& R< ri[i] 时第i号节点会...
2019-08-10 09:47:28 196
原创 You Are Given Some Strings...【AC自动机】
题目链接:http://codeforces.com/contest/1202/problem/E枚举文本串的每个位置,计算以该位置为结尾可以匹配多少个模式串,再计算以下一位置为起点能匹配多少模式串,相乘累加作为答案。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)...
2019-08-10 08:25:15 584
原创 负载平衡问题【网络流24题】【流量平衡】
题目链接:https://www.luogu.org/problem/P4016首先,每个点最终都会变成平均值。计原值为s[i],平均值为aver。那么计算一下每个点与平均值的差,如果差为正,说明这个点有一些多余的货物可以给相邻的点,我们称这样的点为“小源点”。但是这样的点很多,在网络流模型里只有一个源点,所以我们就建立一个超级源点S。S连向所有这些“小源点”,容量为|s[i]-a...
2019-08-06 21:19:21 514
原创 运输问题【网络流24题】
题目链接:https://www.luogu.org/problem/P4015最小/最大费用模板题// luogu-judger-enable-o2#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)using namespace std;const int N...
2019-08-06 17:01:33 160
原创 骑士共存问题【网络流24题】
题目链接:https://www.luogu.org/problem/P3355首先,攻击关系不会出现奇环,所以可以对棋盘进行二分染色。然后就和方格取数那个题一样了。S连每个黑,边权为1.每个黑连其能攻击的点,边权为inf。每个白连T,边权为1。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = ...
2019-08-06 16:39:04 128
原创 分配问题【网络流24题】
题目链接:https://www.luogu.org/problem/P4014沙雕题,建图很简单。跑一遍最小费用,再把边权取反重跑一遍最小费用。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= (b); i++)using namespace std;const int N...
2019-08-06 15:16:49 241
原创 方格取数问题【网络流24题】
题目链接:https://www.luogu.org/problem/P2774最小割建图。先对格子分为黑白格,类似国际象棋。然后S连黑,边权为黑点点权。每个黑连周围4个白,边权为inf。每个白连T,边权为白点点权。#include <bits/stdc++.h>#define rep(i, a, b) for(int i = (a); i <= ...
2019-08-06 14:44:28 194
原创 K-Inversions【FFT】
题目链接:https://vjudge.net/problem/Gym-101002E#include <bits/stdc++.h>using namespace std;const double PI = acos(-1.0);struct Complex { double x, y; Complex(double _x=0.0,double _y =...
2019-08-03 09:28:55 242
原创 [HNOI2013]游走 【概率dp+高斯消元】
题目链接:https://www.luogu.org/problem/P3232参考题解:http://old.orzsiyuan.com/articles/problem-HNOI-2013-Walk/首先考虑求每条边的经过次数的期望,给期望经过次数多的边分配小编号。边的期望经过次数可以由点的经过次数推出。设dp[i]为i节点的期望经过次数,out[i]为i节点的出度。那么对...
2019-08-01 21:23:30 149
原创 Rating【概率dp+高斯消元】
题目链接:https://vjudge.net/problem/HDU-4870将问题转换为每次可能+1分,-2分,目标到达20分。且最终状态一定是一个账号19分,另一个账号20分。因为期望的线性性,所以可以对两个账号分别计算期望,然后求和。dp[u]表示以u分开始,到达20分的期望比赛场数,那么有dp[u] = p*(dp[u+1]+1) + (1-p)*(dp[u-2]+1)...
2019-08-01 15:26:29 327
原创 飞行棋【概率dp+高斯消元+矩阵快速幂】
题目链接:https://cometoj.com/contest/59/problem/E输入包含两个正整数d和k,分别代表璇璇的棋子到终点的距离d以及骰子的面数 。首先考虑一般情况下的状态转移方程, dp[u]表示以u为起点,到终点的期望步数。显然 dp[d] = 0 ,dp[0]为最终答案。然后我们发现当u+i > d的时候会从 d-(u+i-...
2019-08-01 09:42:33 448
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人