Nowed

醉后不知天在水,满船清梦压星河。
私信 关注
ssl_lw
码龄4年

少说话,多做事,多问。 把泪水种在心上,一定会开出勇敢的花。

  • 134,619
    被访问量
  • 752
    原创文章
  • 7,209
    作者排名
  • 235
    粉丝数量
  • 于 2017-08-18 加入CSDN
获得成就
  • 获得363次点赞
  • 内容获得103次评论
  • 获得36次收藏
荣誉勋章
兴趣领域
  • #算法
    #scikit-learn#排序算法#mxnet#迁移学习#分类#PyTorch#NLP#回归#TensorFlow#CV(computer vision)#聚类#集成学习#caffe#推荐算法
TA的专栏
  • 最优树/GarsiaWachs算法
    1篇
  • 启发式合并
  • 莫队
    5篇
  • 树链剖分
    5篇
  • 斜率优化
    2篇
  • 树的直径
    1篇
  • 匈牙利算法(二分图最大匹配)
    9篇
  • 网络流(/最大流)
    14篇
  • 杂文/总结
    74篇
  • 广度优先搜索(bfs)
    17篇
  • 深度优先搜索(dfs)
    32篇
  • [序列]LIS/LCS
    11篇
  • 贪心算法
    39篇
  • 数论(数学)
    81篇
  • 动态规划(/线性DP)
    87篇
  • 图论(/基础/最小环)
    22篇
  • 强连通分量(/Kosaraju/tarjan)
    7篇
  • 二分(二分答案)
    32篇
  • 数据结构(/堆排序/桶/数)
    39篇
  • 暴力(/模拟/字符串处理)
    90篇
  • 高精度算法
    10篇
  • 并查集
    23篇
  • 最小生成树
    16篇
  • 最短路径
    42篇
  • 分治(/cdq分治)
    7篇
  • 倍增(RMQ/st算法,树上倍增)
    14篇
  • 哈希(hash)
    13篇
  • 树形动态规划
    20篇
  • 线段树
    24篇
  • 树状数组
    11篇
  • 离散化
    13篇
  • LCA问题(/tarjan)
    8篇
  • USACO
    2篇
  • 单调队列
    10篇
  • KMP算法
    9篇
  • 区间动态规划
    7篇
  • 扩展欧几里得算法(/同余方程)
    3篇
  • 可持久化线段树(主席树)
    5篇
  • 差分约束系统
    3篇
  • 圆方树(仙人掌问题)
    2篇
  • AC自动机(/后缀自动机)
  • 欧拉函数/乘法逆元/
    14篇
  • 博弈论(NIM博弈/SG函数)
    7篇
  • 状态压缩动态规划
    12篇
  • 数学期望
    11篇
  • Trie(字典树)
    5篇
  • 最小表示法
    3篇
  • 矩阵乘法(快速幂加速递推)
    22篇
  • 分块
    6篇
  • 线性空间/高斯消元
    4篇
  • 扫描线
    3篇
  • 基环树
    1篇
  • 计算几何
    13篇
  • 0/1分数规划
    2篇
  • 差分
    5篇
  • USACO
    5篇
  • Manacher算法
    2篇
  • 平衡树
    2篇
  • 莫比乌斯反演
  • 快速傅里叶变换(FFT/NTT/FWT)
    1篇
  • 打表
    1篇
  • 随机算法
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

模板小记4

文章目录可持续化线段树树链剖分可持续化线段树注意$l$和$1$要区分#include<cstdio> #include<algorithm>#include<cstring>using namespace std; const int N=200010; int n,m,b[N<<5],cnt,L[N<<5],R[N<<5],sum[N<<5],a[N<<5],t[N<<5]; in
原创
57阅读
0评论
0点赞
发布博客于 3 月前

模板小记3

文章目录匈牙利算法离散化最长公共上升子序列单调栈博弈康拓展开最小表示法缩点割点最大流最小费用最大流匈牙利算法#include<cstdio>#include<algorithm>#include<cstring>#include<map>#define mp(x,y) make_pair((x),(y))using namespace std; const int N=1e5+5; struct node{ int y,nt; }a[N*
原创
56阅读
1评论
0点赞
发布博客于 3 月前

模板小记2

文章目录线段树单调队列KMP字符串匹配RMQ等比数列龟速乘差分约束0/1分数规划矩阵乘法线段树区间乘,区间加,区间查询#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define ll long longusing namespace std; const ll N=1e5+5; struct node{ ll sum,mul,add; }a[
原创
70阅读
0评论
0点赞
发布博客于 3 月前

模板小记

dij// wa 1ci#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<queue>#define mp(x,y) make_pair((x),(y))#define rep(i,x,y) for(int i=x;i<=y;i++)using namespace std; const int N=5e5+5;
原创
99阅读
1评论
0点赞
发布博客于 3 月前

#树上差分+lca# [校测 小王子]

TitleSolution考虑统计所有的树边被新边覆盖了几次。1.覆盖0次,则毁掉它就已经可以使树断裂了。这时任意选一条新边去毁,产生M种方案。2.覆盖1次,则毁掉它和覆盖它那条新边就一定能使树断裂,产生的方案数为1,是唯一解。3.覆盖2次或以上,无论怎么样都不能使树断裂,产生的方案数为0定义g[u]的意义为,u和它父亲连接的那条边被覆盖的次数。对于每一条新边〈u,v〉,令g[u]++;g[v]++;g[lca(u,v)]-=2。然后dfs一遍,对于每条树边〈u,v〉(u是v父亲),
原创
34阅读
0评论
0点赞
发布博客于 3 月前

#二进制分组+dij# [校测 普通快乐]

Title给旅行者很像,但是这道题目是单向边。Solution非正解: 把所有特殊点压进队列里,然后跑dij,记录次小值和最大值,可以枚举任一个非特殊点求解;正解: Code(非正解)#include<cstdio> #include<algorithm>#include<cstring>#include<iostream>#include<queue>#define mp(x,y) make_pair((x),(y))
原创
35阅读
0评论
0点赞
发布博客于 3 月前

#容斥# [校测 选数字]

Title大意:给定一个序列,QQQ次询问,l,r,zl,r,zl,r,z,询问在[l,r][l,r][l,r]区间内选出333个数字的按位或的结果等于zzz的方案数。SolutionCode#include<cstdio> #define rep(i,x,y) for(int i=x;i<=y;i++)using namespace std; const int N=255,M=1e5+5; int c[N+5]={0,1,1},s[M][N+5],a[M],n,
原创
26阅读
0评论
0点赞
发布博客于 3 月前

#gcd# [校测 堆箱子]

Title大意:SolutionCode#include<cstdio>#include<algorithm>using namespace std; int L,n,m; double ans; int gcd(int x,int y){return (!y)?x:gcd(y,x%y);}int main(){ scanf("%d%d%d",&L,&n,&m); int g=gcd(n+L,m+L); if (n<
原创
29阅读
0评论
0点赞
发布博客于 3 月前

#Floyd分治# [Ybtoj NOIP2020 模拟赛 B 组 Day7]路径之和

Title大意:询问不经过k∈[1,n]k\in [1,n]k∈[1,n],任意有序数对(l,k,r)(l,k,r)(l,k,r)的最短路和。SolutionCode#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define ll long long#define rep(i,x,y) for(int i=x;i<=y;i++)usi
原创
34阅读
0评论
0点赞
发布博客于 3 月前

#Trie# [Ybtoj NOIP2020 模拟赛 B 组 Day7] 区间异或

Title大意:给一个区间,询问有多少了区间满足异或和不小于给定的正整数KKKSolution注意一开始trie要插入初始值0设s[i]s[i]s[i]表示[1,i][1,i][1,i]的异或和,[l,r][l,r][l,r]的异或和相当于s[r] xor s[l−1]s[r]\ xor\ s[l-1]s[r] xor s[l−1]可以用TrieTrieTrie表示前缀xorxorxor和如何求大于等于KKK的区间数,可以在查询的时候,强制前面某些位相同
原创
35阅读
0评论
0点赞
发布博客于 3 月前

#离散化+树状数组# [luogu P3586] [POI2015]LOG

TitleP3586 [POI2015]LOG对于一个一开始长度为000的序列,有mmm次操作。有两种操作:将某一位改成一个数判断是否能将进行sss次从序列中选出ccc个正整数,并将它们减一的操作。Solution注意离散化分别对应的数组注意可能会炸long long ,但是大概要估计一下空间关键在第二个操作Z c sZ\ c\ sZ c s。设cntcntcnt为序列中有多少个数是大于等于sss的数量,sumsumsum为序列中小于sss的
原创
25阅读
0评论
0点赞
发布博客于 3 月前

#线段树#[gmoj 5361] 捕老鼠

Title有nnn段可覆盖区间[a[i].l,a[i].r][a[i].l,a[i].r][a[i].l,a[i].r]问最少需要多少段这样的区间将[1,n][1,n][1,n]覆盖完。Solution设f[i]f[i]f[i]表示[1,i][1,i][1,i]中的最少覆盖区间数对于每根线段f[r]=min(f[i])+1a[i].l−1≤i<a[i].rf[r]=min(f[i])+1 \\\small a[i].l-1\leq i<a[i].rf[r]=min(f[i])+1a
原创
15阅读
0评论
0点赞
发布博客于 3 月前

#数学期望# [牛客第六场 袜子分配]

Title袜子分配大意: 将nnn双袜子,各双袜子的颜色不一,问nnn次随机抽取一对袜子,如果是同色的话,就会开心一次。 问期望的开心次数。Solution暴力跑全排列找规律。n/(2∗n−1)n/(2*n-1)n/(2∗n−1)一共有2n只袜子,所以就有2n!种拿法。将每对袜子拆成两个不一样的,那么他们在一起当且仅当在n个组的同一组内即为n2n^2n2 种,因为拆成了两个不一样的,所以要乘222。然后每个袜子对期望的贡献是独立的,所以剩下的2n−22n-22n−2只可以随便排。那么答案就
原创
44阅读
1评论
0点赞
发布博客于 3 月前

#二分+贪心# [校测 大鱼吃小鱼]

Title大意:有nnn条小鱼,两两分组(只剩下一个的单独分组),如果一条小鱼是另外一条小鱼的两倍或以上就能把另外一条小鱼吃掉,问最后的剩下的最少的小鱼数量。Solution首先,从小到大排序,假如是可以匹配的话,前kkk条小鱼是一定与后kkk条小鱼匹配的。我们可以二分前kkk条小鱼,每次checkcheckcheck判断后kkk条小鱼是否能匹配。Code#include<cstdio>#include<algorithm>#include<cstring&
原创
25阅读
0评论
0点赞
发布博客于 3 月前

#概率# [校测 超级蚯蚓]

Title大意:有nnn样物品,每个物品有头尾,每一次操作为随机将两个物体头尾相连成一个物体(就是环),进行nnn次操作。问刚好形成环的概率。Solution可以用DPDPDP做,设f[i][j]f[i][j]f[i][j]表示iii条蚯蚓,有jjj条形成环的概率,f[n][0]=1,f[2][2]=2/3f[n][0]=1,f[2][2]=2/3f[n][0]=1,f[2][2]=2/3。化成一维的话f[j]=f[j−1]∗(2∗n−2)/(2∗n−1)f[j]=f[j-1]*(2*n-2
原创
27阅读
0评论
0点赞
发布博客于 3 月前

#RMQ# [校测 小鱼吃大鱼]

Title求max{Aimod   Aj}(Ai≥Aj)max\begin{Bmatrix}A_i\mod\ A_j\end{Bmatrix}(A_i\geq A_j)max{Ai​mod Aj​​}(Ai​≥Aj​)Solution我们可以暴力枚举值域的倍数,查找在这个[j,j+i−1][j,j+i-1][j,j+i−1]区间内的最大数值(可以用RMQRMQRMQ预处理)减去初始值jjj,就是这个数值在%j\%j%j时的值。Code#include<cstd
原创
24阅读
0评论
0点赞
发布博客于 3 月前

#DFS# [校测 年会小游戏][luogu P1463] [POI2002][HAOI2007]反素数

TitleP1463 [POI2002][HAOI2007]反素数Solution注意两数相乘大于另一个数的判断中可能会出现爆long long的情况,所以尽量换成除法对于这一道题目最多会出现的质因数不超过10个2.xxx的质因子是连续的若干个最小的质数,并且指数单调递减 。Code#include<cstdio>#include<algorithm>#define ll long long #define rep(i,x,y) for(ll i=
原创
32阅读
0评论
0点赞
发布博客于 3 月前

#区间乘# [luogu P3373] 【模板】线段树 2

TitleP3373 【模板】线段树 2Solution注意快读不要为了省常数而不去判断负数注意区间乘要先处理,然后再处理区间和Code#include<cstdio>#include<cstring>#include<string>#include<algorithm>#define LL long long #define rep(i,x,y) for(LL i=x;i<=y;i++) using namespace s
原创
39阅读
0评论
0点赞
发布博客于 4 月前

#三分# [luogu P3382] 【模板】三分法

TitleP3382 【模板】三分法Solution三分模板Code#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define db doubleusing namespace std; const db eps=1e-7; int n; db l,r,mid,a[15]; db check(db k){ db sum=0; for(
原创
25阅读
0评论
0点赞
发布博客于 4 月前

#主席树+字典序# [牛客 经典字符串问题]

Title经典字符串问题给定nnn个数,有qqq次询问,询问[l,r][l,r][l,r]的第kkk大,如果没有答案输出−1-1−1需要把每一个数当作字符串。Solution注意字典序的判定主题题目要求的是第k小把输入按字典序排序,记录rankrankrank,然后直接套主席树静态求区间第KKK小。Code#include<cstdio>#include<algorithm>#include<cstring>#define rep(i,x,y)
原创
28阅读
0评论
0点赞
发布博客于 4 月前

#KMP# [牛客 K匹配]

TitleK匹配询问SSS串中有多少字串包含TTT串。SolutionKMPKMPKMP求出每个TTT的位置。一开始是用总的字串个数减去不合法的字串个数,但是不知道考虑少了些什么情况。设c[i]c[i]c[i]表示第iii个TTT串的位置,每一次的答案统计是(c[i]−c[i−1])∗(n−k−c[i]+2)\mathbf{ (c[i]-c[i-1])*(n-k-c[i]+2) }(c[i]−c[i−1])∗(n−k−c[i]+2)Code#include<cstdio>
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#线性筛# [牛客 三元组计数]

Title三元组计数给定三个数a,b,ca,b,ca,b,c,要求bbb是aaa的倍数,ccc是bbb的倍数,且a<b<ca<b<ca<b<c,问[1,n][1,n][1,n]之间这样的三元组有多少?Solution对于一个数iii,iii的因子个数∗(n/i−1)*(n/i-1)∗(n/i−1)累求贡献。暴力可过,就打暴力了。Code#include<cstdio>#include<algorithm>#define ll
原创
24阅读
0评论
0点赞
发布博客于 4 月前

#线段树优化建图# [luogu CF786B] Legacy

TitleCF786B Legacy有nnn个点,然后有mmm次操作,其中有333种建图的操作,最后询问的以sss为起点,分别以每个点为终点的最短路。正常连接xxx和yyy连接xxx到[l,r][l,r][l,r]连接[l,r][l,r][l,r]到xxxSolution注意dijkstra中判断vis,因为我也不知道我到底改了些什么东西,最后把vis的位置换了一下就AC了跟这一道题#线段树优化建图# [luogu P4083] [USACO17DEC]A Pie for a Pie
原创
35阅读
0评论
0点赞
发布博客于 4 月前

#树状数组+并查集# [luogu P4145] 上帝造题的七分钟2 / 花神游历各国

TitleP4145 上帝造题的七分钟2 / 花神游历各国给定nnn个数mmm次操作,如果zzz是111的话,查询lll到rrr之间的和,否则将lll到rrr之间的数都开方。Solution注意开long long因为对于一个数,最多开666次方,所以当一段区间都是111的时候,就可以跳过,处理下一段。然后就是用树状数组暴力处理。Code#include<cstdio> #include<algorithm>#include<cmath>#in
原创
33阅读
0评论
0点赞
发布博客于 4 月前

#数学# [ssloj 数星星]

Main idea有nnn颗星星,编号为111到nnn,然后取出kkk个数,要求这kkk个数至少有rrr个数是编号连续的。Solution设已经取了iii个的rrr个连续,那在n−k+1n-k+1n−k+1种任意取iii块,然后对于剩下的k−i∗rk-i*rk−i∗r可以在n−i∗rn-i*rn−i∗r中任意取。ans=∑i=1⌊kr⌋(−1)i−1Cn−k+1iCn−i∗rk−i∗r\large ans=\sum_{i=1}^{\left \lfloor \frac{k}{r} \right \
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#字符串# [牛客 语言]

Title语言Solution如果一个字符串中出现了两个444或者是开头和结尾都是444的话,肯定不能组成一个句子。然后对于一个动词,只要前一位是个名词,和最后一位也是个名词时就能组成句子。Code#include<cstdio>#include<algorithm>#include<cstring>#define rep(i,x,y) for(int i=x;i<=y;i++)#define A(x) ((x)&1)#define
原创
21阅读
0评论
0点赞
发布博客于 4 月前

#线段树优化建图# [luogu P4083] [USACO17DEC]A Pie for a Pie G

# `Title` [P4083 [USACO17DEC]A Pie for a Pie G](https://www.luogu.com.cn/problem/P4083)有$2*n$个馅饼,其中前$n$个是$B$做的,后$n$个是$E$做的,$B,E$都对馅饼有自己的评分。 从$B$开始互赠馅饼$x$
原创
42阅读
0评论
0点赞
发布博客于 4 月前

#线性筛# [牛客 GCD]

TitleGCDSolution注意一定要把思路清晰了,然后再实现,加快码题的效率当xxx包含相等的质因子(xαx^\alphaxα(x∈primex \in primex∈prime))时,ans+=xans+=xans+=x否则因为都是质因数,所以总的gcdgcdgcd是111类似莫比乌斯函数Code#include<cstdio>#include<algorithm>#include<cstring>#define ll long long
原创
27阅读
0评论
0点赞
发布博客于 4 月前

#树上带修莫队# [luogu P4074] [WC2013]糖果公园

TitleP4074 [WC2013]糖果公园Solution注意莫队中的指针左右扫描一定要写对ql和qr,找了我一晚的错误。。。!!!树上莫队上加一个时间的维度Code#include<cstdio> #include<algorithm>#include<cstring>#include<string>#include<cmath>#define ll long long #define rep(i,x,y) for
原创
43阅读
0评论
0点赞
发布博客于 4 月前

#离散化+欧拉序+lca+树上莫队# [luoguSP10707] COT2 - Count on a tree II

TitleSP10707 COT2 - Count on a tree IISolution注意lca别打错了注意欧拉序的区间别错了注意不带修的莫队块的大小设置为sqrt(n),否则为pow(n,2.0/3.0)先把节点离散化一下。我们可以求树上的欧拉序,对于任意两个点上的路径,就是从iii到jjj的只出现了一个数的节点。假如是它们的lcalcalca的话,就不会出现在序列中,所以要特殊处理。用firstfirstfirst标记第一次出现的位置,用lastlastlast标记第二次出现的
原创
52阅读
0评论
0点赞
发布博客于 4 月前

#带修莫队# [luogu P1903] [国家集训队]数颜色 / 维护队列

TitleP1903 [国家集训队]数颜色 / 维护队列Solution注意cnt数组要开大,然后q[i].id=cntq而不是i!!!带修莫队就是在普通莫队上加上一维时间轴。不太会证明块的大小与莫队时间复杂度的影响,这道题似乎要将块的大小设置为n23n^{\frac{2}{3}}n32​会比较优秀Code#include<cstdio> #include<cmath>#include<cstring>#include<string>
原创
46阅读
2评论
0点赞
发布博客于 4 月前

#莫队# [luogu P2709] 小B的询问

TitleP2709 小B的询问Solution注意ceil可能会大于数据范围,可能要换一下,否则就开两倍数组~~~注意奇偶性的优化,之前打的是错误的。bool cmp(node x,node y){ return (b[x.l]^b[y.l])?b[x.l]<b[y.l]:((b[x.l]&1)?x.r<y.r:x.r>y.r); }Code#include<cstdio>#include<algorithm>#include&
原创
35阅读
0评论
0点赞
发布博客于 4 月前

#树状数组# [luogu P1972] [SDOI2009]HH的项链

TitleP1972 [SDOI2009]HH的项链Solution注意树状数组中ask函数中x>=1莫队只能拿44分~~把询问根据右端点排序,然后用树状数组统计的是1−j1-j1−j中的不同的个数每次将指针往右移,如果当前的数前面已经标记过了,就去掉前面的标记,在当前位置标记,因为前面的对现在询问的区间是没有贡献的。Code#include<cstdio>#include<cmath>#include<algorithm>#include
原创
29阅读
0评论
0点赞
发布博客于 4 月前

#莫队# [luogu SP3267] DQUERY - D-query

TitleSP3267 DQUERY - D-querySolution注意使用位运算的优先级顺序https://www.cnblogs.com/WAMonster/p/10118934.htmlCode#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#define rep(i,x,y) for(int i=x;i<=y;i++)using n
原创
26阅读
0评论
0点赞
发布博客于 4 月前

#映射# [牛客 牛牛的猜球游戏]

Title牛牛的猜球游戏Solution一开始是从莫队来着手的。手推左右指针的情况,发现其实只要根据它的步骤交换,只要把左指针的情况与初始情况形成映射关系,对于右指针输出相对应的数就是答案~~Code#include<cstdio>#include<algorithm>#include<cmath>#include<string>#define rep(i,x,y) for(int i=x;i<=y;i++)using name
原创
53阅读
0评论
0点赞
发布博客于 4 月前

#裴蜀定理# [牛客 牛牛的方程式]

Title牛牛的方程式Solution注意要判断a=b=c=0的情况,竟然有5个点当d∣gcd(a,b,c)==0d|gcd(a,b,c)==0d∣gcd(a,b,c)==0 的话是YESYESYES。ax+by=dax+by=dax+by=d根据裴蜀定理,当d∣gcd(a,b)==0d|gcd(a,b)==0d∣gcd(a,b)==0时x,yx,yx,y有整数解。然后以此类推。。Code#include<cstdio> #include<algorithm>
原创
78阅读
0评论
0点赞
发布博客于 4 月前

2020.10.17~10.17 模拟赛+牛客提高组比赛+洛谷小月赛总结

Morning(学校)(60+0+10+30)=100分基本上就是打暴力。Evening(牛客)(50+0+20+0)=70分第一题要特判为0的情况,直接咕掉。第二题打的是莫队,但是调不出来,比较菜。第三题正解是利用一个性质进行主席树...
原创
51阅读
0评论
0点赞
发布博客于 4 月前

#主席树+性质# [luogu P4587] [FJOI2016]神秘数 [牛客 牛牛的凑数游戏]

TitleP4587 [FJOI2016]神秘数Solution因为一定有空集,所以当前可行区间的值域一定是[1,pos][1,pos][1,pos]假设当前加入的数xxx一定当x≤pos+1x\leq pos+1x≤pos+1,才能使原来的值域扩大到[1,pos+x][1,pos+x][1,pos+x]当x≥pos+2x\geq pos+2x≥pos+2,对原来的值域的扩大没有贡献,所以最小的神秘数就是pos+1pos+1pos+1具体实现中,mxmxmx表示当前区间中的最大数字对于一个
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#多重集组合数# CF451E Devu and Flowers

TitleCF451E Devu and FlowersSolution注意code中出现的锅注意求组合数时通常会忘记判断一些边界的东西不考虑nin_ini​的限制,从SSS中任选rrr个元素,方法数为Ck+r−1k−1C_{k+r-1}^{k-1}Ck+r−1k−1​根据容斥定理,至少有一种aia_iai​选取的数量超过nin_ini​限制的多重集共有∣⋃i=1kSi∣=∑i=1kCk+r−ni−2k−1−∑i=1kCk+r−ni−nj−3k−1+⋯+(−1)k+1Ck+r−∑i=1k−
原创
42阅读
0评论
0点赞
发布博客于 4 月前

#分块+二分# [luogu P2801] 教主的魔法

TitleP2801 教主的魔法Solution注意lower_bound求的是大于等于,upper_bound求的是大于之前还是比较纳闷有什么题目是分块做的了但是线段树做不了的,发现这道题目可以练一下分块似乎洛谷上线段树的做法的都是可以被卡掉的。但是听说: 线段树+分治似乎可以做。可以重构(排序)每一个区间,以至于单调递增这样的话,在询问的时候,可以二分处理。时间复杂度O(q(nlog⁡n))O(q\sqrt{(n\log n)} )O(q(nlogn)​)Code#inc
原创
34阅读
0评论
0点赞
发布博客于 4 月前

#倍增+矩阵乘法# [luogu P3597] [POI2015]WYC

TitleP3597 [POI2015]WYCSolution注意这道题code中的一些细节这道题做的我人都傻了,关键是有两种理解,但是关系不大。 。。f[k][i][k]f[k][i][k]f[k][i][k]表示的是iii到jjj之间路径长度为2k2^k2k的路径条数。特别的,f[k][i][0]f[k][i][0]f[k][i][0]表示的是终点为iii路径长度为2k2^k2k的路径长度条数。然后可以倍增组合。上面的等于可能是小于等于,关于这个还有下面的减一,我都不是很明白。可以
原创
31阅读
0评论
0点赞
发布博客于 4 月前

#二分+RMQ# [luogu P4085] [USACO17DEC]Haybale Feast G

TitleP4085 [USACO17DEC]Haybale Feast GSolution注意rmq中的log要预处理好,还有注意是否要long long注意本题二分的是r,所以判断条件的时候不要习惯性的打成r-lCode#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define ll long long #define rep(i,x,y
原创
33阅读
0评论
0点赞
发布博客于 4 月前

#区间异或+线段树# [luogu 3870 [TJOI2009]开关] [luogu P2574 XOR的艺术]

TitleP3870 [TJOI2009]开关P2574 XOR的艺术Solution注意换行注意多组数据一定要清空,题目可能会只给一组数据注意第二篇程序中出现的错误主要体现t[p].sum=(r-l+1)-t[p].sum; t[p].add^=1; Code(P3870)#include<cstdio>#include<cstring>#include<string>#include<algorithm>#defi
原创
45阅读
1评论
0点赞
发布博客于 4 月前

#状压DP/迭代加深# [luogu P3052] [USACO12MAR]Cows in a Skyscraper G

TitleP3052 [USACO12MAR]Cows in a Skyscraper GSolution注意题意,输出的是最小分组数,一定要快速准确地理解题意!!!设a[i]a[i]a[i]为iii状态下最少的分组数b[i]b[i]b[i]表示iii状态下最后一组中的最大剩余空间。当然也可以选择练一下dfsdfsdfs的迭代加深,大体就是主程序枚举车厢,然后dfsdfsdfs尝试是否可行。Code(状压)#include<cstdio> #include<cstr
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#点边互换+矩阵乘法# [luogu P2151] [SDOI2009]HH去散步

TitleP2151 [SDOI2009]HH去散步Solution注意题目说“所以他不会立刻沿着刚刚走来的路走回”!!!对于这个条件,我们可以把边当作点,A:x→yA:x\rightarrow yA:x→yB:y→zB:y\rightarrow zB:y→z可以把AAA连向BBB,对于同一条边的两点不要相连可以处理。Code#include<cstdio>#include<algorithm>#include<string>#include
原创
31阅读
0评论
0点赞
发布博客于 4 月前

#矩阵乘法+拆点# [luogu P4159] [SCOI2009] 迷路

TitleP4159 [SCOI2009] 迷路Solution!!!注意define会出锅,要不不用,或者换成函数,要不就每一个都要加括号!!!正常的矩阵乘法求方案数,是距离为1的情况因为距离<=9<=9<=9,所以在每一个点可以多拆出9个点。连边的时候,如果距离是xxx,直接连向jjj的第xxx点。iii先走到xxx点,然后xxx点不断走向x−1x-1x−1点,距离等于xxx,所以可以等价。Code#include<cstdio> #include&
原创
31阅读
0评论
0点赞
发布博客于 4 月前

#矩阵乘法# [luogu P2233] [HNOI2002]公交车路线

TitleP2233 [HNOI2002]公交车路线Solution注意题意中说的,到达了E点后不能继续走!!!这道题还可以推规律出然后再用矩阵乘法做,可以过n<=1e8n<=1e8n<=1e8的。Code#include<cstdio>#include<algorithm>#include<cstring>#define rep(i,x,y) for(int i=x;i<=y;i++)using namespace st
原创
53阅读
0评论
0点赞
发布博客于 4 月前

#矩阵乘法# [luogu P5789] [TJOI2017]可乐(数据加强版)

TitleP5789 [TJOI2017]可乐(数据加强版)Solution对于自爆,可以连向000点。然后每一个点可以连自环。最后的答案是∑i=0nans.a[1][i]\sum_{i=0}^{n}ans.a[1][i]∑i=0n​ans.a[1][i]Code#include<cstdio>#include<algorithm>#include<cstring>#define rep(i,x,y) for(int i=x;i<=y;i++
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#矩阵乘法+最短路# [luogu P2886 [USACO07NOV]Cow Relays G

TitleP2886 [USACO07NOV]Cow Relays GSolutionf=a∗bf=a*bf=a∗b如果aaa是kkk次的最短路,bbb是kkkkkk次的最短路,像矩阵乘法那样计算后fff就是k+kkk+kkk+kk次的最短路。注意一下矩阵乘法的重载运算符的两种写法Code#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(int i=
原创
30阅读
0评论
0点赞
发布博客于 4 月前

#矩阵乘法+龟速乘# [luogu P2044] [NOI2012]随机数生成器

TitleP2044 [NOI2012]随机数生成器Solution其实是一个等比数列,可以直接用通项公式。但是复习了一下矩阵乘法,然后知道了如何正确的构造矩阵乘法中的中间矩阵,之前都是通过不停尝试来构造的。。。以斐波那契数列为例f[n]f[n-1]f[n-1]10f[n-2]11因为f[n]=f[n−1]+f[n−2]f[n]=f[n-1]+f[n-2]f[n]=f[n−1]+f[n−2],所以在第一列都填111所以这道题的中间矩阵
原创
39阅读
0评论
0点赞
发布博客于 4 月前

#状压DP# [luogu P3694] 邦邦的大合唱站队

TitleP3694 邦邦的大合唱站队Solution注意:三目运算符千万记得加括号,否则会出锅,优先级很低设f[i]f[i]f[i]表示在iii状态(从左到右处理完了那些乐队)下出队人数最少的数量。a[i][j]a[i][j]a[i][j]记录的是前缀和。每次更新f[i]=min(f[i],f[i xor (1<<(j−1))]+num[j]−a[tot][j]+a[tot−num[j]][j])f[i]=min(f[i],f[i\ xor\ (1<&l
原创
31阅读
0评论
0点赞
发布博客于 4 月前

#状压DP+二分#[luogu P3092] [USACO13NOV]No Change G

TitleP3092 [USACO13NOV]No Change GSolution因为m<=15m<=15m<=15,可以状压使用的硬币情况。对于每一种状态,我们枚举使用的第jjj枚硬币,然后从没有使用这枚硬币转移到使用了这枚硬币。d[i]d[i]d[i]表示iii状态下最多可以买下多少货物f[i]f[i]f[i]表示iii状态下最少的花费对于当前的硬币可以买下后面最多的多少货物,可以二分然后转移。如果d[i]==md[i]==md[i]==m也就是可以买完的时候,更
原创
31阅读
0评论
0点赞
发布博客于 4 月前

#线段树/二分答案# [luogu2824] [HEOI2016/TJOI2016]排序

TitleP2824 [HEOI2016/TJOI2016]排序Solution一个01序列,如果排序的话,以升序为例,加入当前序列中有cntcntcnt个为111,那么n−cnt+1n-cnt+1n−cnt+1到nnn可以全部赋值为111,然后111到n−cntn-cntn−cnt全部赋值为000,这就可以完成一次排序。注意题目给出的是一个排列。当前位置的数字可以二分答案。二分midmidmid,对于a[i]>=mida[i]>=mida[i]>=mid的都标记为111,反
原创
52阅读
2评论
0点赞
发布博客于 4 月前

#最大生成树# [2020.9.11]牛客练习赛69 C 旅行

Title[2020.9.11]牛客练习赛69 C 旅行Solution所走的边一定在最大生成树上。如果最大生成树上有两点(u,v)(u,v)(u,v)连边了,显然权值小于生成树上这两点之间的任一权值,所以不选。对于生成树上的边,显然走一次是最优的。Code#include<cstdio>#include<queue>#include<algorithm>using namespace std; struct node{ int x,y,z;
原创
34阅读
0评论
0点赞
发布博客于 5 月前

#线性筛求约数个数+逆元# [nssl 1520] 小清新期望题

Title注意范围Solution性质当然很重要注意用线性筛求约数个数的方法图片转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8228969.html注意此题卡时间 ,可以优化一下. Code(90)#include<cstdio>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using names
原创
32阅读
0评论
0点赞
发布博客于 5 月前

#组合数# [nssl 1519]背包签到题

TitleSolution对于一种种类的,考虑插板法,有KKK个回合,aaa个物品的话,方案数就是CK+AK\large C_{K+A}^{K}CK+AK​对于不同的种类,考虑乘法原理。Code#include<cstdio>#include<algorithm>#define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++) using namespace std; const
原创
32阅读
0评论
0点赞
发布博客于 5 月前

#cdq分治# [luogu P3157] [CQOI2011]动态逆序对

TitleP3157 [CQOI2011]动态逆序对Solution对于逆序对,要满足i<j,a[i].time<a[j].time,a[i].z>a[j].zi<j,a[i].time<a[j].time,a[i].z>a[j].zi<j,a[i].time<a[j].time,a[i].z>a[j].zi<ji<ji<j可以在cdq中维持然后根据a[i].z>a[j].za[i].z>a[j].za[i].
原创
39阅读
0评论
0点赞
发布博客于 5 月前

#cdq分治# [luogu P3810] 【模板】三维偏序(陌上花开)

Title [luogu P3810] 【模板】三维偏序(陌上花开)Solution第一维sortsortsort第二维cdqcdqcdq分治,类似归并排序第三维树状数组Code#include<cstdio>#include<algorithm>#include<string>#define rep(i,x,y) for(int i=x;i<=y;++i)using namespace std; const int maxn=2e5
原创
56阅读
0评论
0点赞
发布博客于 5 月前

#0/1分数规划+spfa负环# [luogu P2868] [USACO07DEC]Sightseeing Cows G

TitleP2868 [USACO07DEC]Sightseeing Cows GSolution∑i=1tF[i]∑i=1tA[i]=ans\frac{\sum_{i=1}^{t}F[i]}{\sum_{i=1}^{t}A[i]}=ans∑i=1t​A[i]∑i=1t​F[i]​=ans我们可以二分ansansans∑i=1tF[i]−∑i=1tA[i]∗mid>0\sum_{i=1}^{t}F[i]-\sum_{i=1}^{t}A[i]*mid>0i=1∑t​F[i]−i=1∑t
原创
66阅读
2评论
1点赞
发布博客于 6 月前

#Tarjan+lca# [poj 3694] Network

Titlepoj 3694 NetworkSolution可以用TarjanTarjanTarjan求出图中的桥注意有重边,这里用的是朴素的方法。对于x,yx,yx,y,假如他们同在一个点里,对桥无减少的贡献,否则同时枚举到lcalcalca的路径,将桥标志为falsefalsefalse,并减少桥的数量Code#include<cstdio> #include<cstring>#include<algorithm>#define rep(i,
原创
56阅读
0评论
0点赞
发布博客于 6 月前

#分组背包,模拟# [luogu CF148E] Porcelain &[luogu CF135B] Rectangle and Square

TitleCF148E PorcelainCF135B Rectangle and SquareSolution权且当作放一下程序Code(Porcelain)#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=305;
原创
55阅读
0评论
0点赞
发布博客于 6 月前

#倍增优化Floyd# [luogu CF148E] Porcelain

TitleCF147B Smile HouseSolution设d[s][i][j]d[s][i][j]d[s][i][j]为ddd步从iii到jjj的距离,d[s][i][j]=max(d[s][i][j],d[s−1][i][k]+d[1][k][j])d[s][i][j]=max(d[s][i][j],d[s-1][i][k]+d[1][k][j])d[s][i][j]=max(d[s][i][j],d[s−1][i][k]+d[1][k][j]),若d[k][i][i]>0d[k][i
原创
53阅读
0评论
0点赞
发布博客于 6 月前

#tarjan+Topology# [luogu P3387] 【模板】缩点

TitleP3387 【模板】缩点Code#include<cstdio>#include<algorithm>#include<queue>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=1e4+15; struct node{int x,y,next;}a[10*N],b[10*N]; int n,m,low[N],dfn[
原创
54阅读
0评论
0点赞
发布博客于 6 月前

#圆方树# [ssloj1492] [bzoj 2125]迷宫花坛(garden)

TitleSolution注意会有重边,求disdisdis的时候注意要取最小值此题数据较大,需要快读和快输,不然会TLETLETLECode#include<cstdio>#define rr register #define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll N=200011; const ll M=5000
原创
55阅读
0评论
0点赞
发布博客于 6 月前

[gdkoi 阶乘(fact)][noip2015普及组 求和(sum)]

TitleP2671 求和Code(fact)#include<cstdio>#include<algorithm>#include<cmath>#define ll long long#define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll N=1e6+10; ll T,n,base,q,w,tot,a[N],b[N],prime[N],m,
原创
45阅读
0评论
0点赞
发布博客于 6 月前

#圆方树+树剖+tarjan# [luoguP5236] 【模板】静态仙人掌

Titlehttps://www.luogu.com.cn/problem/P5236Solution在一棵树上,两点的距离等于dis[u]+dis[v]−2∗dis[lca(u,v)]dis[u]+dis[v]-2*dis[lca(u,v)]dis[u]+dis[v]−2∗dis[lca(u,v)]然后对于仙人掌,把一个简单环改成一个方点(所有环上的点连向新点形成一个菊花图),顺便求出环里面的距离,剩下的点为圆点,建成一棵新的树。lcalcalca的话,可以用树剖做。Code#inclu
原创
63阅读
0评论
0点赞
发布博客于 6 月前

#并查集# [ssloj 1486] 旅游 [jzoj travel]

TitleSolution将边权和询问排序,然后用指针扫描,对于新增的点,考虑累计贡献Code#include<cstdio>#include<cstring>#include<algorithm>#define ll long long#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=2e5+10; struct node{
原创
73阅读
3评论
0点赞
发布博客于 6 月前

#Catalan数# [ssloj 1481]最大前缀和

TitleSolution+1,−1+1,-1+1,−1可以看作在平面直角坐标系中向网格中的斜上方和斜下方走一格。我们可以枚举我们的最大前缀和iii的值,那么我们要强制网格中的折线不能超过y=i+1y=i+1y=i+1这条直线那么我们可以用(0,0)(0,0)(0,0)到(n+m,n−m)(n+m,n-m)(n+m,n−m)的总方案数-(0,2∗i)(0,2*i)(0,2∗i)到(n+m,n−m)(n+m,n-m)(n+m,n−m)的方案数-之前的枚举的iii的方案数总和(因为前面的$i$都是表
原创
68阅读
0评论
1点赞
发布博客于 6 月前

#LIS# [ssloj 1480].双端队列xLIS问题

TitleSolution对于iii,我们可以求iii往后的最长上升子序列和最长下降子序列,比较l[i]+r[i]−1l[i]+r[i]-1l[i]+r[i]−1得到最大值。因为最长下降子序列可以放在双端队列的前面,与原来的最长上升子序列形成一个更长的子序列。Code#include<cstdio>#include<cstring>#include<algorithm>#define rep(i,x,y) for(register int i=x;i
原创
54阅读
0评论
0点赞
发布博客于 6 月前

#欧氏筛+并查集# [ssloj 1470]X

TitleSolutionCode#include<cstdio>#include<cstring>#include<algorithm>#define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++)using namespace std; const ll mod=1e9+7; const ll N=1e5+10; const ll M=1e6; ll T
原创
40阅读
0评论
0点赞
发布博客于 6 月前

#dp# [ssloj 1479] 不知道该叫啥

TitleSolution设f[i][j]f[i][j]f[i][j]前iii位已经填好而且第iii位填jjj时的方案数f[i][j]=∑j=1M/jf[i−1][j]f[i][j]=\sum_{j=1}^{M/j}f[i-1][j]f[i][j]=j=1∑M/j​f[i−1][j]fff可以改成一维的,然后∑\sum∑可以用前缀和f[j]=s[M/j]f[j]=s[M/j]f[j]=s[M/j]时间复杂度O(nq)O(nq)O(nq)然后我们发现M/jM/jM/j是单调递减的。于是我们
原创
63阅读
0评论
0点赞
发布博客于 6 月前

#树状数组#[ssloj 1474] 简单计算题 [jzoj] Tiny Counting

TitleSolution假如a,b,c,da,b,c,da,b,c,d可以相等,那么ansansans是顺序对和逆序对的乘积。可以减去不合法的的方案数。ls,lb,rs,rbls,lb,rs,rbls,lb,rs,rb指的是比分别左边比iii小的,大的,右边比iii小的,大的的数量。排除以下四种情况:a=ca=ca=cSd<Sa=c<SbS_d<S_{a=c}<S_bSd​<Sa=c​<Sb​(a=c)<b,d(a=c)<b,d(a=c)
原创
70阅读
0评论
0点赞
发布博客于 6 月前

#组合数#[ssloj 1473] 奶牛编号

TitleSolution·········要善于推规律和完善代码习惯。Code#include<cstdio>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; int c[5001][35],n,k,q; int main(){ scanf("%d%d",&n,&k); rep(i,0,5000) c[i
原创
53阅读
0评论
0点赞
发布博客于 6 月前

#dp# [ssloj1475] 俄罗斯套娃

TitleSolution设f[i][j]f[i][j]f[i][j]表示前iii位逆序对为jjj的方案数。f[i][j]=∑k=j−i+1jf[i−1][k]f[i][j]=\sum_{k=j-i+1}^{j}f[i-1][k]f[i][j]=k=j−i+1∑j​f[i−1][k]因为可能爆空间,所以第一维可以滚动掉,然后第二维可以用前缀和。Code#include<cstdio> #include<algorithm>#define ll long long
原创
48阅读
0评论
0点赞
发布博客于 6 月前

#树形DP# [ssloj 1469] W

TitleSolution转载于:https://www.cnblogs.com/butterflydew/p/9776076.htmlCode#include<cstdio> #include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int inf=1e9; const int N=1e5+10; struct nod
原创
52阅读
0评论
0点赞
发布博客于 6 月前

#dp# [ssloj] [luogu P2051] [AHOI2009]中国象棋

Title [luogu P2051] [AHOI2009]中国象棋Solution设f[i][j][k]f[i][j][k]f[i][j][k]表示前iii行放了一个棋子的有jjj列,放了两个棋子的有kkk列。初始化f[0][0][0]=1f[0][0][0]=1f[0][0][0]=1这一行什么棋子都不放的时候f[i][j][k]=f[i−1][j][k]f[i][j][k]=f[i-1][j][k]f[i][j][k]=f[i−1][j][k]放一个棋子让原本有一个棋子的一列变成有
原创
51阅读
0评论
0点赞
发布博客于 6 月前

#二维差分# [ssloj 1467] U

TitleSolution我们先差分二维直角三角形的斜边上的起始(+s)(+s)(+s)和终止点(−s)(-s)(−s),然后向xxx轴不断传递,因为这样会算多一个长方形的区域加,所以在平行于xxx轴的的直角边的起始(−s)(-s)(−s)和终止点(+s)(+s)(+s)。时间复杂度O(n2)O(n^2)O(n2)Code#include<cstdio> #include<algorithm>#define ll long long#define rep(i
原创
48阅读
0评论
0点赞
发布博客于 6 月前

#二分答案+spfa# [luogu P1948] [USACO08JAN]Telephone Lines S

TitleP1948 [USACO08JAN]Telephone Lines SSolution二分需要花费的路径的长度ggg,然后判定的时候,将所有小于等于ggg的路径赋值为0,否则为1。然后求111到nnn的最短路,如果距离小于等于kkk则缩小二分右端点,否则扩大二分范围。Code#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#define
原创
44阅读
0评论
0点赞
发布博客于 6 月前

#扫描线+线段树# [ssloj 1459] 空间简单度

TitleSolution[jzoj 6276] 【noip提高组模拟1】树 {扫描线+线段树}Code#include<cstdio>#include<stdlib.h>#include<cmath>#include<algorithm>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=300100; struc
原创
46阅读
0评论
1点赞
发布博客于 6 月前

#bfs# [ssloj1460] 逛机房

TitleCode#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<cstring>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; queue<int>q,qq; int a[101],len,ans,last; boo
原创
39阅读
0评论
0点赞
发布博客于 6 月前

#容斥# [ssloj 1458] HR 的疑惑

TitleSolution我们枚举指数,为了保证不算重,指数枚举质数。222的情况可以拎出来算,而且不算出现重复的情况,即ans=nans=\sqrt nans=n​然后对于后面的,需要判断是否在222中被算过。Code#include<cstdio>#include<algorithm>#include<cmath>#include<map>#define ll long long using namespace std; co
原创
37阅读
0评论
0点赞
发布博客于 6 月前

#kruskal#[luogu P1550] [USACO08OCT]Watering Hole G

Titlehttps://www.luogu.com.cn/problem/P1550Solution建立一个超级源点,连接所有点,权值为修建水库的费用。Code#include<cstdio>#include<queue>#include<algorithm>using namespace std; struct node{ int x,y,z; }a[100001];int n,t[1010],tot,f[1010]; long long
原创
44阅读
0评论
0点赞
发布博客于 6 月前

#k短路+堆维护#[ssloj 1463] 旅行

TitleSolution这是在一棵树上求k短路首先,根据题目定义的奇怪路径,求u,vu,vu,v的路径长度,跟根节点到uuu和根节点到vvv的路径和是相等的,以为根节点到lca(u,v)lca(u,v)lca(u,v)的路径会因为一正一负而被抵消掉。dis[i]dis[i]dis[i]可以在dfsdfsdfs中求出来。然后根据深度,将奇数深度的放到aaa,偶数的放到bbb,将其分别排序,因为奇数+偶数一定等于奇数。 然后将其两两配对,用一个堆来维护。Code#include<cs
原创
67阅读
0评论
0点赞
发布博客于 6 月前

#咕咕# [ssloj1461]异或

TitleSolution假定i≥ji\geq ji≥jgcd(i,j)≤i−jgcd(i,j)\leq i-jgcd(i,j)≤i−ji xor j≥i−ji\ xor\ j\geq i-ji xor j≥i−jgcd(i,j)=(i−j)=i xor jgcd(i,j)=(i-j)=i\ xor \ jgcd(i,j)=(i−j)=i xor jCode#include<cstdio>#in
原创
54阅读
0评论
0点赞
发布博客于 6 月前

#数学期望+lca#[ssloj 1457] 树(tree)

Title题目描述梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地 选择一条走过去, 为了确保第二天能够准时到校, 你要求出每个梦期望经过多少条边才能苏 醒. 为了避免精度误差, 你要输出答案模10^9 + 7的结果.输入第一行两个整数分别代表 N 和 Q. 接下来 N-1 行, 每行两个整数 u, v 代表树中的一条边. 接下来 Q 行, 每行两个整数代表询问的
原创
53阅读
0评论
0点赞
发布博客于 6 月前

#图论/并查集# 美团2018年CodeM大赛C-Traffic

Titlehttps://ac.nowcoder.com/acm/contest/162/CSolutionCode#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=6010; in
原创
40阅读
0评论
0点赞
发布博客于 6 月前

#排列/逆元# [ssloj 1452] 排行榜

Titlehttps://www.luogu.com.cn/problem/AT2000SolutionCode#include<cstdio>#include<algorithm>#define ll long long#define mod 998244353#define rep(i,x,y) for(register ll i=x;i<=y;i++)#define fu_mod(x,y) (x+y<0?((x+y)%mod+mod)%mod:
原创
41阅读
0评论
0点赞
发布博客于 6 月前

#树链剖分+线段树#[luogu P3178] [HAOI2015]树上操作

Titlehttps://www.luogu.com.cn/problem/P3178Code#include<cstdio>#define rr register #define ll long long using namespace std; const ll N=100011; const ll M=400011;ll n,m,Summ,R; ll seg[N],rev[M],size[N],son[N],top[N],dep[N]; ll num[N],fat
原创
41阅读
0评论
0点赞
发布博客于 6 月前

#树链剖分+线段树# [luogu P3384] 【模板】轻重链剖分

Titlehttps://www.luogu.com.cn/problem/P3384Solution改了我好久啊,可能是我太菜了大致思路就是树链剖分后打个懒标记的线段树,在线段树上区间查询,区间加。但是细节这种东西,真的难受,注意一下喽。为了防止seg,rev,topseg,rev,topseg,rev,top等树链剖分中初始值的东西出锅,直接用下面的dfs2dfs2dfs2的做法,直接省去一半的细节了。根据xjqxjqxjq的提醒,和经验告诉我们,线段树通常有两种打法,记住一种就
原创
108阅读
1评论
0点赞
发布博客于 6 月前

[luogu P5788] 【模板】单调栈

Titlehttps://www.luogu.com.cn/problem/P5788Solution昨天调了我一个晚上的树链剖分,很不爽。所以特地来水一篇博客。Code#include<cstdio>#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std; const int N=3e6+5; int n,a[N],f[N],t,sta[N]; int main(){ scanf
原创
39阅读
0评论
0点赞
发布博客于 6 月前

#Graham算法+决策单调性#[luogu P4166] [SCOI2007]最大土地面积

TitleSolution
原创
53阅读
0评论
0点赞
发布博客于 6 月前

#spfa# [luogu P3385] 【模板】负环

Titlehttps://www.luogu.com.cn/problem/P3385SolutionCode#include<cstdio>#include<queue>#include<cstring>using namespace std;const int inn=100001; struct node{ int y,w,next; }a[inn];int n,m,T,len,t[inn],f[inn],last[inn]; bool b
原创
44阅读
0评论
0点赞
发布博客于 6 月前

#Graham+旋转卡壳# [luogu P1452] [poj 2187] Beauty Contest G /【模板】旋转卡壳

Title洛谷pojSolution这道题我调了好久,一直卡在了我的三点求叉积中的三点顺序。////本来按习惯写成p0,p1,p2inline int sdcj(point p1,point p0,point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); }因为在洛谷上这道题目数据比较水,其实可以求完凸包后暴力枚举点过的。时间复杂度为O(nlog2n+n)O(nlog_2n+n)O(nlog2​n+n)
原创
50阅读
0评论
0点赞
发布博客于 6 月前

#Graham算法/凸包# [poj 3348] cows

Titlehttp://poj.org/problem?id=3348Solution改了很久的原因竟然因为忘记了取绝对值(因为之前洛谷的求多边形面积的模板不取绝对值也可以过)JarivsJarivsJarivs时间复杂度要O(nm)O(nm)O(nm)#Jarivs算法# [luogu P2742] [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包GrahamGrahamGraham优秀一些,时间复杂度要O(nlog2n)O(nlog_{2}n)O(
原创
54阅读
0评论
0点赞
发布博客于 6 月前

#GarsiaWachs算法# [luoguP5569] [SDOI2008]石子合并

Titlehttps://www.luogu.com.cn/problem/P5569Solution(最优树问题)O(N3)O(N^3)O(N3) n≤200\quad n\le 200n≤200的规模O(N2)O(N^2)O(N2) 用四边形不等式优化下面这个DPDPDP状态转移方程F[l,r]=minl≤k<r{F[l,k]+F[k+1,r]}+∑i=lrAi\large F[l,r]=min_{l\le k <r} \{F[l,k]+F[k+1,r]\}+\sum_{i=
原创
77阅读
0评论
0点赞
发布博客于 6 月前

#Jarivs算法# [luogu P2742] [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包

Titlehttps://www.luogu.com.cn/problem/P2742SolutionJarivsJarivsJarivs算法主要步骤:找到最左边的点核心部分PROC1PROC1PROC1,顺时针进行凸包。枚举两点,用叉积计算夹角,选择最左的解,如果三点共线,选择最远的点。Code#include<cstdio>#include<algorithm>#include<cmath>#include<iostream>
原创
60阅读
2评论
0点赞
发布博客于 6 月前

[luoguP5490] 【模板】扫描线

Title
原创
31阅读
0评论
0点赞
发布博客于 6 月前

#树链剖分+线段树# [模板] [luoguP2590] [ZJOI2008]树的统计

Titlehttps://www.luogu.com.cn/problem/P2590Solution板子题Code#pragma GCC optimize("Ofast")#pragma GCC optimize("O3")#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#define rr r
原创
69阅读
0评论
0点赞
发布博客于 6 月前

LaTeX数学符号大全

转载
55阅读
0评论
0点赞
发布博客于 6 月前

#Baby Step,Giant Step# [luogu P3846] [TJOI2007] 可爱的质数/【模板】BSGS

Titlehttps://www.luogu.com.cn/problem/P3846**大意:**给定整数a,b,pa,b,pa,b,p,其中a,pa,pa,p互质,求一个非负整数xxx,使得ax≡b(mod p)a^x\equiv b(mod\ p)ax≡b(mod p)SolutionBaby Step,Giant Step大步小步算法设x=i∗t−jx=i*t-jx=i∗t−j,其中t=∣p∣,0t=|\sqrt p|,0t=∣p​∣,0Code#include
原创
56阅读
0评论
0点赞
发布博客于 6 月前