- 博客(123)
- 收藏
- 关注

原创 关于一些板子
这里是我的省选的各种模板。1.Dijkstra算法题目描述给出一个有向图,请输出从某一点出发到所有点的最短路径长度。输入格式第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。 接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。输出格式一行,包含N个用空格分隔的整数,其中第i个整数表示从点S...
2020-08-26 16:28:13
1348
1
原创 被迫营业的网店订单管理系统【信息课作业】【python】
网店订单管理系统广州市第?中学高一(1)班B505小组问题网店接受了大量的订单,如何安排发货呢?实际上,网店在处理订单时,一般采取“先下单,先发货”的原则。因此,所有的订单将按照下单的时间顺序放进一个列表中,先放进去的先发货,所有订单排列在一起,像是一群人在排队。请编制程序实现以下功能:提供“添加订单”“发货”“查看订单列表”“退出”四个操作选项。当我们选择“1"后输入订单数据,程序将订单数据添加到订单数据表中;选择“2"后,程序将当前订单列表中最早进入的数据删除(表示已安排发货处理);选择“3”可以
2020-11-19 21:39:34
797
1
原创 一个数论函数求和问题:Σi Σj μ(i×j)【莫比乌斯反演】【min_25筛】
题意求∑i=1n∑j=1nμ(ij)\sum_{i=1}^n\sum_{j=1}^n\mu(ij)i=1∑nj=1∑nμ(ij)n≤109n\leq10^9n≤109分析这题用了一个有点妙的分块求和方法,记录一下。∑i=1n∑j=1nμ(ij)=∑i=1nμ(i)∑j=1nμ(j)[(i,j)=1]=∑i=1nμ(i)∑j=1nμ(j)∑k∣i,k∣jμ(k)=∑k=1nμ(k)∑k∣iμ(i)∑k∣jμ(j)=∑k=1nμ(k)∑i=1⌊nk⌋μ(ik)∑j=1⌊nk⌋μ(jk)=∑k=1
2020-11-17 18:03:34
1153
原创 【ARC106F】Figures 【prufer序列】【生成函数】
题意有NNN个点, 第iii个点上有did_idi个插孔,每个插孔都是独一无二的,每条边可以连接任意两个点上的两个插孔,问有多少种不同的连边方法可以连出一棵树。分析设iii的度数为degideg_idegi,则iii有didegi‾d_i^{\underline{deg_i}}didegi种插插孔的方法。考虑一棵树的pruferpruferprufer序列,如果度数已经确定,答案为(n−2)!∏i=1ndidegi‾(degi−1)!(n-2)!\prod_{i=1}^n\frac{d_i
2020-11-15 18:51:49
550
原创 【ARC106E】 Medals 【网络流】【最小割】【FWT】
题意有NNN个人(N≤18N\leq 18N≤18),第iii个人出现AiA_iAi天然后消失AiA_iAi天(Ai≤105A_i\leq 10^5Ai≤105),循环下去。每天可以给某一个出现的人发一块奖牌,问最少要多少天才能让任意一个人都有至少KKK块奖牌(K≤105K\leq 10^5K≤105)。分析首先二分答案,这样就转化为了一个判定性问题。考虑一个简单的网络流建模,SSS向每个人连一条容量为KKK的边,每个人向他出现的一天连一条容量为111的边,每一天向TTT连一条容量为111的边
2020-11-15 16:11:54
288
原创 多项式幂函数,多项式模板
待填坑。#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>using namespace std;const int N=270005,mod=998244353,inv2=(mod+1)>>1;int n,m,k,len,p,a[N],rev[N],inv[N],w[20][N],iw[20][N];long
2020-11-12 21:25:04
481
原创 【Learning】无标号生成树计数
设fnf_nfn为nnn个节点的无标号有根树数量。把生成函数写出来,设F(x)=∑i=1∞fixiF(x)=\sum_{i=1}^{\infty}f_ix^iF(x)=∑i=1∞fixi。考虑钦点一个点作为根,则需要在下面接若干棵节点数之和为n−1n-1n−1的子树。fn=[xn]F(x)=[xn−1]∏i=1∞(∑j=0∞xij)fi=[xn−1]∏i=1∞(1−xi)−fi=[xn]x∏i=1∞(1−xi)−fi\begin{aligned}f_n&=[x^{n}]F(x)\\
2020-11-09 21:41:25
466
原创 【Learning】快速沃尔什变换FWT
这里是关于FWT的一些内容。符号首先定义一些符号。A×BA\times BA×B表示某种具有特殊性质的卷积。若C=A×BC = A\times BC=A×B,Ck=∑i⊕j=kAiBjC_k=\sum_{i\oplus j=k}A_iB_jCk=i⊕j=k∑AiBji⊕ji\oplus ji⊕j表示某种具有特殊性质的运算。对于A,BA,BA,B两个数列,A∣BA|BA∣B表示将A,BA,BA,B按顺序拼接起来。A+BA+BA+B表示将A,BA,BA,B逐位相加。若C=A+BC=A+BC=
2020-11-09 21:02:31
254
原创 【LOJ574】「LibreOJ NOI Round #2」黄金矿工【模拟费用流】【树链剖分】【线段树】
题目链接把一个u上的权为x的矿工和一个v上的权为y的矿工匹配了,相当于u出现了一个权为-x的黄金,v出现了一个权为-y的黄金。每个点开个set,维护每个轻子树能爬上来的最大权的矿工和自己点上的矿工。当一条重链上的流量发生改变,只有这条链顶节点的父亲的set需要改变,删除原来的最大权矿工,加入现在的能爬上来的最大权矿工。需要在线段树上维护最值。#include<cstdio>#...
2019-08-22 20:15:35
525
原创 【bzoj1920】[Ctsc2010]产品销售【模拟费用流】【线段树】
题目传送门真心哭了,翻了全网居然找不到一篇题解qaq我们可以考虑一个简单的网络流建图。S−>i:(Di,0)S->i:(D_i,0)S−>i:(Di,0)i−>T:(Ui,Pi)i->T:(U_i,P_i)i−>T:(Ui,Pi)i−>i+1:(inf,Ci)i->i+1:(inf,C_...
2019-08-22 19:48:58
332
原创 【bzoj5326】[Jsoi2017]博弈【模拟费用流】【线段树】
真的就是个位数AC的题目了。。题目链接题意:有两个人ABABAB,轮流取n个格子,每个格子有两个属性a[i],b[i]a[i],b[i]a[i],b[i]。AAA取一个格子iii可以获得a[i]a[i]a[i]的收益,BBB取iii可以获得b[i]b[i]b[i]的收益,每个格子只能被取一次,AAA先手。AAA会根据BBB的取法选择最优策略,使得自己选的格子的收益和减BBB的收益和最大,BBB...
2019-08-14 19:00:34
403
2
原创 【HDU6136】 Death Podracing 【堆】【模拟】
Description炮艇大赛是一项危险的比赛。为了赢得这场比赛,参赛者可能会牺牲自己的生命。参赛者将会在一条长度为 LLL的环形轨道上比赛。在比赛开始时(000时刻),所有参赛者站在轨道不同的位置上,其中第 iii 名参赛者站在位置 di(0≤di<L)d_i(0≤d_i<L)di(0≤di<L) 上。然后比赛开始。每位参赛者驾驶着它的炮艇,速度为 vi...
2019-08-05 17:05:02
230
原创 【bzoj1038】[ZJOI2008]瞭望塔【模拟退火】
题意:给你一段起伏的山,让你找出一个点,使得在这个点时可以看到山上的任何一个点。题解:这题正解是半平面交,用模拟退火可以过。让退火去跑最佳的x,然后二分出y。退火的调参很重要,重点是要给予足够的时间让其充分冷却才能跑出最优解。我调了几十发的参= =二分的check,只要用叉积判断一下相邻两个点减去观察点得到的两个向量的方向就可以了。代码:#pragma GCC optimize("O3,f...
2019-03-23 08:10:57
323
原创 【bzoj3672】[Noi2014]购票【斜率优化dp】【线段树】
这个斜率优化式很简单,推一下就出来了,跟陶陶的难题II很像。接下来就在线段树上维护凸包就好了。查询的时候在线段树上找到对应区间,然后在凸包上二分。为了方便,我写了可撤销的线段树+凸包。#pragma GCC optimize(3)#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;cmath&gt;#include&
2018-12-08 21:21:57
263
原创 【bzoj4162】shlw loves matrix II 【特征多项式】【拉格朗日插值】
题意:给你一个n×nn\times nn×n的矩阵,求它的kkk次方模100000000710000000071000000007。n≤50,k≤210000n\le50,k\le2^{10000}n≤50,k≤210000。首先,特征多项式的定义是什么?我们定义矩阵AAA的特征多项式f(x)=det(A−xI)f(x)=det(A-xI)f(x)=det(A−xI),其中III表示单位矩阵,...
2018-12-08 21:16:08
600
原创 【CF375C】Circling Round Treasures【XSY1176】大包子环绕宝藏【状压dp】
注意到题目中有这一句话:注意路线可以自交。为了确定一个格子是否在这条路线里面,请使用以下算法判断:1.假设该点的坐标为需要判断的点为 p(i,j) ,该点不在路线上2.从该点往任意方向作一条射线,如果与路线相交奇数次,我们就认为这个格子在这条路线里面,否则这个格子在这条路线外面。我们设f[i][j][k]f[i][j][k]f[i][j][k]表示当前格子为i,ji,ji,j,所有宝藏或...
2018-10-04 22:48:44
321
原创 【 2016北京集训测试赛(十七)】crash的游戏【组合数】【斯特林数】
题意:求∑i=0mCmi×Cn+2i−mk\sum_{i=0}^{m} C_{m}^{i}\times C_{n+2i-m}^{k}i=0∑mCmi×Cn+2i−mk其中n,m≤109n,m\le10^{9}n,m≤109,k≤300k\le300k≤300。共TTT组数据,T≤500T\le500T≤500。题解:推式子!首先,我们想到Cxk=∏i=0k−1x−ik−iC_{x...
2018-09-29 19:36:22
264
原创 【nowcoder Wannafly挑战赛24 F】 wyf的超级多项式【FFT/NTT】【构造】
题目传送门停更已久的blog。。。神题啊!orzorz ckw大佬我们考虑构造fff的递推式。我们设有数组ccc,满足f[n]=∑i=1kc[i]×f[n−i]f[n]=\sum_{i=1}^{k}c[i]\times f[n-i]f[n]=i=1∑kc[i]×f[n−i]我们令c[0]=−1c[0]=-1c[0]=−1,则∑i=0kc[i]×f[n−i]=0\sum_{i=0}^{...
2018-09-27 22:22:41
456
原创 【bzoj4002】[JLOI2015]有意义的字符串【数论】【矩阵快速幂】
题意:求⌊(b+d√2)n⌋&amp;amp;amp;amp;amp;nbsp;mod&amp;amp;amp;amp;amp;nbsp;7528443412579576937⌊(b+d2)n⌋&amp;amp;amp;amp;amp;nbsp;mod&amp;amp;amp;amp;amp;nbsp;7528443412579576937\lfloor(\frac{b+\sqrt{d}}{2})^n\rfloor\ mod\ 75284434
2018-08-27 22:26:57
351
原创 【bzoj4383】[POI2015]Pustynia【拓扑排序】【线段树优化建图】
其实就是一些大小关系。我们设一条边u−&amp;gt;vu−&amp;gt;vu-&gt;v代表u&amp;gt;vu&amp;gt;vu&gt;v或者u≤vu≤vu\le v,这要看具体情况,或者说分两类。对于每个限制,我们可以开一个虚点,每个大的向虚点连一条≤≤\le的边,然后发现虚点会向若干段连续区间连边,直接线段树优化连边就好了。最后填数时,倒过来贪心,深度越深,就贪心取越小。其实这就是一个DAG上的dp
2018-08-24 17:03:17
477
原创 【ARC082E】Convex Score【枚举】
考虑一个有nnn个顶点凸多边形,多边形内(包括顶点)有kkk个点,则会造成2k−n2k−n2^{k-n}的贡献。我们可以转化一下,k−nk−nk-n其实就是凸多边形内部的点的数量,2k−n2k−n2^{k-n}就是这些点每个都可以取或者不取的方案数。所以我们就可以把问题转化一下:有多少种选点的方案,使得这些点围起来是一个凸多边形。 考虑怎样的情况,这些点围起来不是一个凸多边形,那一定是出现了三点...
2018-08-24 16:37:39
217
原创 【bzoj4712】洪水【树链剖分】【动态dp】
我们首先想一个dp方程:f[u]=min{∑v,v∈son[u]f[v],val[u]}f[u]=min{∑v,v∈son[u]f[v],val[u]}f[u]=min\{\sum_{v,v\in son[u]}{f[v]},val[u]\}。 这个方程可以通过矩阵的形式来表示。 先把树轻重链剖分了。 我们设h[u]h[u]h[u]为uuu的所有轻儿子的fff总和,vvv为uuu的重儿子。 ...
2018-08-21 21:04:15
583
原创 【AGC007F】Shik and Copying String【贪心】【队列】
画一个折线图。每一行表示一次复制,每一列表示一个位置,红线表示字母确定过程的路线。 则我们可以从T串从右往左贪心取,使得折线尽量靠右。可以证明这样子是最优的。 具体实现时,我们可以维护一个队列,里面存在若干的T中的位置和S中匹配尽量靠后匹配位置的最大值,而且要满足这些位置和当前位置是相互影响的,也就是两个位置的折线会交在一起。这样子我们就要开队列大小+1层,使得不会冲突。#incl...
2018-08-21 20:47:59
551
原创 【AGC004F】Namori【树形dp】
神题。。。 orz wzd大神 代码#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;using namespace std;const int N=100005;int n,m,u,v,cnt,head[N],to[N*2],nxt[N*2];void adde(int u,int v)...
2018-08-20 21:29:12
302
原创 【AGC004E】Salvage Robots【动态规划dp】
貌似我的dp和大多数写法不太一样。。常数巨大。 我们设f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]为剩下横坐标范围为i to ji to ji\ to\ j,纵坐标范围为k to lk to lk\ to\ l这个矩形,内部的机器人都还存在,这个矩形外部取出的机器人的最大数量。 转...
2018-08-20 21:24:42
420
原创 【AGC016B】Colorful Hats【结论题】
结论题,一直在猜结论。 分几种情况讨论。 设maxnmaxnmaxn为看到数量的最大值,minnminnminn为看到数量的最小值。 1.maxn−minn>11.maxn−minn>11.maxn-minn>1 直接输出No。 2.maxn==minn2.maxn==minn2.maxn==minn (1)minn==n−1(1)minn==n−1(1)minn==n-1输...
2018-08-20 21:10:52
418
原创 【bzoj2090】[Poi2010]Monotonicity 2【线段树优化dp】
乱写了一个dp,结果A掉了。。 f[i]f[i]f[i]表示以iii结尾的最长长度。 首先f[i]=1f[i]=1f[i]=1。 然后f[i]=max{f[j]}+1f[i]=max{f[j]}+1f[i]=max\{f[j]\}+1 jjj满足 1.j<i1.j<i1.j2.s[(f[j]−1)%k+1]为′=′,a[j]=a[i]2.s[(f[j]−1)%k+1]为′=′...
2018-08-19 19:19:01
330
原创 【bzoj1535】[POI2005]Sza-Template【乱搞】
这道题我用一个思维难度和代码难度都比较低的算法过了,感觉性价比还是蛮高的qwq 我们首先设f[i]f[i]f[i]为s[i..n]s[i..n]s[i..n]和s[1..n]s[1..n]s[1..n]匹配的最大长度。 对于怎么求fff,我是直接二分+哈希乱搞求的。 考虑怎样的一个前缀的长度lll,可以作为模板。 对于所有f[i]≥lf[i]≥lf[i]\ge l的iii,也就是从i开始可...
2018-08-18 16:35:18
637
原创 【bzoj1533】[POI2005]Lot-A Journey to Mars【单调队列】
这题不难,主要讲一下思维过程。 我们设a[i]a[i]a[i]为iii的油量,b[i]b[i]b[i]为iii到i+1i+1i+1或当i=ni=ni=n时nnn到111的路径长度。 我们先考虑一个方向。 如果111满足要求,应满足哪些条件? a[1]≥b[1]a[1]≥b[1]a[1]\ge b[1] a[1]+a[2]≥b[1]+b[2]a[1]+a[2]≥b[1]+b[2]a[1]+...
2018-08-18 15:14:25
457
原创 【bzoj1124】[POI2008]枪战Maf【拓扑排序】【贪心】
还是自己的思维不够缜密啊,想到了正解却在代码实现上忽略了一些细节。。。 考虑如何使得死的人最少。 首先,我们发现入度为0的点一定是存活的,它指向的点一定会被杀死。我们就把它指向的点给删掉。这样有会有一些点的入度变成0。重复以上一个类似于拓扑排序的过程,最后剩下一些环,设某个环的大小为sizsizsiz,则最少死亡⌊siz+12⌋⌊siz+12⌋\lfloor\frac{siz+1}{2}\rf...
2018-08-18 14:20:49
367
原创 【bzoj1471】不相交路径【容斥原理】【动态规划】【拓扑排序】
题目描述 给出一个N(n&amp;amp;amp;lt;=150)个结点的有向无环简单图。给出4个不同的点a,b,c,d,定义不相交路径为两条路径,两条路径的起点分别为a和c,对应的两条路径的终点为b和d,要求满足这两条路径不相交,即两条路径上没有公共的点。 现在要求不相交路径的方案数。 题解 我们注意到这个图是一个DAG,所以在这上面可以很方便地dp很多东西。 我们设f[i][j]f[i][j]f[i][j]表...
2018-08-17 20:34:47
2820
原创 【ARC082F】Sandglass【线段树】
我们可以首先把所有询问按时间排序,然后维护一棵以初始沙子数量为下标的线段树。把反转操作依次进行,相当于区间加减,然后区间对0取max,对x取min。这些可以简单地通过线段树实现。在执行操作的过程中询问答案。但是下标有10910910^9的范围,怎么办?我们动态开点就好。#include&lt;bits/stdc++.h&gt;using namespace std;const int N=...
2018-08-17 18:59:43
233
原创 【AGC004D】Teleporter【结论题】
先把1号节点连向自己,然后从深往浅贪心,每隔k的深度连一条边到1。#include<bits/stdc++.h>using namespace std;const int N=200005;int n,k,ans,cnt,a[N],dep[N],head[N],to[N*2],nxt[N*2];void adde(int u,int v){ to[++cnt]=...
2018-08-17 18:53:58
320
原创 【BZOJ1183】[Croatian2008]Umnozak【数位dp】
考虑到nnn的self−productself−productself-product一定是2,3,5,72,3,5,72,3,5,7的倍数,且不超过n−−√n\sqrt{n},所以可以枚举self−productself−productself-product,然后记忆化搜索就好了。。#include&lt;cstdio&gt;#include&lt;cstring&gt;#incl...
2018-08-16 20:33:04
387
原创 【AGC003F】Fraction of Fractal【矩阵快速幂优化dp】
首先,如果所有黑色格子都不与边界相邻,设有ttt个黑色格子,答案为tktkt^k。 其次,如果两幅最开始的图任意拼再一起都联通,答案显然为111。 最后我们就剩下左右拼起来联通和上下拼起来联通两种情况。这两种类似,而且都比较好计算。 这里只讲左右拼起来联通的情况。 我们设f[i]f[i]f[i]为iii阶分形中联通块的数量,g[i]g[i]g[i]为iii阶分形中有多少个联通块满足,这种分...
2018-08-16 20:28:27
282
原创 【AGC008F】Black Radius【树形dp】
题目链接 这道题。。。神题,花了半天的时间终于搞懂了。 我们设二元组(u,d)(u,d)(u,d)表示以uuu为染色中心,ddd为染色半径染黑的点的集合。为了方便,我们先钦定这些二元组染出的点的集合不为全集,这样答案最后加一就好了。 我们先钦定一个点uuu为染色中心。 1.1.1.这个点可以作为染色中心。则这个点使染色不会发生重复的染色半径ddd的范围为d≥0d≥0d≥0,且 {d<...
2018-08-16 19:23:14
484
原创 【GDKOI2016】小学生数学题 【自然数幂求和】【斯特林数】
题意:求∑ni=1i−1&nbsp;mod&nbsp;pk∑i=1ni−1&nbsp;mod&nbsp;pk\sum_{i=1}^ni^{-1}\ mod\ p^k的值。保证ppp为质数,n×pm&lt;=1018n×pm&lt;=1018n\times p^mf(n,k)=∑ni=1i−1&nbsp;mod&nbsp;pkf(n,k)=∑i=1ni−1&nbsp;
2018-08-14 19:40:42
675
原创 【XSY3163】Tree Ext【二分】【最小生成树】【矩阵树定理】【拉格朗日插值】
给一张 n 个点 m 条边的无向连通图,每条边是黑边或白边 ,有边权。问有多少棵恰好有k条白边,且在此前提下边权和最小的生成树。mod 1e9+7。 首先看一看这道题。 ACM Live Archieve 7138 这里有一个无比良心的题解。 这里写链接内容 膜拜这位不知名的ACM大神! 由于发现博主已经两年多没更新了,这个网站可能会隔,蒟蒻截了张图。。。如果侵权,马上删除。 对...
2018-08-14 07:48:42
826
原创 【bzoj3998】[TJOI2015]弦论【后缀自动机】
其实两问都差不多。。。 我们令cnt[i]cnt[i]cnt[i]为iii这个状态在原串中出现的次数。再在每个状态维护一个sizsizsiz。若T=0T=0T=0,siz[i[siz[i[siz[i[表示iii的所有儿子的sizsizsiz之和+1+1+1(子树大小),否则siz[i[siz[i[siz[i[表示iii的所有儿子的sizsizsiz之和+cnt[i]+cnt[i]+cnt[i](...
2018-08-13 21:52:13
574
原创 【ARC062F】Painting Graphs with AtCoDeer【双联通分量】【Polya定理】
题解 相关 感觉都讲得挺清楚的了。 代码挺矬的。。。#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<set>using namespace std;const int N=55,M=205,mod=10000000...
2018-08-13 21:41:23
656
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人