- 博客(144)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 各种模板总结
树链剖分模板const int maxn = 100000 + 5; //树中节点个数//边集struct Edge{ int v,pre,c;}Es[maxn * 2];int head[maxn],TOT_EDGE;void INIT_EDGE(){ //边集初始化 memset(head,-1,sizeof head)
2016-09-26 13:10:19
479
原创 Windows核心编程 第八章 读书笔记
抢占式操作系统:操作系统可以在线程运行的任何时刻挂起当前线程,转而去执行其他线程;线程的挂起和恢复线程的内核对象结构体中有一个成员线程挂起计数,用来表示需要挂起线程的投票数。只有线程挂起计数为0,线程才能够被调度。如何创建处于挂起状态的线程使用函数CreateThread时,将标志CREATE_SUSPENED能够在创建线程之后,线程就是处于被挂起的状态。挂起和恢复函数...
2018-12-12 14:26:15
235
原创 POJ 1006 Biorhythms 中国剩余定理
题目链接:http://poj.org/problem?id=1006 直接套板子 代码://#include <bits/stdc++.h>#include <cstdio>#include <cstring>using namespace std;int A[10],B[10];//扩展欧几里得算法int Extended_Euclid(int a,int b,int &x,int
2016-12-07 22:45:45
425
原创 HDU 4804 Campus Design 轮廓线DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4804分情况讨论: 1.枚举的点上有障碍物,那么上一个阶段的状态,在这个点上面的格子一定有被填充 2.枚举的点上没有障碍物 a.这个格子不放,那么上一个阶段的状态上,这个点上面的格子一定有被填充 b.这个格子放1 * 1的物体,那么上一个阶段的状态,这个格子的上面也是被填充 c.这个格子横着放1
2016-12-07 15:20:22
441
原创 HDU 4812 D Tree 点分治 + 逆元
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5977题目要求在树上找到一条链使得这条链上的点的乘积模mod等于k,求链首尾字典序最小的一条看到题目就能知道是一个点分治的题目,将树按照重心分治之后,就是要统计以重心为根的子树中,过树根的mod为k的链字典序最小的一条,这里的统计必需是在时间复杂度O(n) 以下才能过 代码:#pragma commen
2016-12-07 13:02:08
390
原创 HDU 4123 Bob’s Race 树形DP + RMQ
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123代码://#include <bits/stdc++.h>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int maxn = 50000 + 5;int max(int a,int
2016-12-05 16:55:27
424
原创 HDU 4821 String 字符串HASH
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4821代码:#include <bits/stdc++.h>using namespace std;typedef unsigned long long ULL;const int maxn = 100000 + 50;const ULL seed = 131;ULL HASH[maxn],BAS
2016-12-05 14:13:07
356
原创 POJ 1195 Mobile phones 二维线段树
题目连接:http://poj.org/problem?id=1195 二维线段树 单点更新 区间查询 代码:#include <cstdio>#include <cstring>using namespace std;const int maxn = 1000 + 50;int sum[4 * maxn][4 * maxn];#define lson rt << 1,l,mid#d
2016-12-04 16:22:05
395
原创 UVA 11270 Tiling Dominoes 轮廓线DP
题目连接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2245轮廓线DP 裸题#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxst =
2016-12-02 11:40:07
366
原创 后缀自动机 资料
陈立杰PPT: http://wenku.baidu.com/link?url=2CDDM8I1v6eCOwDUTn81mb56cj7rS8b0TpJ0egjb7gmUxnvO9oMRfttEsolf3rJw-lbHoUQ4c_ub2wbQB-yQQa1GU7TZxtAN5LvPfGXGej3范爷博客: http://fanhq666.blog.163.com/blog/static/81943
2016-11-10 10:59:16
360
原创 Vijos 1966 夜夜的旅游计划 高斯消元
题目链接:https://vijos.org/p/1966代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 200 + 5;const double eps = 1e-7;double adj[maxn][maxn];typedef double
2016-11-08 14:42:53
425
原创 BZOJ 3143 游走 高斯消元
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3143中文题目。 F(v) 表示小Z在图上游走时,在v点走的次数 这样就可以根据图上的链接关系 构造出N个方程在求解既可代码:#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using n
2016-11-05 18:30:21
308
原创 HDU 5833 Zhu and 772002 高斯消元
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5833 题意:给你N个数,取其中K个数相乘,问有多少种选择方法似的乘机为一个完全平方数对每一个因子做一个方程,要求对方程组 高斯消元, 有唯一解方案数为0(因为所有的数都不选得到的一定是一个完全平方数) 方程有多解,假设自由变元有K个那么方案数为2的K次方 - 1(减去全都不选的方案)代码:#inc
2016-11-04 19:04:13
297
原创 POJ 1681 Painter's Problem 高斯消元 枚举自由变量
题目链接:http://poj.org/problem?id=1681和POJ 1753 一样代码:#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#define sf scanf#define pf printfusing namespace std;const int maxn =
2016-11-04 18:14:08
435
原创 POJ 1753 Flip Game 高斯消元 枚举自由变量
题目链接:http://poj.org/problem?id=1753构造号方程之后,先判断是否有解,之后在位运算枚举自由变量的值代码:#include <cstdio>#include <algorithm>#include <cstring>#define pf printf#define sf scanfusing namespace std;const int maxn = 20,
2016-11-04 18:12:09
443
转载 高斯消元法,高斯约旦消元法
1、高斯消元法的算法(设akk(k)不等于0)将非零阵A=(aij)m×n,经过行初等变化,变为上三角矩阵。步骤:当m>n 当m当m=n 例1A= 此方法常用于解线性方程组和矩阵的秩的计算。如例1中矩阵A的秩r(A)=3。2、高斯约旦消元法的算法
2016-11-04 15:57:20
1906
原创 CodeForces 570C Replacement 线段树
题目链接:http://codeforces.com/problemset/problem/570/C单点更新区间的状态,并记录下每一个子区间左边,右边有多少个’.’,合并的时候要注意一下就可以了代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 300
2016-11-04 15:03:49
328
原创 CodeForces 459D Pashmak and Parmida's problem 树状数组 + 离散化
题目链接:http://codeforces.com/problemset/problem/459/D将序列离散化之后,很方便就可以处理出f值 逆序将后缀F值加入树状数组中,同时更新ans值代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;typedef long long LL;
2016-11-04 14:59:46
378
原创 POJ 1830 开关问题 高斯消元求自由变元
题目链接:http://poj.org/problem?id=1830代码:#include <algorithm>#include <cstdio>#include <cstring>#define sf scanf#define pf printfusing namespace std;const int maxn = 50;typedef int Matrix[maxn][max
2016-11-03 10:08:53
324
原创 HDU 3415 Max Sum of Max-K-sub-sequence 单调队列
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3415 题意:求序列中长度不大于k的连续子序列的最大和使多少 我们可以用ANS[i] 表示 以第i个数为右边界的一个K区间的最大和的值 那么有方程 显然这里可以用一个长度为k的单调递增队列来维护最小值代码:#include <bits/stdc++.h>#define sf scanf#def
2016-11-02 21:15:19
308
原创 FZU 1894 志愿者选拔 单调队列
题目连接: http://acm.fzu.edu.cn/problem.php?pid=1894有出队入、队操作,查找最大值 操作直接用单调队列模拟代码:#include <cstdio>#define sf scanf#define pf printfusing namespace std;const int maxn = 1000000 + 5;int q[maxn],v[maxn];
2016-11-02 21:08:38
380
原创 POJ 1222 EXTENDED LIGHTS OUT 高斯消元
题目连接:http://poj.org/problem?id=1222 题意:一个矩阵上有灯,问怎么才能将矩阵上的所有的等都消掉我们假设Xi表示第i个按钮按还是不按,那么对于一个灯可以得到这样的一个方程 p表示对第i个灯的影响 L表示第i个等的状态 例如 对于第1个灯 p1 p2 p7 等于1 之后对这30个方程进行高斯消元既可看大佬代码写的版本://#include <bits/std
2016-11-02 19:56:12
315
原创 HDU 5945 Fxx and game 单调队列优化DP
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5945题意:数x, 1.如果x%k == 0 ,那么可以对x除以k 2.对x减去包括t以内的任意一个数 问多少步操作能使x变为0dp[j] 表示 j最少能在多少步以内达到1 那么有转移公式 1. 2. 第一个转移方程可以用一个单调递增队列来维护 这样总的复杂度就是O(X)的了代码:#inc
2016-11-02 17:26:08
303
原创 HDU 4003 Find Metal Mineral 树上分组背包
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 题意:一颗有根树N个节点的树和K个机器人,问把所有点都走到的最小花费树上分组背包问题这道题有一个要求就是这个机器人走完一颗树之后,还是可以回到树的根节点的,但也可以又机器人走这颗子树后不回到树根。 但是我们只要仔细的分析一下就可以看出来,假如一颗子树存在又机器人进去后又走回到树根,那么这个树只
2016-10-31 18:08:52
369
原创 HDU 1712 分组背包问题
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:有M天可以分给N个课程,课程得分和课程上的天数有关,问在M天以内最多一共可以得到多少分一个分组背包的入门题,把一个课程上不同的天数得到的分数看作是一组的,每组最多只能选一个物品 每一个物品的代价是上的天数,价值是这门课在这个天数上得到的分数 那么这样就是一个分组背包问题二维DP数组
2016-10-31 17:30:15
319
原创 POJ 3264 RMQ 分块算法
题目连接:http://poj.org/problem?id=3264分块算法:将N个数 每sqrt(N)个数分成一个块,每一个块中加入一个value域保存这个块的最大值,查找的时候左右两个块在原序列上遍历查找最大值,中间的区间直接在预处理的块上查找最大值, 复杂度为:O(sqrt(N)) 代码:#include <cstdio>#include <cmath>#include <algor
2016-10-29 16:59:30
623
原创 HDU 3695 Computer Virus on Planet Pandora AC自动机
题目连接:http://blog.csdn.net/SolarDomo/article/category/6354437题意:问模式串在主串和主串的逆串中出现多少个 建自动机之后,把正串和反串都跑一边自动机,遍历到的VALUE值的清空代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;
2016-10-26 20:42:15
511
原创 POJ 1741 Tree 点分治
题目链接:http://poj.org/problem?id=1741题目链接: 要求出树中相距距离小于等于k的二元组个数 树分治的入门题:看看漆子超的论文: http://wenku.baidu.com/link?url=7KOPn20aLvKK5PqDmuLjIyj4sqZ6CL1H9qP__JSGvX-AWgX7LR6gC-BZ3PTVCP2ojBHxKZcJ5U3csiRjuspqcoF
2016-10-18 12:26:04
324
原创 求树的重心 POJ 1655、POJ 3107 树形DP
树的重心:在树中删去重心后,剩下的子树的最大子树大小最小,则这个节点为重心POJ 1655:直接求树的重心 思路:递归每个节点的时候,记录一下这个节点所有子树的大小和,然后记录最大子树的大小,维护最小的最大子树大小和相应的节点即可 代码:#include <iostream>#include <cstdio>#include <cstring>#define sf scanf#defin
2016-10-18 11:55:32
337
原创 SPOJ Count on a tree 在线LCA + 主席树
题意:求树上a , b路径上第k大的点 主席树a + 主席树b - 主席树(LCA(a,b)) - 主席树(FA(LCA(a,b)))代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 100000 + 50;/** 主席树 */const in
2016-10-13 22:12:50
343
原创 UVA 11922 Permutation Transformer Splay 区间翻转 + 区间合并
题目链接:http://vjudge.net/problem/18902/origin把一个区间翻转后拿出来加到序列的后面代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 100000 + 50;/** Splay */int ch[maxn][2
2016-10-13 17:12:53
362
原创 对拍程序
@echo off:looprand.exe > rand.txtstd.exe < rand.txt > std.txtmy.exe < rand.txt > my.txtfc std.txt my.txtif not ErrorLevel 1 goto looppause
2016-10-13 16:49:00
238
原创 HDU 5923 Prediction 并查集 合并
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5923代码#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 500 + 5,maxm = 10000 + 50;int Fa[maxm][maxn],n,m
2016-10-13 11:55:21
408
原创 HDU 5925 Coconuts 离散化 + BFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5925题意:一个棋盘上有黑点,白点,问有几块四联通的白点,输出联通块的大小在每个黑点上花横竖线就可以把棋牌离散化,大小最大400 * 400 ,之后求离散后的棋牌白点四联通块即可代码:#include <bits/stdc++.h>#define sf scanf#define pf printfu
2016-10-13 10:34:50
408
原创 HDU 2665 Kth number 主席树模板题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2665主席树模板题代码 :#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define sf scanf#define pf printf#define totNode maxn * 60
2016-10-12 19:56:28
363
转载 割点、割边、双连通分支
一、割点、割边、双连通分支概念挂接点(Articulation point)就是割点(Cut Vertex)桥(Bridge)就是割边(Cut Edge)割点:v为割点,则去掉v后,图的连通分支增加。割边:v为割边,则去掉v后,图的连通分支增加。割点形式化的定义:a是割点当且仅当存在两个点u,v使得u到v的每条路径都会经过a。(去掉a
2016-10-12 15:07:11
898
原创 POJ 1144 Network Tarjan 求无向图的割点的个数 Tarjan 模板题
题目链接:http://poj.org/problem?id=1144 题意:给你一个图 求这个图上的割点的个数代码://#include <bits/stdc++.h>#include <vector>#include <cstdio>#include <cstring>#define sf scanf#define pf printfusing namespace std;cons
2016-10-12 14:34:42
336
原创 扫描线 模板
测试题目:HDU 1542using namespace std;const int maxn = 100 + 5;const int TOT_SEG = maxn * 2;/** Seg** l,r,h 分别为线段的左端点,右端点,高** f 标识上下边*/struct Seg{ int f; double l,r,h; void set(double l
2016-10-12 10:44:06
503
原创 AC自动机 模板
测试题目:HDU 2222,const int maxn = 10000 * 50 + 50,sigma_size = 26;/** AC_AUTOMATION */int ch[maxn][sigma_size],fail[maxn],tot;int value[maxn];/** 初始化 */void Init(){ memset(ch[0],0,sizeof ch[0]);
2016-10-12 10:08:00
271
原创 HDU 2586 How far away ? Tarjan 离线最近公共祖先
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586裸的最近公共祖先代码:#include <bits/stdc++.h>#define sf scanf#define pf printfusing namespace std;const int maxn = 40000 + 50,maxnm = 200 + 5;int fa[maxn],v
2016-10-11 18:49:41
331
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人