自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数学题集

codeforces 1493Dcodeforces 1516D

2021-05-24 21:13:04 120

原创 Wall Painting ( 位运算 + 数学 )

HDU4810#include<bits/stdc++.h>#define LL long longusing namespace std;const int maxn=1e3+5;const int mod=1e6+3;LL fac[maxn],inv[maxn],a[maxn],ant[maxn];LL qpow(LL x,int p){ LL ans=1; while(p){ if(p&1) ans=ans*x%mod;

2020-12-03 08:54:18 190

原创 GTY‘s gay friends ( 线段树 + 区间排列)

HDU5172#include<bits/stdc++.h>#define LL long longusing namespace std;const int maxn=1e6+5;inline int read() { int s = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') {if (ch == '-') f = -1; ch = getchar();} while (ch &gt

2020-12-02 17:44:00 181

原创 AtCoder 2362

Splatter Painting大致题意:给一个 nnn 个点 mmm 条边的无向图,有 qqq 次操作 第 iii 次操作,给出 v,d,c,v,d,c,v,d,c,把所有到点 vvv 的距离不超过 ddd 的点都染上颜色 ccc 问最后每个点的颜色 n,m,q,c<=100000,d<=10.n, m, q, c <= 100000, d <= 10.n,m,q,c<=100000,d<=10.解题报告:考虑最终颜色显然逆向操作直接上 dfsdfsdfs

2020-11-09 20:59:27 121

原创 最小环问题 ( Floyed )

hdu1599解题报告:要通过此题就要明白 floyedfloyedfloyed 算法原理及其每步的含义。 for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]); } } } 其本质就是动态规划 k作为阶段必须置于最外层,i,j作为附加状态置于内层 mp<

2020-11-09 17:40:30 254

原创 2015 Multi-University Training Contest 3 Crazy Bobo( 树形最大集合 + 记忆化搜索 + 思维 )

Crazy Bobo大致题意:找出最大的集合满足以下要求:1.1.1. 集合中所有点在原图中是连通图2.2.2. 集合中权值大小相邻的两个点,它们路径上其它点的权值均小于起点权值。解题报告:题意转化为 从权值小的点出发最多能达到的点数??那么我们可以将无向图建成有向图即权值小的指向权值大的。dfs,bfs 都可做代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<LL,int>

2020-11-06 15:41:59 72

原创 Avito Cool Challenge 2018 D Maximum Distance ( 并查集 + MST + 思维 )

Codeforces - Maximum Distance解题报告:1.1.1.路径最大值的最小值很明显MST2.2.2. 如何快速判断 kkk 个点中两两可达的路径最大值呢 ??我们维护 szszsz 数组,表示当前节点中包含多少个 kkk 节点;在维护并查集的过程中考虑当前有效边两点的 szszsz 是否都大于0(即表示该边可用于更新最大值)代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<

2020-11-05 22:29:43 59

原创 「JOISC 2015 Day 4」Inheritance ( 并查集 + 二分 )

「JOISC 2015 Day 4」Inheritance解题报告:建立 k 个并查集维护它的最小生成树将边权从大到小排序再依次枚举每一条边,那如何快速判断它属于哪一并查集呢??你会发现答案就有单调性#include<bits/stdc++.h>#define LL long long#define pii pair<LL,int>#define all(x) x.begin(),x.end()#define wp(x) write(x),putchar('\n')

2020-11-05 21:05:23 171

原创 2018 GCPC ( MST + 树上路径 )

Mountaineers解题报告:最大值最小的路径肯定在MST上面,那么我们直接求一个MST然后就是任意两点之间的树上路径最小值即可。树上倍增即可。但是要注意同一个点的情况。#include<bits/stdc++.h>#define LL long long#define pii pair<LL,int>#define all(x) x.begin(),x.end()#define wp(x) write(x),putchar('\n')#define wpl(

2020-11-05 16:09:23 99

原创 最短路变形记

文章目录所有可达路径上最大值的最小值所有可达路径上最小值的最大值所有可达路径上最大值的最小值例题 1:2020牛客NOIP赛前集训营-提高组(第三场)B题目链接解题报告:1.1.1. 图论问题 ,依题发现牛半仙每走完一遍后它的接受程度会递增,也就说之前走过的还会被下一次重复走,正面不好计算,那我们不妨考虑到达每种类型妹子的最小困难程度,再考虑其贡献。2.2.2. 怎么求每条路径上最大值的最小值呢 ??会发现对每条路径的限制就是路径上最大困难程度,显然变成了最小生成树问题(因为可以保证最大值尽量

2020-10-29 16:42:14 62

原创 牛客:Equivalent Prefixes ( 单调栈 + 思维 )

题目链接大致题意:给你两个大小为 nnn 的数组 u、vu、vu、v,求最大的前缀 q(1<=q<=n)q (1<=q<=n)q(1<=q<=n) 满足其任意子区间的 RMQ(u,l,r)==RMQ(v,l,r),(1<=l<=r<=q)RMQ(u,l,r)==RMQ(v,l,r) ,(1<=l<=r<=q)RMQ(u,l,r)==RMQ(v,l,r),(1<=l<=r<=q)RMQ(w,l,r)指wi,wi+

2020-10-26 21:54:43 178

原创 ZOJ 4120 Tokens on the Segments ( 优先队列 + 思维 )

题目链接大致题意:在一个平面上给你 nnn 条线段的左右端点的横坐标(可重叠),纵坐标为当前是第几条,即两点坐标为 (l,i)(l,i)(l,i) 和 (r,i)(r,i)(r,i) ,你可以在平面的任意整数坐标位置放置一个标记,标记的横坐标不可相同.问最给定的线段最多会被标记多少条。解题报告:贪心 ,对于某位置 xxx 的标记,我们肯定会左端点小于等于xxx 且右端点大于等于 xxx,满足这样的线段可能有很多条,根据贪心性质肯定优先选择右端点较小的(优先队列维护),这样做能让右端点较大的在更右位

2020-10-22 21:31:51 170

原创 [蓝桥杯][2019年第十届真题]糖果(状压dp)

题目描述:糖果店的老板一共有 M 种口味的糖果出售。为了方便描述,我们将 M 种 口味编号 1∼M1 ∼ M1∼M。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而 是 K 颗一包整包出售。幸好糖果包装上注明了其中 K 颗糖果的口味,所以小明可以在买之前就知 道每包内的糖果口味。给定 N 包糖果,请你计算小明最少买几包,就可以品尝到所有口味的糖 果。输入:第一行包含三个整数 NNN、MMM 和 KKK。接下来 N 行每行 K 这整数 T1,T2,⋅⋅⋅,TKT1, T2, ·

2020-10-16 12:01:55 506

原创 ZOJ 3872 Beauty of Array ( 规律+ 思维 : 连续区间不同数得和)

题目链接大致题意:n个数,求所有连续区间不同数的和的总和。n个数,求所有连续区间不同数的和的总和。n个数,求所有连续区间不同数的和的总和。解题报告:考虑不包含重复数 −>->−> 对当前位置而言,它的贡献为 a[x]∗i∗(n−i+1):即该位置在所有包含它的连续区间的贡献a[x] *i* (n-i+1):即该位置在所有包含它的连续区间的贡献a[x]∗i∗(n−i+1):即该位置在所有包含它的连续区间的贡献。考虑重复数 −>->−> pos[i]pos[i]

2020-10-15 10:58:54 69

原创 ZOJ 3870 Team Formation ( 位运算+思维)

题目链接解题报告:代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define all(x) x.begin(),x.end()#define mem(a, b) memset(a,b,sizeof(a))using namespace std;const int maxn = 2e5 + 5;const int MOD = 1e9 + 7;inline in

2020-10-14 22:20:53 117

原创 codeforces edu96-E. String Reversal (逆序对+思维)

题目链接#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define all(x) x.begin(),x.end()#define mem(a, b) memset(a,b,sizeof(a))using namespace std;const int maxn = 2e5 + 5;const int MOD = 1e9 + 7;inline int read() {

2020-10-13 16:06:00 142

原创 ZOJ 3781 Paint the Grid Reloaded ( 缩点建图 + dfs + bfs )

题目链接大致题意:给你一个大小 n∗mn*mn∗m 且只有元素 O/XO/XO/X 的矩阵,有这样一种操作每次你点一个元素的时候,这个元素所在的联通块(颜色相同)就会翻转,问你最少经过几次操作可以将所有的元素变成颜色统一解题报告:1.1.1.对同一连通块区域的点进行缩点2.2.2.建图,在新点中相邻的点建立一条有向图3.3.3.对每个点进行深搜求最大深度(最大深度=最小反转次数)再取 minminmin,代码展示:#include<bits/stdc++.h>#define

2020-10-09 22:30:49 90

原创 ZOJ 3780 Paint the Grid Again ( 拓扑排序 )

题目链接大致题意:给你一个 n∗nn*nn∗n 的表格,一次涂色能把一行涂成 XXX 或把一列涂成 OOO 且每行每列最多执行此操作一次,在用最少次数涂色的前提下,输出字典序最小的涂色方案(列涂色比行涂色小,涂色下标小的较小)。解题报告:对于当前位置 XXX ,先涂 OOO 再涂 XXX 即先涂列再涂行。对于当前位置 OOO ,先涂 XXX 再涂 OOO 即先涂行再涂列。也就是说对于当前状态它总是由某个前继状态转移过来,进而想到拓扑序列符合这样的性质。接着就是建图,我们可以这样建立有向边 (

2020-10-09 20:23:41 102

原创 ZOJ 3777 Problem Arrangement ( 状压dp )

题目链接大致题意:输入 nnn 和 mmm,接下来一个 n∗nn*nn∗n 的矩阵,mp[i][j]mp[i][j]mp[i][j] 表示第 iii 道题放在第 jjj 个顺序做可以加 mp[i][j]mp[i][j]mp[i][j] 的分数,问做完 nnn 道题所得分数大于等于 mmm 的概率。用分数表示,分母为上述满足题意的方案数,分子是总的方案数,输出最简形式。解题报告:状压 dpdpdp,枚举所有 题目被选举的状态。dp[i][j]dp[i][j]dp[i][j] 表示 iii 状态下得

2020-10-09 16:14:17 84

原创 点权和 (思维+树形结构+倍增)

题目链接解题报告:代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define all(x) x.begin(),x.end()#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int MOD=19260817;inline int read

2020-10-06 17:14:38 142

原创 字符串相关问题

判断字符串t是否为字符串s的子序列动态规划解法:dp[i][j]dp[i][j]dp[i][j] 表示字符串 sss 的前 iii 个字符中是否包含字符串 ttt 的前 jjj 个字符。状态转移方程:if s[i] == s[j]: dp[i][j] = dp[i-1][j-1]else : dp[i][j] = dp[i][j-1]逐个查找法:可以依赖于 StringStringString 自带的 findfindfind 函数进行快速查找int index=-1;for(aut

2020-09-27 12:54:58 78

原创 最长树链 ( dfs + 质因数分解 )

题目链接解题报告:我们不妨枚举最长树链 gcdgcdgcd , 那么该条树链上所有的点的权值可表示成 k∗gcdk*gcdk∗gcd 同样也可表示成 k∗gcd′(gcdk*gcd'(gcdk∗gcd′(gcd%gcd′==0)gcd'==0)gcd′==0) ,因此我们可以用质因子对这些点分类。对属于同一类质因子的点跑最长链,不断更新最长链即可。 每个点被访问的次数就是其质因子种类数。代码展示:#include<bits/stdc++.h>#define LL long long

2020-09-24 20:15:49 275 2

原创 牛客小白月赛28 E( 线段树—区间最值下标)

题目链接解题报告:1.1.1.由数据范围可知需离散化2.2.2.直接上线段树维护最值即可。对于最值下标的查询 根据查询规则确定左右子树的访问顺序。代码展示:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define all(x) x.begin(),x.end()#define mem(a,b) memset(a,b,sizeof(a))using namespace

2020-09-24 17:41:05 182

原创 Can you answer these queries III ( 线段树--区间合并 )

链接:https://ac.nowcoder.com/acm/contest/1033/A来源:牛客网题目描述给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 max_{x \leq l \leq r \leq y}({\sum_{r_i=l}^{r}A[i]})maxx≤l≤r≤y​ (∑ri​ =lr​ A[i])。“2 x y”,把 A[x] 改成 y。对于每个查询指令,输出一个整数表示答案。

2020-09-21 16:46:35 68

原创 HDU 5726 GCD ( 线段树 + map )

题目链接大致题意:给你长度为 nnn 的数列,mmm 次询问,每次询问给定两个数 l,rl,rl,r ,求区间 GCD=gcd(a[l],a[l+1],.....,a[r]),GCD=gcd(a[l],a[l+1],.....,a[r]),GCD=gcd(a[l],a[l+1],.....,a[r]),并给出原数列有多少个区间的 gcd=GCDgcd=GCDgcd=GCD解题报告:求区间gcdgcdgcd有方法:线段树 ,RMQ,ST表该题关键是如何预处理求出所有区间的gcdgcdgcd呢??

2020-09-18 15:21:47 95

原创 牛客团队假日赛——分组( DP )

题目链接解题报告:自己也是看题解补出来的,当时没想到 dp 求解。dp[i]=max(dp[i−1],dp[i−j]+j∗MAX),其中MAX=max(a[i−0],a[i−1],.....,a[i−j+1])dp[i] = max(dp[i-1],dp[i-j]+j*MAX),其中MAX=max(a[i-0],a[i-1],.....,a[i-j+1])dp[i]=max(dp[i−1],dp[i−j]+j∗MAX),其中MAX=max(a[i−0],a[i−1],.....,a[i−j+1])

2020-09-15 15:16:46 160

原创 简单瞎搞题 ( STL——bitset )

题目链接解题报告:#include<bits/stdc++.h>#define LL long long#define pii pair<LL,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;const int MOD=1e9+7;bitset<maxn>dp[105];int

2020-06-29 15:47:20 128

原创 有向图找环( 并查集 )

假设有一条 x−>yx->yx−>y 的有向边,当建立连接时,更新xxx的父节点,同时更新xxx 到父节点的距离 len[x]=len[y]+1len[x]=len[y]+1len[x]=len[y]+1若父节点相同说明存在环,环的大小为 len[x]+len[y]+1。len[x]+len[y]+1。len[x]+len[y]+1。#include<bits/stdc++.h>#define LL long long#define pii pair<LL,LL&

2020-06-28 16:41:59 3147 2

原创 Codeforces Round #649 (Div. 2) 部分题解

比赛链接文章目录A. XXXXXB. Most socially-distanced subsequenceC. Ehab and Prefix MEXsA. XXXXX大致题意:给你一大小为 nnn 的数组,要求最长的连续的且和不能被x整除子数组,无法中找到输出 -1 。解题报告:先考虑 -1 的情况:每一位都能被 x 整除在考虑 n 的情况:所有元素之和不能被 x 整除其他情况:左右指针同时开始遍历,很明显当前位为 0 对和没有影响,因此要删除一位不为 0 的数即可,最后取一个最大长度

2020-06-27 20:24:29 362

原创 edu90 - D. Maximum Sum on Even Positions ( 策略 : 子数组的反转)

题目链接大致题意:给你一个大小为 n 的数组,最多执行操作一次:反转任意一个连续的子数组。最后求 所有偶数位上的最大和。解题报告:#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int inf=0x3f3

2020-06-26 16:58:02 357

原创 操作数 (数论 :前n项的前n项和)

题目链接解题报告:这题思维难度较高。#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e5+5;const int inf=0x3f3f3f3f;const LL MOD=1e9+7;int n,k;LL p[maxn],f

2020-06-25 18:29:59 150

原创 求长度 ( 最短路 )

题目链接#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e5+5;const int inf=0x3f3f3f3f;const int MOD=1e9+7;struct TMD{ int to,next,w;}edge[

2020-06-25 17:22:03 225

原创 牛牛种花 ( 树状数组 + 离散化 )

题目链接解题报告:考虑对询问离线,将询问和种植的花的位置以x为第一关键词,y为第二关键词升序。这样保证后面的x不小于前面的x,这样的花只需要统计前面有多少个y小于查询位置的y即可。树状数组维护一下即可。数据范围较大,注意离散化。#include<bits/stdc++.h>#define LL long long#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespac

2020-06-24 10:57:06 329

原创 Codeforces Round #604 (Div. 2) 部分题解

原题链接文章目录A题:Beautiful StringB题:Beautiful NumbersC题:Beautiful Regional ContestD题:Beautiful SequenceA题:Beautiful String解题报告:#include<bits/stdc++.h>#define LL long long#define pii pair<LL,LL>#define mem(a,b) memset(a,b,sizeof(a))using names

2020-06-23 19:25:20 164

原创 分组 ( dfs + 思维 )

题目链接解题报告:将认识关系转化为图中的边。dfs这张图,对每一个没有被访问过的点,将它标记为源点的反色,回溯的时候统计每个点有多少同色相邻点,个数等于2时将其颜色转换。#include<bits/stdc++.h>#define LL long long#define pii pair<LL,LL>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=2e5+5;cons

2020-06-17 11:38:22 211

原创 Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors (GCD)

题目链接大致题意:给你 n 个数,对于每个数a_i,问能否找到它的两个因子(d1,d2)满足:d1>1&&d2>1&&gcd(d1+d2,a_i)==1,否则输出-1。解题报告:gcd的一些基础知识:gcd(x,y)=gcd(x+y,y)=gcd(x-y,y)若gcd(x,y)=1,则有 gcd(x,k*y)=gcd(x,k)若gcd(x,y)=1,则有 gcd(x+y,x*y)=1证明第三点:前提gcd(x,y)=1,gcd(x,y)=gc

2020-06-14 21:11:54 103

原创 木桩 ( 线段树 思维“ 最左(右)大于某个数位置”)

题目链接解题报告:直接上线段树维护区间最大值,询问的时候优先向左儿子询问再向右儿子询问,最后别忘了更新线段树。#include<bits/stdc++.h>#define LL long long#define pii pair<LL,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=1e6+5;const int inf=0x3f3f3f3f;int n,

2020-06-13 10:34:55 201

原创 Codeforces Round #485 (Div. 2) 部分题解

题目链接文章目录A题:Infinity GauntletB题 :High School: Become HumanC题:Three displaysD题:FairA题:Infinity Gauntlet解题报告:直接上 STL map 标记。#include<bits/stdc++.h>#define ll long long#define pii pair<int,int>using namespace std;const int maxn=1e6+5;map

2020-06-04 20:16:30 118

原创 Codeforces Round #646 (Div. 2) E ( dfs +思维)

题目链接解题报告:#include <bits/stdc++.h>#define ll long long#define f first#define s second#define pii pair<int,int>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int maxn=2e5+10;const ll MOD=1e9+7;pii p[maxn];struct

2020-06-03 10:24:50 81

原创 牛客小白月赛12 D ( 数论 )

题目链接解题报告:不会呀先上别人的题解,日后再补。

2020-06-01 17:56:11 125

空空如也

空空如也

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

TA关注的人

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