- 博客(57)
- 资源 (6)
- 收藏
- 关注

原创 P2761 软件补丁问题
软件补丁问题–网络流24题软件补丁问题–网络流24题题意:分析:位运算:代码:题意:对于每一个软件,有特定的使用方法,简单来说,就是 软件只有必须有某些漏洞但是有没有某一些漏洞的时候才会有用 在使用补丁的同时,会消去某一些漏洞,但是同时也会引入某些漏洞 一开始有 n 个漏洞 输入的是 nnn 和 mmm ,就是有mmm个补丁(每个补丁可以重复使用) ...
2018-03-26 18:45:08
586

原创 HDU 5323 Solve this interesting problem DFS
题意问最小的 n ,使得线段树0~n范围有一个节点的范围是包括恰好为L~R的!分析:其实这道题目大家多多少少会想到向上搜索所有的节点,但是其实就是一直DFS 关键就是 剪枝剪枝剪枝 很重要! 对于 一个 L−RL−RL-R的区间,我们有 444种情况向父亲节点深搜: 1.[l,2∗r−l][l,2∗r−l][ l , 2*r-l ] 2.[l,2∗r+1−l][l,2∗r+1...
2018-02-23 09:04:40
254

原创 POJ 1475: 推箱子
表示被毒瘤题吓到了!(我要回家)暴力出奇迹,骗分过样例。数学先打表,DP看运气。穷举TLE,递推UKE。模拟MLE,贪心还CE。想要骗到分,就要有方法。图论背模板,数论背公式。动规背方程,高精背代码。如果都没背,干脆输样例。模拟定想全,动规定找对。贪心定证明,二分L M+1。 vis[i][j][k] 表示从(i,j) 的经过的k方向 有没有 走过! 因为如果普通BFS的vis是没有用的!
2017-11-07 08:25:12
1063

原创 欧几里德与拓展欧几里德
欧几里德介绍:更相减损法辗转相除法拓展欧几里德介绍:条件:证法:代码:逆元:费马小定理解释:欧几里德首先,我们知道有一个东西,叫:gcd!(就是最大公约数)int gcd (int x,int y){ return y?gcd(y,x%y):x; }那么为什么是这样的呢么? 其实作者我一开始也不知道!介绍:...
2017-10-29 22:27:41
1586
1

原创 LCA:(欧拉序)How far away?
How far away?How far away题意思路欧拉序LCA欧拉序RMQ解释ST 表代码代码题意:就是给你一颗树,再给你m个询问,每一个询问包含了两个节点,问你 left -> right 的距离为多少? 是多组数据… 所以,我RE 了好多次!! 结果又是RMQ打萎了! 又是RMQ打萎了…思路(欧拉序+LCA)欧拉序:那么首先,我们要知道什么叫欧拉序 我的专业解释:
2017-10-26 21:33:55
3322

原创 一道题--4遍A!:Histogram(LightOJ 1083)
题目:Histogram题目Histogram题目位置题意NO1 单调栈的想法核心代码NO2利用KMP思想核心代码NO3 RMQ的想法核心错误代码 正确代码NO4 笛卡尔树的想法核心代码题目位置:LightOJ 1083题意:就是让你找到一个矩形之中的最大子矩阵! NO.1 : 单调栈的想法:核心对于每一个矩形,如果暴力的想法就是找到这个矩形的高度往左往右最多能够
2017-10-21 08:10:28
4345
1

原创 浅谈线段树
线段树线段树简介初始化单节点修改区间修改区间询问的函数单节点询问区间询问修改区间单节点单点区间注释完整代码单点区间总结简介:就是将一颗完全二叉树,每个节点存储的是一个节点区间[l,r]之中的值(比如最小值,最大和,总和……)最后在可以在 简短的时间复杂度之下实现修改区间,查询区间的功能!它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问
2017-10-06 20:58:24
827
1

原创 背包问题
背包问题背包问题#include <bits/stdc++.h>using namespace std;int main(){ // 0 1 背包 每个物品只有一个 而且状态之有 取 或者 不取 主要方程: f[i][v]=max {f[i-1][v],f[i-1][v-c[i]]+w[i]} 一维: for i=1..N
2017-10-06 13:19:58
370

原创 KMP---字符串匹配
KMP—字符串匹配KMP字符串匹配介绍暴力的算法KMP算法分析十分好玩比较的函数KMP代码注释介绍:如果有一个题目,说明的是在一个母串之中找到一个字符串s出现了几次的时候,问你输出次数?1.暴力,枚举每个位置 时间复杂度 O(N*M)2.使用KMP 时间复杂度 O(M+N)1.暴力的算法无需介绍吧! 直接上算法!#include <bits/stdc++.h>using na
2017-09-16 10:06:49
861
原创 HDU多校总结
HDU多校Multi-University Training Contest 1 总结T1 : Maximum Multiple题意:每次询问一个n, 找出x, y, z 满足 x|n,y|n,z|n,x+y+zx|n,y|n,z|n,x+y+z x|n, y|n,z|n, x + y + z 这场比赛说是有准备, 其实也是队友与本人不够给力, 也导致最后的排名不尽...
2018-07-24 08:30:29
642
原创 最详细的主席树(不修改,待修改) BZOJ 1901
By Bartholomew前置知识:1.树状数组 2.线段树主席树模板是干什么的,其实就是询问区间第k大 不支持修改: 复杂度O(nlogn)O(nlogn)O(nlog_n) 带修: 复杂度O(n∗(logn)2)O(n∗(logn)2)O(n * (log_n)^2)分析:请大家耐心看完下面一道题目的做法,因为跟主席树的关系很大引题...
2018-04-13 21:02:03
9390
2
原创 Codeforces960F - Pathwalks + 最长不下降子序列(LIS)选讲
首先先来吐槽一下这场比赛,简直就是我第一次要么 WA 1 或者就是 WA 35+ 的一场比赛,也不知道出题人怎么这么流比LISCodeforces 960F题意:分析:代码:LISLIS背景:LIS背景:LIS 背景: 给你一个序列 a 让你选出最长的子序列,使得每一个元素 a′i+1>=a′iai+1′>=ai′a'_{i+1} >= a...
2018-04-09 19:26:59
670
原创 [ZJOI2005]沼泽鳄鱼
今天继续攻集训队论文的我题意一张无向图,不超过 505050 个点 起点 sss 终点 ttt 一个单位时间移动一次 一些食人鱼作周期运动 长度不超过 444 人不能碰到食人鱼 时刻 uuu 到达终点 u<=2∗109u<=2∗109u nnn十分的小,那么就可以直接用邻接矩阵 而且有一种矩阵叫矩阵乘法 对于一张(无向)图:GGG G[i][j]=1表示i−&...
2018-04-04 17:31:01
441
原创 [SDOI2008]Sue的小球
对一类动态规划问题的研究(摘自)湖南省长沙市第一中学 徐源盛 论文 By Bartholomew当前决策对未来“行动”的费用影响只与当前决策有关当前决策对未来“行动”的费用影响只与当前决策有关当前决策对未来“行动”的费用影响只与当前决策有关 好久没有写博客了,最近准备攻一波集训队论文(慌 引自论文: 在常规动态规划问题中,我们面临当前状态时“行动”造成的花费往往与这个...
2018-04-02 20:03:08
362
2
原创 Trie
简介操作小性质insert操作CODE询问CODE练手题简介其实就是一颗树,好多题目是26叉树操作如果我们有字符串 calcalcal,catcatcat,appappapp,aplyaplyaply,hhhhhh; 我们可以先构建一颗这样的树 ( 画风诡异,见谅: 小性质 1、字典树用边表示字母 2、有相同前缀...
2018-02-19 21:57:53
184
原创 Codeforces 938D. Buy a Ticket (Dijkstra)
题意样例分析代码题意:有nnn个点和mmm条带权值边,对于每一个点,都会有看电影票的值,而且每一条边都会有边权,问你每一个点看电影票的最小代价是多少? 看电影的代价为:路径上的边权 乘以 222 再加上所到的点的看电影票的价值!样例 input: 4 2 1 2 4 2 3 7 6 20 1 25 output: ...
2018-02-19 20:05:45
620
原创 BZOJ 1925 地精部落 DP
By Bartholomew其实不要小看一道地精部落,有比较大的思维量在里面!小结论:我们首先知道 3 个性质:如果有想看证明的,请自动转到代码片下面,因为考虑有些人不想看证明 First" role="presentation" style="position: relative;">FirstFirstFirst: 对于每一个 数字 i 和 i+1 , 如
2018-02-05 15:18:43
184
原创 洛谷 P2040 打开所有的灯
发现自己跑的好优越,只是2^{n}级的复杂度 其实这道题目你会发现其实只需要关心是否会与这盏灯操作一次就够了! 为什么? 其实如果是操作 2 次, 4 次,或者 6 次……其实都是对答案是一样的—根本没有操作! 而 1 , 3 , 5 ,7 ….也就等同于操作一次! 如 5 号灯操作了5下(原来是 开的) 就是:关,开,关,开,关… 结果还是关 那么…我们对于这 9 个格子,只要二进制
2018-01-25 08:06:42
426
原创 最小费用最大流(详解+模板)
By BartholomewBy BartholomewSPFA完整代码:重点代码:Primal-Dual 原始对偶算法(费用流)思考:如果我们将 SPFA 增广 改成 Dijstra 会不会更好!完整代码:证明:性质1:∴ 最小费用流的充要条件 <=> 剩余网络之中没有 负环性质2:性质3:先感谢大家提出来的宝贵建议 (Than...
2018-01-19 18:49:17
24734
22
原创 BZOJ 动态规划 4300: 绝世好题
By Bartholomew题意:给我们一个 aa序列,让我们找出来一个 最长的 a[]a[ ] 的子序列,使得b[i]b[i]&b[i−1]b[i-1] !=!= 00 ii 为 bb 数组的长度! 样例: input: 3 1 2 3 output: 2分析:1.O(n2n^{2}) 暴力DP 方程: dp[i]dp[
2018-01-15 18:49:10
452
原创 题解 P2476 【[SCOI2008]着色方案】 记忆化DP
~By Bartholomew~首先我们会发现,最难的莫过于对于 dp[i] (i 表示位置) 的转移, 当然我们会不知道对于某一些非法状态的转移的判断,所以我发现自己 G_G 了! 那么我们如果对于这一题 , 发现 k 和 c[i] 的数值都十分的小! 于是我们来找方案了解决它,因为我们可以暴力开 5 维来记录变化dp[a][b][c][d][e][last]dp[a][b]
2018-01-15 09:05:19
312
原创 题解 P3188 【[HNOI2007]梦幻岛宝珠】 DP
~By Bartholomew~其实,这道题目,评价: 1.难度: @@@@@ 2.思维难度: @@@ 3.细节难度: @@@@@ 对于这道题目,我们发现其实就是普通的 01 背包,但是数据 十分的大! 那么我们可以对于 vv == aa×2b2^{b};的 b 相同的物品做一次 dp 那么就是* f[i][j]f[i][j] * 表示体积为 (jj×2i2^{i}) 的体积 只收
2018-01-15 09:01:41
498
原创 HDU5603--树状数组
#pragma GCC optimize(3)#include <iostream>#include <algorithm>#include <cstring>#include <math.h>#include <stdio.h>#include <queue>#include <vector>#include <string>#include <set>#include <ma
2017-12-20 13:48:27
222
原创 TopCoder Div.2. 625
[toc] 第一题的题意就不解释了,可以自己去意会!T1:就是问是否有 a*b+c = y ??// Paste me into the FileEdit configuration dialog#include <bits/stdc++.h>using namespace std;class AddMultiply {public: vecto...
2017-12-19 14:10:05
192
原创 线段树--带 * + 符号
之后的代码讲解下回见!#pragma GCC optimize(3)#include <iostream>#include <algorithm>#include <cstring>#include <stdio.h>#define N 100500using namespace std;long long MOD,n,m,k,a[N],size[N<<2],add[N<<2],mul
2017-12-17 21:07:21
204
原创 快读 模板
inline int read(){ int x=0; char c=getchar(); bool flag=0; while(c<'0'||c>'9'){if(c=='-')flag=1; c=getchar();} while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();} retur
2017-10-31 21:25:09
1823
1
原创 Greatest Parents Ligh OJ1128
其实倍增可以”缩”题意:一棵树的点权会给你,每一次询问一个x,y 问在x的祖先之中(包括x) 权值 >=y的而且是离x最远的点的编号!思路核心的什么也不说了,只是希望说一说这个: 每一次倍增,dp[i][j]~dp[i][0]其实就是相当于是一个二分搜索的过程呢! 比如dp[i][3]会符合答案,那么i就会自动”跳”到 i+2^3的地方,继续在(i+2^3)的地方2^2 一直下去,于是就有了答
2017-10-29 19:32:40
266
原创 初论差分
初论差分初论差分介绍讲解代码介绍:其实最好用的时候是对于一段区间的值就行修改,并且是离线的! 那么用差分就是最好的了,将O(n)的复杂度变成了O(1)的点修改!讲解我们假设有5个数字吧!我们假设有 5 个数字吧! 5 6 12 7 9那么类似的,我们用前缀的思想来处理相邻的差值! 所以存在了dif[ ] 数组里面! 就有dif[1]=5,dif[2]=1,dif[
2017-10-27 16:13:10
260
1
原创 RMQ
RMQ解释: RMQ 问题是求给定区间中的最值问题,如下图所示: RMQ 问题(图中记录的是最小值的位置) 当然,最简单的算法是 O(n)的,但是对于查询次数很多 m(假设有 100 万次),则这个算法的时 间复杂度为 O(mn),显然时间效率太低。可以用线段树将查询算法优化到 O(logn)(在线段树中保 存线段的最值) ,而线段树的预处理时间复杂度为 O
2017-10-27 10:59:50
508
原创 priotity_queue 洛谷 2707
于是乎,我们要知道了如何要重载定义符!重载定义一friend bool operator < (number x,number y){ return x.val<y.val;// 这是大根堆的应用!}定义二bool operator < (number &x) const{return ...;}题面: Facer的父亲是一名经理,现在总是垂头丧气的。 Facer问父亲,怎么啦
2017-10-26 15:57:06
288
原创 Baker Vai Light OJ 1071
题记表示现在越来越喜欢 做 孟加拉国的题目了! 要G_G了! 所以说题目是这样的!题意:给出一个矩阵,两个人一块从左上角(1,1)位置走到右下角(n,m)位置,求经过的点上的数字之和最大是多少,每一步都只能往最接近右下角的位置走,即下一步的位置可以是(i+1,j)or (i, j+1),如果一个人已经走过了,那么另外一个人就不能够再一次走过去! such as : (加黑的数字就
2017-10-25 11:49:31
226
原创 区间DP :Light OJ 1031
Easy Game题目位置:Light OJ 1031题意:对于两名选手,每一次可以从左边或者右边去 好多的a[ ]元素,而这样就是 有一个先后的顺序,求的是 先手的分数,超过 后手的最大值—多组数据! Sample Input 2 4 4 -10 -20 7 4 1 2 3 4 Sample Output Case 1: 7 Case
2017-10-23 10:15:38
215
原创 所谓DP统计---Light OJ 1037
Brush (III)Brush III题目位置题意方法代码题目位置:Light OJ 1037题意:有n个点,坐标为xi 与 yi 就是说每一次你有一把刷子,可以刷 长度为 w 的一行扫过去,如图: 扫到的点就算结果,但是一个点只有0 1 状态! 求给你k次次刷的机会,问你最多刷到多少个点?方法:记录在j号点向下刷一下可以有多少的点被扫到,记录一个val[ ]数组里面! 然后
2017-10-22 20:04:00
222
原创 Marriage Ceremonies--Light OJ 1011
Marriage Ceremonies题目位置题目做法代码Marriage Ceremonies题目位置:Light OJ 1011题目:You work in a company which organizes marriages. Marriages are not that easy to be made, so, the job is quite hard for you.The j
2017-10-22 17:47:17
385
原创 Brush(I) 水
主要是:被题意杀了......#include <iostream>#include <stdio.h>#include <algorithm>#include <cstring>using namespace std;int T,n;int main(){ scanf("%d",&T); for(int loc=1; loc<=T; loc++) {
2017-10-22 13:00:59
242
原创 高斯消元法
Describe对于一个n个变量的n个方程的式子,惊醒求解! 经过了… 变成了… 最后就是… 代码(普通高斯消元)#include <iostream>#include <stdio.h>#include <algorithm>#include <cstring>#define ll long long#define N 205using namespace std;int
2017-10-21 15:45:14
208
原创 NOIP 初赛复习 : 排序算法!
排序排序冒泡排序介绍代码桶排序介绍代码1.冒泡排序:介绍:就是对于n2n^2 的数组的数据进行排序,比如是升序的排列,那么有2个元素,a[i]>a[j],于是就对其swap(a[i],a[j])每一次来一个循环,从1~n,用一个i变量来记录,再来一个j循环,枚举1~n的数字,(当然,如果你想一想就会发现其实只要是从i+1开始就可以了!因为1~i的数字均有序的!)代码:#include
2017-10-12 11:19:12
907
原创 奋斗群群赛---15,16
奋斗群群赛—15,16奋斗群群赛1516群赛15T1Fashion in Berland题目位置题意AC代码T2s-palindrome题目位置题意AC代码T3 Exponential notation题目位置题意AC代码T4Swaps in Permutation题目位置题意AC代码T5Xor-sequences题目位置题意思路AC代码反思T6Cou
2017-10-08 07:56:53
1835
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人