- 博客(277)
- 收藏
- 关注
转载 20190921
A1 100pts暴力kmp#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {const int N=100010;char s[N*3],s1[N],s2[N];int l,l1,l2,nxt1[N],nxt2[N];vector <...
2019-09-22 16:50:00
227
转载 20190919
A1DP \(O(n^3)\)其实不用枚举从谁开始跳。。。懒得改了#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {inline int g() { R x=0,f=1; register char ch; while(!isdigit(c...
2019-09-22 16:21:00
180
转载 SP703 SERVICE - Mobile Service
思路:DP提交:1次题解:我们把处理到的要求作为阶段。\(f[i][x][y][z]\)表示第 \(i\) 个要求,三个人分别的位置。发现这样有很多无用状态,因为显然在第 \(i\) 个要求后,总有一个人在 \(pos[i]\)所以我们省掉一维。注意第一维要滚动。代码:#include<bits/stdc++.h>#define R register in...
2019-09-18 21:59:00
233
转载 UVA323 Jury Compromise
思路:背包类DP提交:3次错因:没有注意得分的上下界导致 RE 显示 WA题解:我们很容易的想到把两种分数做一个差,来尽量背到 \(0\) 。那最大化总分呢?这时我们可以用两种分数的和作为物品的价值。记录方案呢?每个状态开一个 vector ,来记录转移的物品。(今天新学)(虽然空间大但是方便写)代码:#include<cstdio>#include<...
2019-09-18 21:54:00
187
转载 POJ3336 Making the Grade
思路:DP提交:1次题解:最开始我们可以想到,分两种序列都做一遍。先来证明一个结论:存在一种构造,使 \(B\) 中的数都在 \(A\) 中出现过,且这样不劣。(目的是为了转化暂时看起来虚无缥缈的DP)显然一个数成立,考虑 \(B\) 的前 \(k-1\) 项,向后插入一个数 \(B_k\)。若 \(B_{k-1}\leq A_k\) ,我们直接递增插入,否则 \(B_k...
2019-09-18 21:46:00
99
转载 P5312 [Ynoi2011]D2T1
思路:01trie 按位维护提交:5边错因:爆int + 少处理询问时的右端点题解:见代码(已经不想说什么了)代码//I have my own flg; #include<bits/stdc++.h>#define ll long long#define R register intusing namespace std;namespace Luita...
2019-09-17 21:14:00
214
转载 HR# 5题解
T1 我傻了前20个数暴力开桶记录,后面的每次暴力统计。#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {int n,ans;int vis[40010];int c[30];inline void main() { cin>&g...
2019-09-17 08:22:00
104
转载 20190914
A1先贪心的(可能你们觉得很显然),我们直接从前往后扫,并且让每个区间尽量长。如何判断?差的 gcd 不为 1 + map 判重复元素。#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {inline int g() { R x=0,f=1; ...
2019-09-16 23:27:00
63
转载 20190912
A1 100pts考试时暴力打表+发现三次函数于是暴力解方程。更好的:发现是在枚举子矩形并求面积,于是有:\(\sum_{x}^n\sum_{y}^m x * y \times (n-x+1) * (m-y+1)\)设\(f(x)=\sum_{x}^n x * (n-x+1)\)\(=1*n + 2*(n-1) + 3*(n-2) + \cdots + (n-1)*2 + n...
2019-09-16 19:16:00
78
转载 CF1156E Special Segments of Permutation
思路:笛卡尔树?(好像并不一定要建出来,但是可以更好理解)提交:2次错因:没有判左右儿子是否为空来回溯导致它T了题解:建出笛卡尔树,考虑如何计算答案:先预处理每一个值出现的位置 \(pos[]\);对于每一个有左右儿子的点,设他在原序列中的值为 \(mx\),根据笛卡尔树的性质,他比自己的子树中的任何一个元素都大 。这样, 我们遍历他的轻儿子中的元素 \(vl\) ,查询 \...
2019-09-15 23:27:00
110
转载 P5358 [SDOI2019]快速查询
思路:。。。乱搞数据结构??提交:1次题解:观察到除了单点就是全局操作,所以我们维护一个全局加法标记add和乘法标记mul和答案sum。单点修改时,比如我们要把 \(pos\) 位置改成 \(y\) ,实际上我们应该储存 \(x\) , 且 \(y=mul*x+add\) ,即我们储存的是逆标记操作后的值。同时要注意全体赋值后标记和 unordered_map 的清空。代码:...
2019-09-15 22:57:00
95
转载 P2617 Dynamic Rankings
思路:数据结构提交:Inf次题解:树状数组套主席树考虑静态区间第k大是一个前缀主席树,但是如果修改是 \(O(nlogn)\) 的,查询时 \(O(logn)\) ,考虑去均衡两部分的复杂度,如何均衡的维护前缀和?于是上了树状数组。于是乎主席树 \(i\) 维护的是 \([i-lowbit(i)+1,i]\) 的区间信息。这样修改时 \(O(log^2n)\) ,查询也是 \(O...
2019-09-14 07:42:00
100
转载 [笔记] 带权并查集与种类并查集
作为一个要考试的人,还不会并查集,简直了。。。带权并查集先上一道题:P2024 [NOI2001]食物链相信大家都会吧QwQ#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {inline int g() {R x=0,f=1; re...
2019-09-12 08:37:00
115
转载 HR#4 题解
既然考这么差就来写题啦OTZT1 猜结论?猜nm!一直到考试结束都没猜出来=。=我就好奇别人如何猜出来的我们来说DP(from ZBK)设\(dp[i][j]\)表示胜or负那我们来看一下代码:#include<bits/stdc++.h>#define R register intusing namespace std;const int N=1000;...
2019-09-11 23:18:00
142
转载 POJ 1830 开关问题
怕不是今天刚会写异或高斯消元。。还是抄的lyd的思路:异或高斯消元提交:1次题解:若解唯一,答案为1无解即出现系数矩阵为0,但增广矩阵为1有自由元即一整行都是0,此时答案为 \(2^{\texttt{自由元的数量}}\)#include<iostream>#include<cstdio>#define ll long long #define...
2019-09-04 21:38:00
48
转载 P3474 [POI2008]KUP-Plot purchase
思路:单调栈提交:>5次错因:单调栈写法有问题+前缀和写错题解:若有\(>=k\ \&\&\ <=2\times k\)的点,显然直接选他就行了。否则,我们需要找到一个矩形(不一定只有一个),并且这个矩形只包含\(<k\)的点且总权值和\(>=2k\)。这样,我们可以尝试去切掉他的行来不断减少他的权值和。如果发现某一行 \(&g...
2019-09-03 20:27:00
81
转载 P5043【模板】树同构([BJOI2015]树的同构)
思路:树哈希提交:1次题解:怕不是用的oi-wiki上的公式:\[f_u=size_u\times\sum f_{son_{u,i}}\times Base^{i-1}\]#include<bits/stdc++.h>#define R register intusing namespace std;namespace Luitaryi {template&...
2019-09-03 20:09:00
92
转载 P2633 Count on a tree
思路:可持久化线段树+巧妙地树上差分提交:1次题解:我们从根开始,类似主席树板子,一个一个加点,使得从根到叶子节点时一个类似前缀和的主席树,即 \(u\) 点维护的是 \(1\) 到 \(u\) 的路径。这样我们就可以在 \(u+v-lca(u,v)-fa(lca(u,v))\) 这样一颗线段树上二分了。#pragma GCC optimize(2)#include<c...
2019-09-03 19:53:00
127
转载 SP11470 TTM - To the moon
思路:可持久化线段树+标记永久化提交:3次错因:标记维护出锅+没开long long题解:与正常的可持久化线段树的区别在于,本题是区间修改。我们应用标记永久化的思想,在\([l,r]\)中访问到的第一级线段打上标记;如图:然后更新sum数组时加上子节点的标记(完全覆盖子树信息)。query()时记得加上每一层对应的标记。#include<bits/stdc++....
2019-09-03 19:37:00
103
转载 P4774 [NOI2018]屠龙勇士
昨天晚上快走时看了这题:不是exgcd+excrt吗?旁边张大佬默默看了我一眼(觉得我会死)然后于是我今天中午才调出来Orz思路:exgcd+excrt提交:5次错因:龟速乘传进去了负数,并且用的int;之前写过的excrt的板子有问题题解:先要特判一种情况:若 \(p[i]=1\) ,答案显然就是 \(\max(\lceil\frac{a[i]}{stk[i]}\rce...
2019-09-03 13:17:00
118
转载 P2056 [ZJOI2007]捉迷藏
思路:动态点分治提交:3次错因:在加点的时候堆的操作错误。题解:为什么有时候说点分治是一种数据结构呢?我觉得是因为点分治的核心是在分治过程中产生的树形结构,即点分树,它的深度是 \(\log\) 级别的。对于这道题,我们首先要建立出来点分树(只记father),每个点维护所有孩子的答案。当修改时,我们暴力跳点分树上的father(仍是 \(\log\) 级别的)。如何维护信息...
2019-08-31 09:08:00
76
转载 P2993 [FJOI2014]最短路径树问题
思路:最短路+点分治提交:2次错因:更新桶的时候没有重置,而直接加上了。题解:对于构建最短路树,我们可以先跑最短路,然后dfs一遍连边。然后就是点分治了,还是一些桶,存点数为\(x\)的最长路径的条数。记得更新路径长度时桶要清零。代码#include<cstdio>#include<iostream>#include<cstring>...
2019-08-31 09:07:00
108
转载 P4149 [IOI2011]Race 点分治
思路: 点分治提交:5次题解:刚开始用排序+双指针写的,但是调了一晚上,总是有两个点过不了,第二天发现原因是排序时的\(cmp\)函数写错了:如果对于路径长度相同的,我们从小往大按边数排序,当双指针出现\(==k\)时,即我们应先左移右指针,否则答案可能会变劣(仔细想一想);若反着排序,应该先右移左指针。#include<bits/stdc++.h>#define ...
2019-08-31 09:06:00
73
转载 P2634 [国家集训队]聪聪可可 点分治
思路:点分治提交:1次题解:不需要什么容斥。。。接着板子题说:还是基本思路:对于一颗子树,与之前的子树做贡献。我们把路径的权值在\(\%3\)意义下分类,即开三个桶\(c[0],c[1],c[2]\),分别记录每一类的路径条数。合并的时候显然有:\[c[0]\cdot mem[0]\cdot 2+c[1]\cdot mem[2]\cdot 2+c[2]\cdot mem[1]...
2019-08-31 09:05:00
63
转载 P4178 Tree 点分治
思路:点分治提交:1次题解:要求权值和\(\leq K\) 的路径,我们可以类比点分治的模板,把长为\(len\)是否存在,改为\(len\)的路径的条数,并用用树状数组维护前缀和,这样就可以求出答案。代码:#include<bits/stdc++.h>#define R register intusing namespace std;namespace Lu...
2019-08-31 09:04:00
91
转载 LOJ 6029. 「雅礼集训 2017 Day1」市场
思路:线段树+转化提交:2次错因:由于智障没有判断左右端点ORZ题解:主要是如何把区间除下取整转化成更适合线段树的一些操作。给定除数 \(d\) ,对于一段区间,若区间只包含 \(k*d\) 与 \(k*d-1\) ,我们可以转化成区间减,因为此时做完除法,新的数与原数的差相等,即\[k*d-(k*d)/d=k*d-1-(k*d-1)/d\]\[k*d-k=k*d-1-(k...
2019-08-30 23:18:00
95
转载 [笔记]点分治
基本思路:点分治,是一种针对可带权树上简单路径统计问题的算法。对于一个节点,只解决经过这棵子树的根节点的路径,对于子节点问题下推子树。//当初的主要问题是vis[]在干什么qwq,终于知道了 #include<iostream>#include<cstdio>#include<algorithm>#define R register int...
2019-08-29 20:16:00
77
转载 P3306 [SDOI2013]随机数生成器
思路:\(BSGS\)提交:\(1\)次题解:原式可以化为\[x_{i+1}+\frac{b}{a-1}=a(x_{i}+\frac{b}{a-1})\mod p\]这不是等比数列吗?\[x_{n}+\frac{b}{a-1}=a^{n-1}\cdot (x_{1}+\frac{b}{a-1})\mod p\]所以有\[a^{n-1}=(x_{1}+\frac{b}{a-1...
2019-08-24 14:44:00
79
转载 BZOJ 4916 神犇和蒟蒻
思路:杜教筛提交:\(2\)次错因:\(sum\)函数处取模出错题解:首先第一问是智商检测题:\(\sum_{i=1}^n \mu(i^2)\)显然为\(1\)第二问其实是跟杜教筛板子那篇里面说的似的:\(f=\varphi(i^2)=\varphi(i)\cdot i\)\(S(n)=\sum_{i=1}^{n}f(i)\)配式子:\(id^2=f\cdot id\)...
2019-08-24 14:17:00
65
转载 P4213【模板】杜教筛(Sum)
思路:杜教筛提交:\(2\)次错因:\(\varphi(i)\)的前缀和用\(int\)存的题解:对于一类筛积性函数前缀和的问题,杜教筛可以以低于线性的时间复杂度来解决问题。先要构造\(h=f*g\),并且\(h\)的前缀和易求,\(g\)的区间和易求。具体地:\[\sum_{i=1}^{n}h(i)=\sum_{i=1}^{n}\sum_{d|i}g(d)\cdot f(...
2019-08-23 23:36:00
89
转载 UVA1426 Discrete Square Roots
思路:\(exgcd\)提交:\(2\)次错因:输出格式错误OTZ题解:求:\(r^2 ≡ x \mod N , 0 \leq r < N\),并且题目会给出 \(x,N\) 和一个合法的\(r_0\)。原式可以转化为 \(r^2-r_0^2\equiv 0 \mod N\)即 \((r+r_0)*(r-r_0) \equiv 0 \mod N\)可以得到 \((r ...
2019-08-23 19:00:00
64
转载 P4461 [CQOI2018]九连环
思路:\(DP\)提交:\(2\)次错因:高精写挂(窝太菜了)题解:观察可知\(f[i]=2*f[i-1]+(n\&1)\)高精的过程参考了WinXP@luogu的思路:发现一个问题。每一项约等于前一项的 \(2\) 倍。仔细分析,发现\(dp(n)=2dp(n-1)+ (n\& 1)?1:0\)既然是 \(2\) 倍,为什么不打一下 \(2\) 进制表...
2019-08-23 18:30:00
157
转载 P4118 [Ynoi2016]炸脖龙I
思路:扩展欧拉定理提交:\(\geq5\)次错因:快速幂时刚开始没有判断\(a\)是否大于\(p\)题解:用树状数组维护差分,查询时暴力从左端点的第一个数向右端点递归,若递归时发现指数变为\(1\),则指数返回\(1\);若递归出右端点,指数也返回\(1\);#pragma GCC optimize (3)#include<cstdio>#include<...
2019-08-23 17:40:00
133
转载 P4139 上帝与集合的正确用法
思路:扩展欧拉定理提交:\(1\)次题解:首先简介扩展欧拉定理:当\(b>=\varphi(p)\)时,\(a^b\equiv a^{b\%\varphi(p)+\varphi(p)} \mod p\)这样我们可以递归去算这个式子,直到\(p==1\),因为\(2^{2^{2^\cdots}}\)永远是无穷大的。代码:#include<cstdio>#i...
2019-08-23 17:17:00
49
转载 BZOJ 1420 Discrete Root
思路:数学大汇总提交:\(3\)次错因:有一个\(j\)写成\(i\)题解:求:\(x^k \equiv a \mod p\)我们先转化一下:求出\(p\)的原根\(g\)然后我们用\(BSGS\)可以求出 \(g^b \equiv a \mod p\),即\(a\)的指标\(b\).然后因为原根的幂可以表示\([0,p-1]\)中的任何一个数,所以设\(x=g^y\),原式...
2019-08-22 12:18:00
66
转载 P4014 分配问题
思路:费用流提交:\(1\)次题解:源点向人连流量为\(1\)费用为\(0\)的边,人向每个工作连流量为\(1\)费用为\(c_{i,j}\)的边,每个工作向汇点连流量为\(1\)费用为\(0\)的边。跑最小费用最大流。至于最大费用把费用全部取个负数输出答案时再取个负数就好。代码:#include<cstdio>#include<iostream>...
2019-08-19 13:36:00
159
转载 P2774 方格取数问题
思路:最小割提交:\(2\)次错因:三目运算符写错(\(QwQ\))题解:对棋盘黑白染色,源点向黑点连边,汇点向白点连边,权值均为这个点的权值。然后所有的黑点向白点连一条\(Inf\)的边。这样求出的最小割一定会割掉与源点和汇点相连的边,割掉这条边相当于不选这个点。所以最后答案就是所有点的权值-最小割。代码:#include<cstdio>#include...
2019-08-19 13:26:00
64
转载 P3254 圆桌问题
思路:最大流提交:\(1\)次题解:我们把一个人看成一单位流量。从源点向每一个单位连一条容量为单位人数的边,从每一个单位向每一条餐桌连一条容量为\(1\)的边,相当于限制一个餐桌同一个单位只能去一个人,然后从每一个餐桌向汇点连一条容量为餐桌人数的边。跑最大流。代码#include<cstdio>#include<iostream>#include&l...
2019-08-19 13:14:00
49
转载 P2469 [SDOI2010]星际竞速
思路:最小费用最大流提交:\(1\)次题解:拆点对于题目中的边\((u,v)\)且\(u<v\),则连\((u,v+n)\),流量为\(1\),费用为边权。对于能力爆发,连边\((S,i+n)\),流量为\(1\),费用为能力爆发的代价。最大流一定会跑满(即边\((i+n,T)\)满流),代表所有点都只经过一遍。\((S,i+n)\)满流代表使用了能力爆发,\((...
2019-08-17 15:01:00
80
转载 P3648 [APIO2014]序列分割 斜率优化
题解:斜率优化\(DP\)提交:\(2\)次(特意没开\(long\ long\),然后就死了)题解:好的先把自己的式子推了出来:朴素:定义\(f[i][j]\)表示前\(i\)个数进行\(j\)次切割的最大得分,\(s[i]\)为前缀和那么转移方程为:\(f[i][j]=\max(f[i-1][j]+s[j]*(s[i]-s[j]))\)优化一下(省掉第一维):\(f...
2019-08-17 00:08:00
81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人