
luogu
After__rain
这个作者很懒,什么都没留下…
展开
-
luoguP5283 [十二省联考2019]异或粽子
回家了效率就是高啊。。。。#include<bits/stdc++.h>#define MAXN 700005 * 44typedef long long ll;using namespace std;ll n,m,rt[MAXN],ch[MAXN][2],cnt[MAXN],num[MAXN],tot,yl[MAXN],ans = 0;struct node{ ll l,r,maxl,sum,bj; friend bool operator < (node x ,原创 2020-05-16 16:26:49 · 197 阅读 · 0 评论 -
Dinic板子Ver.1
就是EK的思想#include<bits/stdc++.h>#define MAXN 10005using namespace std;int n,m,s,t;int tot = (-1) , h[MAXN] , dep[MAXN] , vis[MAXN];struct node{ int from,to,next,rest;}e[MAXN * 20];void...原创 2020-04-29 20:26:20 · 118 阅读 · 0 评论 -
Prufer 序列
其实这个没什么好说的啦。。。就相当于一种很妙的树hash好像在NOIWC有出过。。。就是这个是个双射,且一一对应就每次找编号最小的叶子节点,删掉,迭代至只剩一个点也可以从prufer变为原树注意,以某个点为根,要在最后一位添一位,并且那个根不能找父亲。。。O(nlogn)O(nlogn)O(nlogn)左右。。还有一个O(n)O(n)O(n)的假做法,但可能会被卡成O(n2)O...原创 2020-04-28 08:22:18 · 351 阅读 · 0 评论 -
卢卡斯定理
。。。。这个其实也没什么定理不定理的。。就是你把二项式定理拆成任意素数p进制的形式然后你一化式子,对比一下系数就可以得到了C(n,m)=连乘C(ni,mi)其中ni,mi是n,m分解为p进制数的第i位,并且p是质数C(n,m) = 连乘C(ni,mi)其中ni,mi是n,m分解为p进制数的第i位,并且p是质数C(n,m)=连乘C(ni,mi)其中ni,mi是n,m分解为p进制数的第i位...原创 2020-04-27 15:01:44 · 142 阅读 · 0 评论 -
luoguP4783 【模板】矩阵求逆
水题。。。。直接根据矩阵初等变换高斯消元得到一个主对角线矩阵同时增广一个单位矩阵更具逆矩阵特性很容易算出记得取模逆元然而这卡常就没什么意义#include<bits/stdc++.h>#define MAXN 405typedef long long ll;using namespace std;int n;ll mod = 1e9 + 7,a[MAXN][MA...原创 2020-04-26 17:50:43 · 324 阅读 · 0 评论 -
luoguP2633 Count on a tree
树上主席树。。。。理清一下思路就好了注意第四个减去的要是lca的父亲。。。因为lca也算了进去#include<bits/stdc++.h>#define MAXN 1000005typedef long long ll;using namespace std;ll n,m,a[MAXN],c[MAXN],dex,rt[MAXN],dep[MAXN],f[MAXN][...原创 2020-04-18 09:59:40 · 159 阅读 · 0 评论 -
luoguP3792 由乃与大母神原型和偶像崇拜
这个题这么神仙的吗。。。思想就是hash。。。就你考虑怎么快速判断一个数列是不是值域连续。。你不一等要真的去一个一个检查。。你可以维护这个数列的一些特征来进行快速的判断。。。。当然,这种思想在其他的代数数据结构也可以运用。。。只是我目前没有遇到过这种题。。。。代码就鸽鸽了毕竟知道思路后没什么好写的...原创 2020-04-17 14:34:05 · 148 阅读 · 0 评论 -
luoguP3384 【模板】轻重链剖分
第一次没照着模板抄就写出了3.8k的树po(十分高兴)可能我还要再补充一下树po的性质啊。。。例题之类的线段树记得开4倍空间,不然你就开8倍(不过我好菜啊,我初三才会树po,某些神仙初三都2分钟干完fail树上dfs序建可持久化线段树优化dp。。。。光速逃)#include<bits/stdc++.h>#define MAXN 100005using namespace st...原创 2020-04-15 15:33:57 · 135 阅读 · 0 评论 -
luoguP2572 [SCOI2010]序列操作
…差不多写了3个小时吧。。。。嘛其实没什么思维,主要是一些套路的结合。。。但是还是有一定的编写难度的(5.7k)可想而知#include<bits/stdc++.h>#define MAXN 100005using namespace std;int n,m;int a[MAXN * 4],l1[MAXN * 4],l2[MAXN * 4];int x,y,k;s...原创 2020-04-14 10:29:48 · 168 阅读 · 0 评论 -
线段树板子(区间加法+区间乘法)
我呃呃这个题主要的思想就是懒标记。。。(然而我之前并没有写过,结果就因为理解出现偏差,就写了2个小时)懒标记与你当前线段树节点没关系,是维护子树的,,,我就认为懒标记也维护了自己。。结果就翻车了(创造了一个线段树套队列的神奇结构。。。。。。。我太弱了(不过不算空间的话,跑的还是挺快的(最大的点1s多一点(USED O2))))这线段树上有两个懒标记,分别是加法的和乘法的。。。。嘛,你们...原创 2020-04-13 15:41:09 · 323 阅读 · 0 评论 -
luogu P3842 [TJOI2007]线段
有一个比较显然的东西,就是你不管当前段走到哪里,你下一行总是要走回去也就是说,我们不管走到哪里,与 当前到左右端点是等效的然后就推出下面那个毒瘤式子就好了。。。推荐画图来讨论情况(一屏幕的式子(光速逃 ))有点像那个关路灯(似乎是那题的弱化版)#include<bits/stdc++.h>#define MAXN 20005using namespace std;in...原创 2020-03-29 13:05:34 · 118 阅读 · 0 评论 -
luoguP3572 [POI2014]PTA-Little Bird
比较真的单调队列优化dp的题目额,这个东西吗纠正了我的一个观点。。。你单调队列维护的并不是最大值,最小值,而是一个最优的状态然后来转移。。。。。然后就这样了(难怪我说今年CSPD2T2我怎么想不出来。。。(我太弱了))#include<bits/stdc++.h>#define MAXN 1000005using namespace std;int n,cishu,k...原创 2020-03-28 18:01:16 · 179 阅读 · 0 评论 -
luoguP1027 Car的旅行路线
这个题很好啊。。。建好图后直接跑bfs,然后可以把原问题看成单但解决以下这个问题就好了。。给你一个矩形的三个点坐标,然后问你,第四个点坐标。 。一开始我懵逼了,,,,但后来发现,3个点给你显然满足三角不等式就是说可以确定一个中间点然后全都向量基(好像是这么叫的)然后就可以在另一个点变换一下就可以解决这个问题了#include<bits/stdc++.h>using...原创 2020-03-18 18:23:40 · 132 阅读 · 0 评论 -
luoguP1092 虫食算
嘛,这个东西比较妙。。。为什么这么说呢。。。这个题过程有点难懂。。。。不过还行。。。。嘛,就是在高斯消元时候,把原举证的增广矩阵进行同步消元。。但由于方程数量不足,所以增广矩阵不唯一于是,要枚举增广矩阵的每个解的情况,然后判断合法与否然后这个题就可以解决了代码等下贴。。...原创 2020-03-17 09:36:06 · 182 阅读 · 0 评论 -
luoguP5664 Emiya 家今天的饭
考虑维护一个差值每次枚举是那个食材爆炸。。。然后就ok了嘛,建议看题解这个题。。。#include<bits/stdc++.h>using namespace std;long long n,m,mod = 998244353;long long a[105][2005],s[105],f[205][205],sum;void init(){ memset(f,0,...原创 2020-03-14 15:14:44 · 157 阅读 · 0 评论 -
luoguP1169 [ZJOI2007]棋盘制作
悬线法dp秒杀。。。#include<bits/stdc++.h>#define MAXN 2000 using namespace std;int n,m,ans1,ans2;int num[MAXN+5][MAXN+5],l[MAXN+5][MAXN+5],r[MAXN+5][MAXN+5],up[MAXN+5][MAXN+5];void init(){ cin&...原创 2020-03-14 13:38:10 · 144 阅读 · 0 评论 -
luoguP1273 有线电视网
很显然吧,直接做树形dp两维以什么为根的子树选择多少个用户所能得到的最大价值注意 中转站不算直接在转移的时候维护一下就好了#include<bits/stdc++.h>#define MAXN 3000using namespace std;//f[i][j]以i为根的子树选取j个用户的最大利润//f[i][j] = max(f[i][j] , f[i][k]+...原创 2020-03-14 13:37:12 · 154 阅读 · 0 评论 -
luoguP1156 垃圾陷阱
一个假的 滚动数组背包。。。维护一下每个高度所能有的最大生命。。。。然后维护上去就好了不然你也可以尝试一下维护每个生命所能到达的最大高度。。。都挺好做的#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int d,g;int maxl;str...原创 2020-03-14 13:33:19 · 145 阅读 · 0 评论 -
luoguP1373 小a和uim之大逃离
嘛,这个题是我一年前做的。。。。嘛,你第一看可能发现,他题目要求是在任意点结束,使得两者溶液质量相同。。。很难维护对吧,因为你要同时维护两者的溶液质量。。。。但实际上。。。。两者溶液的多少与两者质量是否相同没什么关系的就是说,我们可以直接维护差值。。。。但他会出现负数? 其实也没什么问题。。。因为这个是在模意义下的负数,可以直接转换为非负数仔细模拟一下这里,很容易理解然后这题就AC...原创 2020-03-14 13:26:53 · 139 阅读 · 0 评论 -
luoguP1005 矩阵取数游戏
是区间dp的扩展,相当于就做了n次,因为上下层没有关系。。。然后对于每次取走要乘上的那个2.。直接考虑再区间dp的时候,把之前的转移整体乘2就好了。。。。转移很简单吧。。。// luogu-judger-enable-o2#include<cstdio>#include<iostream>#include<algorithm>using name...原创 2020-03-14 13:18:09 · 156 阅读 · 0 评论 -
luogu P2331 [SCOI2005]最大子矩阵
我一开始想错了。。。结果20分钟就过去了正解是直接维护上下两层。。。。然后直接转移就好了(讲道理 我没看题解。。。。)不过感觉最近题解看的有点多。。。。。主要原因是细节+实现能力有点跟不上了把?可能要想办法。。。。。啊。。。。就是那种写起代码缺少了自己的灵魂的那种感觉。。。。。。#include<bits/stdc++.h>#define MAXN 105using ...原创 2020-03-06 14:24:40 · 186 阅读 · 0 评论 -
luoguP2216 [HAOI2007]理想的正方形
直接倍增或者单调队列直接搞就好了吧。。。。没什么思维虽然我就写了个滚动数组(数据太水了吧。。。。)#include<bits/stdc++.h>#define MAXN 1000using namespace std;int a,b,n;long long f[MAXN+5][MAXN+5][3],g[MAXN+5][MAXN+5][3],ans=999999999;//...原创 2020-03-06 14:20:16 · 139 阅读 · 0 评论 -
luoguP2157 [SDOI2009]学校食堂
小小的状压dp直接考虑维护一个f(i,j,s)前i−1菜已经搞定了。。。。上一次的菜是j位置,i到i+b[i]的选没选状态是sf(i,j,s)前i-1菜已经搞定了。。。。上一次的菜是j位置,i到i+b[i]的选没选状态是sf(i,j,s)前i−1菜已经搞定了。。。。上一次的菜是j位置,i到i+b[i]的选没选状态是s然后直接转移就好啦。。。。过水不过细节比较多。。。比较难写?#inc...原创 2020-03-06 14:18:54 · 134 阅读 · 0 评论 -
luoguP1415 拆分数列
比较好的dp题但是被我几下口头ac了,然后还是正解。。。。。。嘛,首先那个最小化很麻烦,怎么办呢做掉!直接把最小的给dp出来。。。具体转移如下。。。。f(i,j)前i位,最近一次起点是jf(i,j)前i位,最近一次起点是jf(i,j)前i位,最近一次起点是j显然直接转移有:f(i,j)=min(f(i,j),num(i,j)[num(i,j)>f(j,k)])f(i,j...原创 2020-03-01 22:34:48 · 132 阅读 · 0 评论 -
luogu P1074 靶形数独
比较基础的搜索剪枝题。。。。。几个优化就可以过了用lowbit代替查找可以填的数用并集来维护什么数不能填优先考虑 最小可能性的位置(讲道理我用堆维护还t了。。。。)然后就可以在$$Ω(m{n2})(n是数独大小,m是可以填的种类数量)解决实际测试中,远远不到这个上界$$#include<bits/stdc++.h>using namespace std;int...原创 2020-03-01 12:32:27 · 126 阅读 · 0 评论 -
luoguP1070 道路游戏
比较好的dp。。。dp方程被我一眼想出来。。。。我偷瞄一下题解。。。。发现还是对的。。。。自己看 代码。。。。总体复杂度有O(N3)O(N^3)O(N3)这个要优化的话,可以套个优先/单调队列优化成O(N2)O(N^2)O(N2)#include<bits/stdc++.h>using namespace std;int n,m,p,gd[1005][100...原创 2020-03-01 12:19:40 · 112 阅读 · 0 评论 -
洛谷P2577 [ZJOI2005]午餐
这个题比较好。。。。好像被我20分钟秒了???然而颓了一会炉石后。。。9点18分才打出来。。。。单独考虑一个窗口,发现答案为:MAX(sum[p−1]+cost[p])(sum[k]为1至k领饭时间之和)MAX(sum[p-1]+cost[p])(sum[k]为1至k领饭时间之和)MAX(sum[p−1]+cost[p])(sum[k]为1至k领饭时间之和)然后发现,要使得答案最大,不...原创 2020-02-29 21:27:45 · 215 阅读 · 0 评论 -
luoguP2701 [USACO5.3]巨大的牛棚Big Barn
这种dp方法通常来解决最大子矩阵相关的问题例题.1题目要求的是正方形。。。。水题。。。复杂度是O(N*M)#include<bits/stdc++.h>#define MAXN 1000using namespace std;//记f(i,j)为以i,j为右下角的正方形的边长int n,t,maxl;int f[MAXN+5][MAXN+5];bool tu[...原创 2020-02-29 13:35:24 · 226 阅读 · 0 评论 -
luogu P2279 [HNOI2003]消防局的设立
借助题解 完成的代码编写。。。。考虑一个消防局的影响。。。可以使他儿子及孙子,爷爷,父亲以及父亲的所有儿子范围是很广的。。。。意味着状态也很多。。。设f(u,0...4)分别表示为f(u,0...4)分别表示为f(u,0...4)分别表示为0.以i为根的子树,且能把i的爷爷和父亲节点给覆盖到的最小花费1.以i为根的子树,且能把i的父亲节点给覆盖到的最小花费2.以i为根的子树,且...原创 2020-02-28 23:47:10 · 126 阅读 · 0 评论 -
luogu P1220 关路灯
比较好的一道题吧。。。。。转移方程有点长(是我太弱了。。)嘛,,,记得第一次见到这个题是在初二。。。。的时候。。。然后当时就被这个题劝退了。。。。结果现在看起来也挺简单的啊。。。。。。。。。嘛,只要考虑 状态怎么设立,这题就可以解决了。。。。发现 子问题在这里,相当于是之前关灯区间。。。。。继承过来。。。。那么不一定要把最后一次关灯的位置记录下来。。可以尝试一下(类似与预支答案的操作)...原创 2020-02-28 14:02:33 · 169 阅读 · 0 评论 -
luogu P1414 又是毕业季II
嘛。。。。这个东西比较妙。。。考虑gcd在逻辑上是什么。。。然后就可以把这个题轻松解决掉#include<bits/stdc++.h>#define MAXN 1000005using namespace std;int n,dx[MAXN<<1],now,tot,maxl[MAXN<<1];map<int,int>q;int nu...原创 2020-02-28 08:30:42 · 192 阅读 · 0 评论 -
luogu P1134 [USACO3.2]阶乘问题
嘛。。。。题目很水直接取摸+去0就好了#include<bits/stdc++.h>using namespace std;long long n,now=1,mod = 10000000;int main(){ cin>>n; for(long long i=1;i<=n;i++){ now = now*i; while(now%10==0...原创 2020-02-28 08:31:10 · 200 阅读 · 0 评论 -
luoguP1306 斐波那契公约数
嘛,这个题,,有个性质。。。。(推导/打表)可以得知gcd(f(x),f(y))=f(gcd(x,y))gcd(f(x),f(y))=f(gcd(x,y))gcd(f(x),f(y))=f(gcd(x,y))然后这题就没有了。。。#include<bits/stdc++.h>using namespace std;long long n,m,f[4][4],tu[4][...原创 2020-02-28 08:32:49 · 198 阅读 · 0 评论 -
luogu P1313 计算系数
嘛,很水吧。。。直接二项式定理就搞定了。。。。不然自己随便瞎推几下就搞定了。。。#include<bits/stdc++.h>#define MAXN 1000using namespace std;long long a,b,k,n,m;long long mod = 10007;long long cj[MAXN+5];//求出阶乘//逆元//组合数lon...原创 2020-02-28 08:33:09 · 182 阅读 · 0 评论 -
luogu P2827 蚯蚓
t飞了3个点。。。#include<bits/stdc++.h>using namespace std;int n,m,t;int a,sum=0;priority_queue<int>qq;double p,u,v,zz,q,now;inline int read(){ int x=0; char c=getchar(); bo...原创 2019-12-14 16:42:46 · 162 阅读 · 0 评论 -
[HNOI2006]鬼谷子的钱袋
先考虑最大情况显然是每一个钱袋装成1然后你接着推会出先一个面额不行的情况然后就出来了#include<bits/stdc++.h>using namespace std;long long m,ans=0,p=1;long long po[1000005];int main(){ cin>>m; while(m!=0){ ans++; po[a...原创 2019-11-29 19:01:12 · 84 阅读 · 0 评论 -
luogu 2591
有点毒回家补坑#include<bits/stdc++.h>using namespace std;int n,k;int main(){ cin>>n>>k; if(n==1)cout<<1<<endl; else cout<<min(k,n-k+1)*2<<endl;}...原创 2019-11-27 17:16:57 · 112 阅读 · 0 评论 -
luoguP1540 机器翻译
水题#include<bits/stdc++.h>using namespace std;int n,m,a,ans=0;queue<int>q;bool judge[1005];int main(){ cin>>m>>n;memset(judge,false,sizeof(judge)); for(int i=1;i<=n...原创 2019-11-25 17:57:11 · 128 阅读 · 0 评论