自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pandeng的博客

『自己选择的路,就算跪着也要走完』

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

原创 LOJ #10202. 「一本通 6.2 练习 5」樱花

题目链接求不定方程:给定n,1/x + 1/y = 1/n 的正整数解数基本的思路首先化简可得(x+y)/x∗y=1/n关键一步令 x=n+a y=n+b这一步相当关键,整个题目的精髓所在。因为x和y和n都是正整数,要想等式成立,x和y作为分母肯定都要大于n,不然等式成立不了代入原公式化简得代入原公式化简得n^2=ab然后就等价于求解n^2的约数个数了#inclu...

2018-11-02 15:54:38 453

原创 题解:BZOJ5254 : [Fjwc2018]红绿灯

一道毒瘤题/*直接贴题解显然所有询问都要经过至少∑d,只需要考虑除了∑d之外的等待红灯的时间。将所有询问的时间模g+r,并按时间用set维护。那么对于每个红灯,在set中可以找出1到2个区间,将里面所有的询问暴力取出,添加一个新点作为等到绿灯后的询问放入。那么询问与新点之间构成了一棵树结构,每个询问实际的答案为它到根路径上所有点的答案之和。时间复杂度O(nlogn)*/ #inc...

2018-10-21 19:45:53 386

原创 noip2013day2压轴题 华容道

题目链接 首先这是一道毒瘤题,写了一下午没有瞎弄出来,看了题解才有所领悟 以上都是一些废话分析 开始想过70分的暴力,直接暴力BFS,答案离线,起点相同的一起做;试过不止70分 首先很容易看出来这是一道图论题,显然是要用到最短路,确定d数组状态d[i][j][k]表示起点到(i,j),k方向是白块的最短路径,但是由于图的特性,建图,好像有点鬼畜,死磕2小时无所获,于是...

2018-09-15 21:12:27 228

原创 Luo's oj P1916 简单的序列(bracket)

传送门分析 我们将左括号看作 1,右括号看作 -1,则一个合法的括号序列需要满足: *所有括号的总和为 0 *每个前缀和均不小于0 我们先统计出串 s 的总和 a 以及最小的前缀和 b,然后枚举串 p 的长度 i 以及总和 j, 考虑到需要满足第二个条件,那么 j 需要满足 j+b>=0。记 f[ i ][ j ] 为长度为 i ,...

2018-07-26 22:39:21 331

原创 Luo's oj P1918 简单的操作

传送门分析 (直接帖题解) 先考虑连通图的情况。 首先如果原图不是二分图,显然无解。因为对于一个长度大于 3 的奇环,如果合并环上任意两个不相邻的点,一定会生成一个更小的奇环,最终会剩下一个三元环,无法继续合并。 对于任意联通的二分图,我们可以选定一个点 s,然后将所有与 s 距离相同的点合并。由于原图是二分图,所有与 s 距离相同的点必然在同一侧,也就一定不相邻,...

2018-07-26 22:28:28 307

原创 luo‘s oj P1917 简单的期望(exp)

传送门分析 令 dp[ i ][ s ][ j ][ k ] 为进行了 i 次操作,当前数的二进制表示中后 8 位为 s ,第 9 位为 0 或 1,并且从第 9 位开始有连续 j 位相同的概率。转移挺麻烦的但是很显然,这里就不写了(写在代码里了QwQ)。 直接贴题解 解释一下取后 8 位的原因。考虑对一个这样的数进行 +1 操作:……11011111111,...

2018-07-26 19:18:45 475

原创 Luo's oj P1895 树上游走期望(tree)

传送门分析首先可以模拟一下样例,好吧这是一个鬼畜的过程,推公式QAQ我好想不会;我果然还是太菜orz;当场弃疗;yrc大佬又抄了代码AK全场orz 还是讲一下题目首先就是建图,之后就是一个鬼畜的树形dp+期望,计算答案用lca()其实我不会 首先我们约定up[i]表示 i–> fa[i] ;的期望步数#include<bits/stdc++.h&amp

2018-07-25 19:53:14 548

原创 luo's oj P1974 宝藏(treasure)

传送门分析noip day2 关键题状压dp 首先这是一道裸题就是MST的dp上加了一点要求;然而我并不会MST的dp于是生推QAQ; 效率(n^4)hhh其实是我也不知道这个记忆化剪枝太玄学了(划掉) 代码其实很简单的(划掉)枚举以所有的点为起点然后记忆化搜一遍并根新答案,话说为什么跟普及组的T3这么像 当时就没水过(QAQ划掉)#include<b...

2018-07-17 10:46:19 274

原创 POJ P1185 炮兵阵地

题目链接分析*看数据显然是状压dp*QwQ 首先分析列数为1的情况:第i行的炮台数分两种情况,当其为山地时,不能放炮台,故f[i]=f[i-1];若其为平原,有放与不放两种情况,放时前两行不能放,故:* f[i]=max(f[i-3]+1,f[i-1])*; 当列数大于1时,我们把上面的思路推广一下,定义合法的状态为当前行没有冲突的炮台,找到当前第i行合法的状态j与上一行i-...

2018-07-17 09:05:38 157

原创 luo's oj P1560 [USACO 1.5.4]跳棋的挑战

传送门分析首先这是一道搜索题QwQ,但我偏不用搜索做OvO,好吧练一下位运算 主要框架还是搜索,用位运算来传递状态,速度可见一斑 #include<bits/stdc++.h>using namespace std;int n,ans,s;int res[15],a[1<<15];void dfs(int x,int A,int B,int C...

2018-07-16 10:29:25 319

原创 BZOJ2454兔子跳跃之谜下(BZOJ中不是多组数据)

题目链接分析把A B C三点视为一个状态;首先我们约定从中间一个点向外跳是状态的儿子,从左边或右边显然只有一种跳法,于是作为父亲,根据最大步数来建树(于是有了一棵二叉树),当然我们只需要选取有用的点,之后就剩下找根的操作(根是什么呢,其实就是c-b=b-a的点这样的话,就没有父亲了),这其实可以和建树一起完成。 之后就是dp的过程: 首先,我们定义lca()为开始点和结束点的lca...

2018-07-14 10:05:11 367

原创 HDU2196Computer(树的中心问题)

传送门分析首先题意是在一棵树T中输出每个结点的最远距离; 首先第一个dfs求出所有每个节点i在其子树中的正向最大距离和正向次大距离和d[i][0]和d[i][1](如果i节点在子树中最大距离经过了2号儿子,那么次大距离就是不经过2号儿子的最大距离)。并且还要标记c[i]=j表示节点i在其子树中的最大距离经过了节点j(即j是i的一个儿子)。 由上步我们获得了正向最大距离,正向次大距离和最...

2018-07-13 09:56:47 1252

原创 luo's oj p1735 图XM

题目链接分析首先满足题目要求原图G必须是DAG,然后可以得到蓝图中(u,w),(w,v)一定存在(u,v)在红图中一定没有(v,u)(u,v),所以只要把其中的一个图的边全部取反,在判断一次DAG就可以了(用拓扑判断是否是DAG) 注意多组数据要初始化,WA了2次#include<bits/stdc++.h>#define N 2020using namespace ...

2018-07-08 22:09:53 146

原创 luo's oj p1734排序XM

题目链接分析贪心,没有很好的证明把最小值minv置为a[n],不停地作比较,把之前的比minv大的a[i]往后交换,并不断交换最小值#include<bits/stdc++.h>#define N 5000010using namespace std;int n,a[N];int main(){ scanf("%d", &n); fo...

2018-07-08 22:01:35 140

原创 luo's oj P1733 三角形

题目链接 一个修改操作对一个查询操作的影响可以O(1)算。每次修改维护一个差分数 组,每一次复杂度 O(n)。 然后,每k次修改操作以后就重构整个三角形。 这样每次询问的话对于单个修改操作的查询用时就是 K。 然后每次重构时通过差分数组还原出原数组。再求出前缀和。用时是n^2=10^6。 每次查询扫一遍,复杂度q/k 。 重构次数不超过 。 复杂度O((q/k)n^2+qn+qk)...

2018-07-07 08:07:14 145

原创 luo's oj P1731数列

题目链接/* 假设x>y f(x,y)=f(y,x); f(1,x)=x+1; 由a1=x,a2=y,a3=x-y;而x>y且x-y!=y,delta恒小于x 得f(x,y)=f(y,x-y)+1=f(y,x-n*y)+n=f(y,x%y)+x/y; 于是gcd计数 */#include<bits/stdc++.h>...

2018-07-07 07:58:16 136

原创 Contest1176 - 20180608限时练习

总结:开始理解错了题目的意思,所以花了时间却没有打出来,先做了C; 然后B题有思路,打完之后没有调出来,就换回A题,做出来了以后,再做B题主要还是pow的问题,后来再主攻D;D的想法很多,开始想了单调队列,不过打不出来;后来分治就通了。主要还是要注意时间的调配,分散精力的优点是可以顾全大局,但是对于题目思考的深度肯定是差了一点 P1611 A 中位数计数 简析:效率O(n^2),显然满...

2018-06-08 11:21:35 131

原创 Contest1175 - 20180607限时练习

P1603 A 度熊的全排列名字 简析:这题就是一道特殊字符串的比较题,由于全排列之后的字符经过排序之后都是相同的,所以可以用map来存储进行比较;#include<bits/stdc++.h>using namespace std;map<string,int>mp;char s[45];int main(){ int T;scanf("%...

2018-06-07 10:58:35 124

原创 Contest1173 - 20180606限时练习

P1615 A组合字符串 简析:我们发现,三个字符串a,b,c,c中的字符不属于a就属于b,我们可以code出一个搜索,然后改成记忆化#include<bits/stdc++.h>#define N 2005using namespace std;int f[N][N],n,m,len;char a[N],b[N],c[N]; int dfs(int i,int ...

2018-06-06 12:41:58 115

原创 竞赛同行dp优化总结

“由于这几道题目有很大的共同点,就放在一起解析” P1576 此题就是先推出暴力的dp,首先就要想到+1和-1其实是一件事,所以只+1就够了 a[]表示原序列b[]表示排序后的序列 f[i][j]表示把前i个数变成非降序列,并且第i个数变成原序列中从小到大第j个数所用的最少步数。 f[i][j]=min(f[i-1][j]+abs(a[i]-b[j]),f[i][j-1]); 由于空...

2018-05-26 19:39:34 200

原创 UVA10590 Boxes of Chocolates Again

由于UVA不太稳定,所以之后好帖了vj分析这题是dp+高精度;方程适合用刷表法;dp[j]=dp[j]+dp[j-i]; 不过由于答案过大,所以要写BigInt 于此保存这个令人惊悚的代码(参考刘汝佳的紫书) 代码#include<bits/stdc++.h>using namespace std;class BigInt{ public: ...

2018-04-30 11:30:12 204

原创 luooj公共前后缀长度(presuf)

题目链接分析首先这是一道KMP的应用题,这已经是我第二次学KMP了这一次先学了没有什么用的优化QAQ根据KMP的算法匹配串的后缀==模式串的前缀 so 可以推得 对于串S,根据f[strlen(S)]得到的最长相同前后缀为S1,则再根据f[strlen(S1)]得到的S1的最长相同前后缀S2肯定也为S的相同前后缀。(如此就有了所谓的递推式) 这样,通过不断的向...

2018-04-27 22:41:11 454

原创 luooj最强阵容加强版

传送门分析模板题;运用到最小表示法具体实现见代码,网上的题解也很多#include<bits/stdc++.h>using namespace std;char s[1000005];int MINSTR(){ int len=strlen(s+1); for(int i=1;i<=len;i++)s[i+len]=s[i]; int i...

2018-04-23 20:28:17 509

原创 luooj[USACO 1.3.3]Calf Flac

传送门manacher算法用来找字符串中的最长回文子串的algorihtm Manacher算法可以将长度为奇数和偶数的回文串一起考虑: 在原字符串的相邻字符串之间插入一个分隔符,字符串的首尾也要分别添加, 注意分隔符必须是原字符串中没有出现过的原字符串s a b a b c转换后字符串str # a # b #...

2018-04-19 21:58:38 354

原创 luoojP1030最长跳跃路线

CF474E简化版 (cf中此题需要输出答案的方案,此题只需输出答案)分析首先想到的是暴力的dp刷表法和填表法都是很简单的,这里不再一一阐述; 不过要做出这题的话首先还是要先学会nlogn的追偿上升子序列;之后这题就会用到这个思路的原理;首先离散化,之后就用线段树或树状数组来维护 附上注释代码#include<bits/stdc++.h>#define N ...

2018-04-17 22:24:25 149

原创 luoojP1252树上的最短路(LCA模板)

传送门分析首先这是一道模板题,强调这是一道模板题,但我在复习的时候还WA了4次QAQ;倍增lca显然就是再树上做倍增,要理解的话可以画一棵树看看规律; 思路就是先dfs出所有节点的父亲,边权和深度,在做一个dp,求出所有的1,2,8,……2^20,一般就是这个左右根据数据而定。 之后就是再树上lca,先将深度比较低的节点向上倍增然后直至深度相同,如果两点是同一节点那么就直接返回答案...

2018-04-10 22:30:53 809

转载 骗分导论(转载)

传送门

2018-04-09 13:11:23 1132 1

原创 luoguP1456 Monkey King

题目链接分析左偏树的模板题,加上并查集之后还是很好理解的,没有什么思路可言就是合并和修改堆中的元素; 代码+注释#include<bits/stdc++.h>#define N 100005using namespace std;int n,x,y,k,h,m,cnt,fa[N],v[N],l[N],r[N],d[N];int find(int x){retu...

2018-04-08 09:30:51 135

原创 luoguP3377 【模板】左偏树(可并堆)

传送门分析可合并的二叉堆和之前的模板差不多,根据题意稍有个别改变; 详见代码; 代码#include<bits/stdc++.h>#define N 100005using namespace std;int n,x,y,k,h,m,cnt,fa[N],a[N],v[N],l[N],r[N],d[N];int find(int x){ while(f...

2018-04-06 19:24:42 152

原创 左偏树模板讲解

左偏树左偏树是可合并的二叉堆,首先满足所有的堆的性质,其外,它还可以合并。左偏树的树节点需要保存的信息有: 1.左右子树节点编号 2.此节点到有空子结点(子节点数不足2个的节点)的结点的最短距离dist 3.自身权值性质左偏树除了堆的所有性质,它还要满足的重要的性质就是“左偏”。左偏这个性质保证了它的操作都是O(logn)...

2018-04-06 13:17:14 297

原创 luooj P1241: Fibonacci前n项和

题目链接分析矩阵递推式;Sn=1*Sn-1+1*fn+0*fn-1;fn+1=0*Sn-1+1*fn+1*fn-1;fn=0*Sn-1+1*fn+0*fn-1;{1 1 0}{0 1 1}{0 1 0}其余见上一片blog代码#include<bits/stdc++.h>#define ll long longusing namespace std;...

2018-04-02 20:39:16 365

原创 洛谷P3382 【模板】三分法

题目链接方法1就是三分的模板之前转载过了就不写了 不过求多项式有两种效率不一样的方法可以作为参考;//普通的求多项式/*double F(double x){ double f=0; for(int i=n;i>=0;i--){ double t=1; for(int j=1;j<=i;j++) t*=x; f+=a[i]*t; } retu...

2018-04-01 21:57:54 243

转载 三分法模板讲解

三分查找我们都知道 二分查找 适用于单调函数中逼近求解某点的值。 如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点。 下面的方法应该是三分查找的一个变形。 如图所示,已知左右端点L、R,要求找到白点的位置。 思路:通过不断缩小 [L,R] 的范围,无限逼近白点。 做法:先取 [L,R] 的中点 mid,再取 [mid,R] 的中点 mmid,通过比较 f(mid) 与 f...

2018-04-01 13:20:02 618

原创 luoguP3435 [POI2006]OKR-Periods of Words

题目链接分析首先说明一下题意那个翻译不太好理解,题目意思是 设原串S 一个字符串的非空真前缀为Q(proper前缀)不能和S一样,不能为空; 如果说S为Q+Q的前缀,那么strlen(Q)就是周期;求的是S所有的前缀的最大周期;. 那么就很容易想到用kmp来做这题,用kmp先对自己进行匹配就是求出所有的含有非空前缀;然后在用i-f[f[i]]求出前缀的最大周期(这个很好证明,...

2018-04-01 13:04:54 322

转载 数论训练小结

扩展欧几里得算法欧拉函数与欧拉定理 同余方程关于逆元一个不错的讲解组合数的应用

2018-03-31 19:29:38 107

原创 luoojP1155A/B

题目链接分析扩展欧几里得,数论题,题目的思路很简单,重要的是题目的推导;#include<bits/stdc++.h>#define ll long long#define N 9973using namespace std;int ex_gcd(int a,int b,ll &x,ll &y){ if(!b){x=1;y=0;} ...

2018-03-30 15:33:48 103

原创 luooj1559最强阵容加强版

题目链接 分析 用最小表示法返回最小表示串(字典序最小的同构串)第一个字符在原始串中的下标。 用两个指针i,j,i初始化为0,j初始化为1,用k表示当前已经匹配串的长度。如果str[i+k]==str[j+k],j++,否则如果str[i+k]>str[j+k],说明以i开始的同构串肯定不是最小的,并且以i开始的到以i+k开始的都不会是最小的,因为若以i+x开头,0<=x&l...

2018-03-27 21:08:40 316

原创 luooj P1405好元素

题目链接 分析 这道题巧妙的应用了hash和边表; 首先分析一下题意,就是让你在n个数里找3个数加起来等于第四个数。 ai+aj+ap=ak <==> ai+aj=ak-ap 之后就简单了就是边表的技巧 代码#include<bits/stdc++.h>#define N 12600000#define M 4194303using namespa...

2018-03-27 19:26:34 159

原创 luooj P1226 修桥

题目链接 分析 双联通割边,依旧缩点,好像并没有用到桥的数量,不过作为一道模版题还是打了。详细见我注释的代码#include<bits/stdc++.h>#define N 5005#define M 20005using namespace std;int tot,head[N],Next[M],vet[M];void add(int x,int y){ t...

2018-03-26 18:50:16 141

原创 poj p1201 Intervals

题目链接 分析 差分约束系统的模板题; 代码#include<cstdio>#include<algorithm>#include<queue>#define N 50005#define M 150005#define INF 1e9using namespace std;int tot,head[N],Next[M],val[M]...

2018-03-26 18:29:34 90

空空如也

空空如也

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

TA关注的人

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