自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 【DP 构造方案】Link with Bracket Sequence I

有确定的括号序列n,构造合法的括号序列m,求方案数.

2022-08-04 10:11:08 256 1

原创 【二分+负环】Link with Game Glitch

可以制作无限个物品的情况便是当所有配方为一个环时,用一个物品b制作一圈后制作出来的物品b大于1,即可以用1*b制作x*b(x>1).而我们将消耗与产出作比,当一个配方环所有配方乘积大于1时便可以无限制作.建图时可以用-log作为边权,只需要判断负环即可.而w则是用二分来求解.有许多配方可以用k*a个b物品制作k*c*w个d物品,问当k=1,w为几时可以使其不出现制作无限个物品的情况....

2022-08-04 09:35:29 174

原创 [概率Dp]Chiitoitsu

注意需要明确地是麻将的基础知识手牌13张,4类牌,34种,每种四张总共有136张牌.题目中要求最优策略的意思便是永远不会出现摸一张四条打出后又来一张四条导致了原本可以构成对子的牌被打出.题目求抓牌使手牌构成7对的期望....

2022-07-29 10:42:49 206 1

原创 [几何]Mocha and Railgun

将图形画出后平移所截取圆弧的割线可以与题中的线段构成三角形,由三角形三遍关系可以知道两个垂线段的长度差值越大则割线的圆弧部分线段长度越长,而两个垂线段的长度差值取决于什么呢.很明显取决于过圆心做线段的垂线其在线段上的垂足到两端点的距离的差值.这个值最大便是当线段所在直线过圆心时的位置.于是题目便转化为了给出线段求弧长的题目.而计算部分则只需要利用好圆心到线段两端点的距离即可.题意求圆心在原点的圆形中一条可以旋转的线段,过它两端点处做垂线后所截取的弧长最大值.注意题中线段无论怎样旋转都不会超出圆形....

2022-07-29 10:26:37 175

原创 【割点】P5058 [ZJOI2004]嗅探器

此题除了要判断割点外还需要判断割点切割后AB中心分别在两不连通的部分中,因此根据割点的性质可以知道,如果dfs序中a

2022-07-21 16:02:07 149

原创 【割点】P3388 【模板】割点(割顶)

我们维护两个数组dfn[]和low[],dfn[u]表示顶点u第几个被(首次)访问,low[u]表示顶点u及其子树中的点,通过非父子边(回边),能够回溯到的最早的点(dfn最小)的dfn值(但不能通过连接u与其父节点的边)。如果v访问过(且u不是v的父亲),就不需要继续DFS了,一定有dfn[v]...

2022-07-21 15:51:42 120

原创 【强连通】P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

代码】【强连通】P2341[USACO03FALL/HAOI2006]受欢迎的牛G。

2022-07-21 15:48:15 123

原创 【树dfs】P2420 让我们异或吧

本题的树上操作异或值,根据异或的性质我们可以直接dfs根节点到每个点的异或值,而在求u到v的异或值时直接dfs[u]^dfs[v],重复的部分就会抵消。如果是加法我们就会需要求lca然后u+v-lca(u,v)*2+点lca(u,v)...

2022-07-21 15:05:32 116

原创 【树剖】P3384 【模板】轻重链剖分/树链剖分

P3384【模板】轻重链剖分/树链剖分。

2022-07-21 14:58:55 159

原创 【乘法逆元】取模运算

一,定义1 逆元: 在群G中,∀a∈G,∃a′∈G,s.t.aa′=e,其中e为G的单位元。2 乘法逆元:p为素数,记a⋅b=a×bmodp在群(N,⋅)(N,·)中,∀a∈N,∃a′∈N,s.t.aa′=e=1∀a∈N,∃a′∈N,s.t.aa′=e=1。则称a′是a关于modp的逆元。为了方便表示,且下面的内容都只涉及到相同的p,我们记a关于modp的逆元为inv[a]。二, 作用情况1:在算法竞赛中,经常会遇到求解数据很大,则输出模 [公式] 的解这类要求。加法、减法、乘法等操作,基

2022-05-21 16:06:16 837

原创 【欧拉筛求素数】

​普通求素数是对每一个数的因子进行枚举,进而判断它是否是素数,但会很慢。进阶一点的是埃式筛法,埃式筛法的基本思想就是,当我们遍历到一个素数时,把所有该素数的倍数(自然是合数)都筛选出来。但是这样同样会有重复筛选的情况而浪费时间,比如2的倍数有6,而3的倍数同样会把6,再次筛选一遍。于是便有了欧拉筛来求素数的方法。int prime[MAXN];bool vis[MAXN];int cnt=0;void Euler_prime(int n) { for(int i=2; i<=n; ++

2022-05-21 15:08:51 481

原创 【简单DP】Boredom

DescriptionAlex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.Given a sequence a consisting of n integers. The player can make several steps. In ..

2022-05-21 13:54:28 266 1

原创 【语言基础】

字符串1.strtok:分割字符串。char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。当第一次传入str后,后续分割str直接写为NULL在找不到后返回NULL。char str[80] = "This is - www.runoob.com - website"; const char s[2] = "-"; char *token; /* 获取第一个子字符串 */ toke...

2022-05-11 16:12:09 103

原创 【图论基础】分层图

使用场景:经常在最短路,网络流等图论题中,通过一些规则可以修改边权而求得最优解。理解:如果将在图上求解最短路看成是在二维平面上进行的,那么分层图的含义便是引入进行操作的次数 k 做为第三维,便可以在这个三维空间上解决问题。每进行一次操作,除了操作的边,其他边没有任何变化,在 k=0,1,2,…,时图都是一样的,那么就将图复制成 k+1 份,第 i 层图代表进行了 i 次操作后的图。每相邻两层图之间的联系,应该决定了一次操作是发生在哪条边上(何时进行操作)。根据操作的特点(对边权的修改)可以 i

2022-05-07 14:22:58 407

原创 【多校】H. Playf and Tree

H. Playf and Tree一道比较基础的期望加树的遍历。对于操作次数的期望便是所有的点被直接操作的概率相加。对于一个节点 ,它是确定的一定要被删除的,但是它删除的方式有两种,即要么是删除了它的一个祖先节点,要么是直接删除它自己 。直接删除的概率是它的深度的倒数。那么考虑所有点,它们被直接删除的概率都是其深度的倒数,那么在每个点上需要花费一次操作的概率也是如此,所以操作次数期望是所有深度倒数之和。 一次dfs即可求出答案。#include<cstdio>#includ.

2022-05-04 15:59:23 3910

原创 【DFS】P1378 油滴扩展

P1378 油滴扩展对所有点DFS判断半径,有几个限制,已经使用的点要注意他的扩散半径,目前的点没有被其他点的扩散包含,目前点到四边的距离。注意负数!!!#include<cstdio> #include<iostream>#include<algorithm>#include<cstring>#include<math.h>#include <stack>#define LL long longusing n

2022-04-09 15:21:32 269

原创 【搜索】P5440 【XR-2】奇迹

P5440 【XR-2】奇迹非常好的一道题,方法对可以非常简单,如果写成大模拟就会很麻烦。思路是按照要求直接筛选出1到9999所有复合条件的,在对给出的数据求解时,如果用数据去一个一个寻找对应可能的日期就会比较麻烦,而如果直接遍历所有日期看是否与给出的日期相同那么就可以一个一个加出,非常简单,就是时间可能会长一点。#include<cstdio> #include<iostream>#include<algorithm>#include<cstrin

2022-04-09 13:46:35 181

原创 【dp背包】P1049 [NOIP2001 普及组] 装箱问题

P1049 [NOIP2001 普及组] 装箱问题很基础的背包问题,求解最优选择是v所剩最小,可以理解为在空间v的情况下,以1:1的价值比使价值最大。#include<cstdio> #include<iostream>#include<algorithm>#include<cstring>#include <stack>#define LL long longusing namespace std;const int N

2022-04-06 16:19:19 345

原创 【dfs】P5194 [USACO05DEC]Scales S

P5194 [USACO05DEC]Scales S思路:看题数据范围就表示背包不可能,那么仔细看看发现实际上n的个数最多只有40个,那么dfs就是可取的。但是需要考虑剪枝否则也会T,有以下几点:1.它是递增排列的求最大值,那么我们可以从后向前dp,同时如果数据大于K时可以不录入减少N的个数。2.采取前缀和,如果前面所有的sum【i】加和都小于目前的最大值,那么便也没有继续往下搜索的必要了。#include<cstdio> #include<iost...

2022-04-06 15:52:24 774

原创 【dfs】P1019 [NOIP2000 提高组] 单词接龙

P1019 [NOIP2000 提高组] 单词接龙原本应该不是一道难题,因为奇特的理解wa了三次,记录一下。 题目要求最长的龙,有以下几点需要注意: 1.单词可以使用两次,因此存在自己连接自己的情况,不要想当然的。 2.后缀与前缀的公共部分取最小。 3.重叠部分不能存在包含关系。解决办法还是比较好想的,对两两单词的连接部分进行预处理(注意自己和自己),然后使用深度搜索,对每个可行答案进行判断...

2022-04-02 16:09:30 210

原创 【二分答案+dijkstra】P1948 [USACO08JAN]Telephone Lines S

P1948 [USACO08JAN]Telephone Lines S#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<vector>#include<stdlib.h>#include <math.h>#define LL long longusin

2022-02-12 21:43:26 170

原创 [LCA]P3398 仓鼠找sugar

如果两条路径相交,那么一定有一条路径的LCA在另一条路径上而判断一个节点x,是否在路径s-t上需要满足如下几个条件 - deep[x]>=deep[LCA(s,t)] - LCA(s,x)=x或LCA(t,x)=x;

2022-02-12 21:31:22 166

原创 【LCA】P4281 [AHOI2008]紧急集合 / 聚会

P4281 [AHOI2008]紧急集合 / 聚会#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<vector>#include<stdlib.h>#include <math.h>#define LL long longusing namespac

2022-02-12 21:30:08 230

原创 【种类并查集】P5937 [CEOI1999]Parity Game

P5937 [CEOI1999]Parity Game#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<vector>#include<stdlib.h>#include <math.h>#define LL long longusing names.

2022-02-12 21:20:28 6829

原创 【01trie树】P4551 最长异或路径

P4551 最长异或路径//最长异或路径,重点在于01tried树与异或的性质,首先因为异或的性质重复两次异或等于没有 操作也就没有 重复路径的//顾虑#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define LL unsigned long longusing namespace std;const int N = 2e6 + 10..

2022-02-06 11:19:57 204

原创 【算法】树状数组 P1908 逆序对

P1908 逆序对#include<iostream>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int Maxn = 5e5 + 10;int n;ll ans = 0;//树状数组与离散化与逆序对int tree[Maxn], lisan[Maxn];struct node { int val, num;}...

2022-01-23 09:56:19 272

原创 [算法]树状数组 2(差分)

P3368 【模板】树状数组 2#include<iostream>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int maxn = 5e5 + 10;ll cnt[maxn];ll a[maxn];ll n, m;ll lowbit(ll x) { // x 的二进制表示中,最低位的 1 的位置。// lo...

2022-01-23 09:25:52 115

原创 【算法】线段树2

P3373 【模板】线段树 2#include <iostream>#include <cstdio>#define ll long longusing namespace std;const int Maxn = 1e5 + 10;//线段树操作,但是改变有两种,加和乘,int p;ll a[Maxn];struct Tre { ll ans, mul, add;}tre[Maxn * 4];//ans是节点值,mul记录乘法改变的值,add...

2022-01-22 16:05:56 277

原创 [算法]线段树

P3372 【模板】线段树 1#include<iostream>#include<cstdio>#define ll long longusing namespace std;const int Maxn = 1000005;ll d[4 * Maxn], tag[Maxn * 4];//注意该大小大概为所有单个值数量的四倍ll a[Maxn];inline void pushup(ll p) {//建树,先在pushup前面递归到最底层然后向上...

2022-01-22 15:15:35 683

原创 [图论]最小生成树 Prim 算法 P1265 公路修建

P1265 公路修建#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;//最小生成树+Prim 算法int n, m;double ans = 0;short int vis[5200];//记录点是否纳入生成树上long long dis[5200];//记.

2022-01-21 16:25:11 235

原创 [图论]最小生成树kruskal(P2504 [HAOI2006]聪明的猴子)

P2504 [HAOI2006]聪明的猴子#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<cmath>using namespace std;const int maxn = 1e6 + 10;int cnt = 0, po = 0, ans = 0;int potx

2022-01-21 16:09:46 300

原创 [图论DAG]CF1385E Directing Edges

CF1385E Directing Edges#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn = 2e5 + 10;//struct edge { int to, next;}edge[maxn];int head...

2022-01-21 15:52:57 309

原创 [图论]【模板】差分约束算法(与Bellman-Ford算法)

P5960 【模板】差分约束算法一, 描述差分约束算法即对一组不等式求解,如上题.有ai-aj<k可以转化为ai<k+aj.我们突然发现这是一个最短路的形式 -- 具体来说,ai​≤aj​+k,根据上述分析,我们可以将其转化为从j到i的一条长度为k的边,那么ai​就转化成了源点到i的最短路径距离。如果题目无解就相当于有负环存在.但需要注意的是这个图可能是不连通的,即从一个点出发有些点一定无法到达.此时对于SPFA算法来说直接...

2022-01-19 16:25:33 278

原创 [图论]负环,SPFA

P3385 【模板】负环#include <cstdio>#include <iostream>#include<vector>#include<queue>#include<string.h>using namespace std;const int maxn = 1e5 + 10;struct edge {//领链表 int to;//表示到哪个点 int wei;//表示边的权重 edg...

2022-01-19 16:02:35 98

原创 [算法]最近公共祖先(LCA)

最近公共祖先(LCA)#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn = 5e5 + 10;int n, m, s;int k = 0;int head[maxn], de[maxn], Fa[maxn][21];//de表示节点深度,..

2022-01-15 16:52:58 106

原创 [并查集] /*P1196 [NOI2002] 银河英雄传说*/

/*P1196 [NOI2002] 银河英雄传说*/#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn = 1e5 + 10;int x, y, ans = 0, n, m;char z;int fa[maxn], top[maxn], ..

2022-01-15 15:45:44 1266

原创 【算法】并查集题解 ​P1551 亲戚​

P1551 亲戚#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn = 1e5 + 10;int fa[maxn];//fa[x]存储x的父亲//并查集的方法int find(int x) {//找到x的祖宗 if (fa[x] ...

2022-01-15 15:42:46 255

原创 [并查集] P2024 [NOI2001] 食物链

P2024 [NOI2001] 食物链/* [NOI2001] 食物链*/////#include<cstdio>//#include<cstring>//#include<iostream>//#include<algorithm>//#include<queue>//using namespace std;//const int maxn = 1e5 + 10;//int a, b, p, ans = 0, n,...

2022-01-14 11:27:02 115

原创 【图论】单源最短路径(标准版)dijkstra以及堆优化

图存储方式:链式前向星一, 基础dijkstra基本思路:1.定义ans[100000],ans[i]代表到达i点的最小花费2.定义bool数组visit,代表是否来过这里2.ans[起点] = 0, 其余的赋值为inf3.定义一个curr变量,visit[current] = 1(访问过),代表现在的位置,初始值为起点。4.列举所有与curr相联通的的点,将这些点(i)的ans值更新:ans[i] = min(ans[i], ans[curr] + ans[i] = m

2022-01-12 14:47:37 353

原创 【图论】图的存储

一,直接存边二,链式前向星开一个数组存储每个点引出的第一条边,然后存储每个点作为起点的每条边,这样就可以做到不重不漏。当中有对链式前向星的介绍题解 P4779 【【模板】单源最短路径(标准版)】 - 2018一维 的博客 - 洛谷博客 (luogu.com.cn)代码://图存储方式:链式前向星#include<cstdio>#include<iostream>#include<queue>using namespace std

2022-01-12 11:12:41 172

空空如也

空空如也

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

TA关注的人

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