自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多边形内部两两连线最多分出的区域数公式

前置知识欧拉定理:在任何一个规则球面地图上,用RRR记区域个 数,VVV记顶点个数 ,EEE记边界个数 ,则R+V−E=2R+ V- E= 2R+V−E=2。SolutionR=E−V+2R=E-V+2R=E−V+2已经存在nnn个点 nnn任意四个点可以有一个交点Cn4C_n^4Cn4​V=n+Cn4V=n+C_n^4V=n+Cn4​每两个点有一条边Cn2C_n^2Cn2​一条线段会被一个交点分成两段,所以xxx条直线的交点会多分出来xxx条线段,利用VVV可以算出EEE每四个点的交点就

2020-11-05 01:07:13 857

原创 ABC178 D - Redistribution

ABC178 D - Redistribution求将S(1≤N≤2000)S(1 \le N \le 2000)S(1≤N≤2000)拆分为一个序列,且序列中所有值均≥3\ge 3≥3的方案数。( mod 1e9+7)(~mod~1e9+7)( mod 1e9+7)Solution计数DP?状态:设f[i]f[i]f[i]表示第iii个数的方案数。转移:f[i]=∑j=0i−3f[j]f[i]=\sum _{j=0} ^{i-3} f[j]f[i]=∑j=

2020-09-15 12:42:48 203

原创 K叉哈夫曼树

定义:哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。K叉哈夫曼树:哈夫曼树的构造方法是贪心的每次选最小的几个节点构造。当K>2K>2K>2的时候需要预处理一下,因为可能最后一步合并操作的点数不到K个节点,这样的话就不是最优的了。K>2K>2K>2预处理方法:当remain=(n−1) mod (k−1)≠0remain=(n-1)~mod~(k-1)\neq 0remain=(n−1) mod (k−1)​=

2020-09-14 22:00:54 945

原创 HDU6797

Solutiondfs枚举删除最短路上的某条边后继续删边,记录最大值Code#include <bits/stdc++.h>#define fi first#define se second#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int,int> pii;const double eps = 1e-8;const int NINF = 0xc0c0c0c

2020-09-12 00:30:34 128

原创 HDU6787

HDU6787题意可转换为,nnn个格子排成一列,恰好填入mmm个传送器的方案数量。要求:放置的传送器最大的连续数量≤11\leq 11≤11个111号和nnn号格子不能放传送器传送器传送到的位置j<j<j<传送器所在的位置iiiSolution首先要发现这是一个DP。DP的条件:无后效性最优子结构这道题满足DP的基本条件。(mod1e9+7 大概率计数dp )(然后我是猜了一下复杂度来确定大概是个三维的DP)DP解题步骤:确定状态:dp[i][j]

2020-09-12 00:24:15 148

原创 树的直径

之前写过一篇学军信友队趣味网络邀请赛 B.齐心抗疫,那篇文章中讲述了一种通过两次dfs就足以求得树的直径的方法,今天来学习另一种方法求树的直径——树形DP。定义树的直径:若树上两点u,vu,v间的最短路径最大,那么该路径的长度称为树的直径。(可以存在多条)区别两者的复杂度都是O(N)O(N)O(N)方法1:简洁方便,只用求一次即可得到树的直径,适当修改一下树的直径的两端点也可以在求树的直径的时候记录下来。方法2:可以记录到端点的距离,有些题目会用到。1.树形DP求树的直径令fff数组记录当前

2020-09-07 14:15:36 165

原创 HDU6797

Solutiondfs+dijkstra边权随机的情况下,最短路的边数很小。复杂度O(Tn2ck)O(Tn^2c^k)O(Tn2ck)c=最短路的边数c=最短路的边数c=最短路的边数赛时的时候这个方案是想到过,但是由于没考虑随机数据下最短路边数很小的情况放弃了dfs,而是瞎猜个结论贪心删边。暴力出奇迹?Code#include <bits/stdc++.h>#define fi first#define se second#define mp make_pairusin

2020-08-05 15:45:59 159

原创 HDU6805 Deliver the Cake

Solution建图:对每一个点建立两个点,每两个点连四条双向边。dijkstra跑的时候加一个点是否是’L’和‘R’的判断。Code#include <bits/stdc++.h>#define fi first#define se second#define mp make_pair#pragma GCC optimize(2)using namespace std;typedef long long ll;typedef pair<int,int> p

2020-08-01 01:19:56 150

原创 CF1370 D. Odd-Even Subsequence

Question给定一个长度为nnn的数组a[n]a[n]a[n],从中不改变顺序选取kkk个数,使得min(max(a奇),max(a偶))min(max(a_奇),max(a_偶))min(max(a奇​),max(a偶​))最小。Solution只需要让奇数位尽可能小或者偶数位尽可能小即可。二分答案,若奇数位置或偶数位置其中之一满足答案即可。Code#include<bits/stdc++.h>#define fi first#define se second#defin

2020-06-21 15:40:34 1252

原创 CF1358 D. The Best Vacation

CF1358 D. The Best Vacationnnn个月,每个月有a[i]a[i]a[i]天,每个月第kkk天的贡献为kkk,求连续xxx天最大贡献为多少。Solution尺取最后一个月一定会取完,只需要尺取枚举最后一个月即可,注意一下第一个月可能只取一部分。尺取法可以用前缀和优化算贡献。环可以用2n的数组等效替代。Code#include<bits/stdc++.h>#define fi first#define se second#define mp mak

2020-05-28 00:56:55 222

原创 ABC159 E. Dividing Chocolate

Question一块由‘0’、‘1’组成的H×WH\times WH×W的巧克力,将其进行横着切或者竖着切(行与行之间、列与列之间),使得切完后的每一块不超过KKK块’1’。Solution这道题目的关键在于HHH的范围很小。我们可以枚举横着切的方式,在横着切的基础之上对竖着切进行贪心。__builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1Code#include<bits/stdc++.h>#define fi first#define se

2020-05-22 18:40:27 284 1

原创 CF1354D - Multiset

CF1354D - MultisetQuestion给你一个数组长度为nnn的数组a (1≤ai≤n)a\ (1\le a_i\le n)a (1≤ai​≤n),有qqq次操作,每次操作输入kkk。若k>0k>0k>0,数组中增加一个数 kkk若k>0k>0k>0,数组中去掉第 −k-k−k 小的数若最后数组为空,则输出0,否则输出任意一个数组中存在的数。Solution1.二分答案2.权值线段树3.树状数组改改这是一道模板题,写这

2020-05-18 16:19:47 342 1

原创 CF1353 D. Constructing the Array

Question给你一串长度为nnn,值为000的数组,每次找到最长000子串,将其中间(奇数中间L+R2\frac{L+R}{2}2L+R​,若为偶数则选L+R−12\frac{L+R-1}{2}2L+R−1​)Solution优先队列模拟利用优先队列保存[L,R][L,R][L,R],每次保存去掉其中间之后的满足题意的子区间[L,mid−1][L,mid-1][L,mid−1],[mid+1,R][mid+1,R][mid+1,R]优先队列是用运算符<<<,但是排序的顺序和s

2020-05-16 13:56:44 183

原创 CF1352 E.Special Elements

CF1352EQuestion给定数组aaa满足1≤a[i]≤n(1≤n≤8000)1\le a[i] \le n(1\le n\le 8000)1≤a[i]≤n(1≤n≤8000),若数组中任意连续且长度≥2\ge 2≥2的和等于a[i]a[i]a[i]则贡献值+1+1+1,求最后贡献值为多少?Solution数据范围比较小直接O(N2)O(N^2)O(N2)暴力即可。写这篇题解是想告诉自己同样是判断状态的真假,不同的容器相差的时间很多。比如这道题用set就会被卡,用unordered_set

2020-05-11 21:09:07 243

原创 CF1345 D. Monopole Magnets

D. Monopole MagnetsQuestion题意太麻烦懒得解释Solution特判-1的情况:1.某一行(列)存在’#‘且不连续的情况2 .某一行(列)全为’.‘的同时且所有列(行)均存在’#’求连通块的个数Code#include<bits/stdc++.h>using namespace std;typedef long long ll;typ...

2020-05-07 14:56:52 219

原创 CF190 D. Non-Secret Cypher

CF190 D. Non-Secret CypherQuestion给定一个长度为nnn求满足[L,R][L,R][L,R]中有至少kkk个数字相同的子区间的数量。1≤k≤n≤4×1051\le k\le n \le 4\times 10^51≤k≤n≤4×105Solution遇到这种和[L,R][L,R][L,R]有关的子区间数量问题,可以采取尺取法,尺取法每个边界判断一组,复杂度为...

2020-05-05 17:02:52 169

原创 CF180 D. Name

CF180 D. NameQuestion给定两个字符串sss和ttt,若重新排列sss之后能使得s>ts>ts>t,则输出字典序尽可能小且满足条件的sss,否则输出−1-1−1。Solution贪心+分类讨论+DFS这里思路应该是十分清晰的,主要我在想如何实现会比较方便,看了一下当时比赛第一个交的人,交的是一份DFS,一个一个字符往下去遍历,挺适合这里的,而且也好写。...

2020-05-04 11:48:25 244

原创 AtCoder Beginner Contest 166

AtCoder Beginner Contest 166D - I hate FactorizationQuestion求任意一组满足A5−B5=XA^5-B^5=XA5−B5=X的 AAA 和 BBB。保证必有解。1≤X≤1091\le X\leq 10^91≤X≤109Solution暴力出奇迹,由于1005>109100^5>10^91005>109,所以找一个...

2020-05-03 23:14:04 250

原创 ABC 165 D - Floor Function

Questionf(x)=floor(Ax/B)−A×floor(x/B)f(x)=floor(Ax/B) - A × floor(x/B)f(x)=floor(Ax/B)−A×floor(x/B)求x≤nx\le nx≤n使得f(x)maxf(x)_{max}f(x)max​求f(x)maxf(x)_{max}f(x)max​Solution三分法。当时打的时候盲猜这是一个先递增后递减...

2020-05-03 00:35:24 387

原创 CF1348 D. Phoenix and Science

CF1348 D. Phoenix and ScienceQuestion一开始有1个细菌,他的权值为1。白天的时候1个细菌可以分裂成2个,也可以不分裂,晚上的时候1个细菌会增加权值1,求最少要多少天能够到达所有权值的和恰好为n,并且给出对应n天每天有几个细菌要分裂。Solution设需要TTT天。最快的增加方法为每次所有细菌分裂为222个,晚上加上分裂后细菌的数量,那么T=log2(n...

2020-05-02 05:32:16 335

原创 CF1348 C. Phoenix and Distribution

CF1348 C. Phoenix and DistributionQuestion给你n个字符,要求你将其分为k份,每份个数至少有1个,使得新组合的字符串中字典序最大的字符串的字典序尽可能小,打印这个字符串。Solution分类讨论字典序最小,先排序。s1≠sks_1\neq s_ks1​​=sk​,答案为sks_ksk​,此时剩余部分直接放在s1s_1s1​后面所得解最优。s...

2020-05-02 05:15:41 223

原创 CF1342 D - Multiple Testcases

D - Multiple TestcasesQuestion给定 nnn 个数 m[i]m[i]m[i],每个m[i]m[i]m[i]都在 [1,k][1,k][1,k]的范围内再给定kkk个数c[i]c[i]c[i]要求将所有的m[i]m[i]m[i]进行分组c[i]c[i]c[i]表示每组中大于等于iii的数不超过c[i]c[i]c[i]个问最少能分几组,并输出分组方案。Solu...

2020-04-27 16:32:36 224

原创 ABC164 D.Multiple of 2019

D.Multiple of 2019Question给一个字符串S,求有多少个子串在十进制下为2019的倍数。Solution前置知识:S[l][r]×10l−r=s[l][k]−s[r][k]S[l][r]\times10^{l-r}=s[l][k]-s[r][k]S[l][r]×10l−r=s[l][k]−s[r][k]若S[l][k]−S[r][k]≡0(mod P)...

2020-04-27 15:48:39 550

原创 CF1341 D. Nastya and Scoreboard

Question一个n个数码位的分数板,每一个数码位都是一个七段数码管,现在给出每个数码位的显示情况,问再点亮k段数码管的话能显示的最大的数是多少,如果不能构成一串数字,就输出-1.Solution贪心+DFS+剪枝我们要构造的数最大,那就是高位尽可能大。直接爆搜TLE,考虑优化加入数组v[i][j]v[i][j]v[i][j]表示到第iii个点,还剩jjj次操作的时候是否能找到可行解,...

2020-04-26 14:12:28 212

原创 ABC163 E - Active Infants

ABC163 E - Active InfantsQuestion将一个数组重新排序,每个元素的收益为 a[i]×lenmovea[i]\times len_{move}a[i]×lenmove​,求排序后的最大收益。Solution容易想到一个大的值无非放到左边和右边,哪边增加的多放到哪边,但是可能一样Code#include<bits/stdc++.h>using n...

2020-04-23 17:47:44 314

原创 CF1343 E. Weights Distributing

E. Weights DistributingQuestion给定由nnn个点,mmm条边构成的无权无向图和mmm个权值以及三个点a,b,ca,b,ca,b,c。问如何分配这mmm个权值才能使 lena→b+lenb→clen_{a→b}+len_{b→c}lena→b​+lenb→c​最小Solution有两种情况:a→x→b→x→ca→x→b→x→ca→x→b→x→c, lena→...

2020-04-23 17:28:30 185

原创 CF1343 D. Constant Palindrome Sum

D. Constant Palindrome SumQuestion给定一个长度为 nnn 的数列,nnn 为偶数,保证每个元素在 [1,k][ 1 , k ][1,k] 之间。每次操作可以把某个位置的数字变成 [1,k][ 1 , k ][1,k] 内的任意数字。要求让这个数列满足:对于所有的i∈[1,n2],a[i]+a[n−i+1]i ∈ [ 1 , \frac{n}{2} ],a[...

2020-04-23 14:58:24 269

原创 POJ3585

POJ3585题意给定一棵nnn个节点的无向带权树,要你找出一个节点作为根,向叶子节点流水,使流水量最大。思路换根DP这种题往往都是先从某个点出发DFS1DFS_1DFS1​,求出以这个节点ttt为根的答案,并记录与答案相关的数据到数组中。然后DFS2DFS_2DFS2​从ttt节点出发,记录换根的答案,其中所有根的最大值就为所求值。难点在于该如何去找寻其中的递推关系式。ddd数组...

2020-04-17 01:30:15 297

原创 CF1336 A. Linova and Kingdom

A. Linova and Kingdom题意给你一颗nnn个节点根为1号节点的树,选kkk个城市作为工业城市,其余为旅游城市,工业城市的使节每经过旅游城市开心值+1,求所有工业城市的使节到1号节点的开心值的和最大为多少?思路贪心 dfs很容易看出来如果只选一个,一定选距离根节点最远的叶子,我们思考第四个为什么选2而不是3和4,因为选3和4,会减少其子树节点的开心值。(因为我们选这个点...

2020-04-16 16:32:03 1344 4

原创 CF1336 B. Xenia and Colorful Gems

B. Xenia and Colorful Gems题意给你三个数组长度分别为r,g,b(1≤r,g,b≤1e5)r,g,b(1\leq r,g,b\leq1e5)r,g,b(1≤r,g,b≤1e5),从中分别选出一个数x,y,yx,y,yx,y,y,问(x−y)2+(y−z)2+(z−x)2(x-y)^2+(y-z)^2+(z-x)^2(x−y)2+(y−z)2+(z−x)2最小为多少?思...

2020-04-16 16:16:29 445

原创 NC14731

NC14731题意求所有长度为nnn的01串中满足如下条件的二元组个数:设第iii位和第jjj位分别位aia_iai​和aj(i<j)a_j(i<j)aj​(i<j),则ai=1,aj=0ai=1,aj=0ai=1,aj=0答案对1e9+71e9+71e9+7取模。思路题目让我们求逆序对,长度nnn的01子串1在0的左边有多少种方案,由于题中1和0的地位是等价的,故正...

2020-04-16 12:02:40 163

原创 CF1338 B. Edge Weight Assignment

CF1338 B. Edge Weight Assignment题意一棵n个结点的树,求最小和最大需要多少个不同的路径来构造树的路径权值,使得任意两片叶子的路径异或和为0。思路首先这是一棵无根树,以其任意一个叶子结点为根。(避免讨论)首先考虑最小,最小要么为1要么为3。为1的情况是任意结点到根节点的距离为偶数。为3的情况是只要有一个结点到根结点的距离为奇数。这里仅判断奇偶有两种写法...

2020-04-14 16:57:59 426 1

原创 NC14248

NC14248题意给定一棵n个点的树,问其中有多少条长度为偶数的路径。路径的长度为经过的边的条数。x到y与y到x被视为同一条路径。路径的起点与终点不能相同思路DFS 树 数据结构这道题和CF1339D十分相像,有兴趣的可以做一下。把题意转化为给你一颗n个结点的树,树上所有的边权值为1,求树上任意两点距离为偶数的点的个数。问题就转化为了如何获取树上任意两点的距离是否为偶数呢?图论相关...

2020-04-14 15:26:21 175

原创 NC14247

NC14247题意给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。1≤n≤1000,   0≤数组元素<1000001\leq n\leq1000,~~~0\leq数组元素<1000001≤n≤1000,   0≤数组元素<100000思路枚举 预处理异或前缀和为了便...

2020-04-13 20:07:41 251

原创 ABC162 E - Sum of gcd of Tuples (Hard)

E - Sum of gcd of Tuples (Hard)题意∑a1=1K∑a2=1K...∑aN=1Kgcd(a1,a2,...,aN) (mod1e9+7)\sum_{a_{1}=1}^{K} \sum_{a_{2}=1}^{K}...\sum_{a_{N}=1}^{K} gcd(a_{1},a_{2},...,a_{N}) ~(mod 1e9+7)∑a1​=1K​∑a2​=...

2020-04-13 16:36:02 610

原创 ABC162 F - Select Half

F - Select Half题意nnn个数里选⌊n2⌋\lfloor\frac{n}{2}\rfloor⌊2n​⌋个数,求最大值为多少?思路我想不到下面的DP是因为我菜,我刷的DP题太少了,那就多刷一点就能想到了。DP令f[i]f[i]f[i]表示iii个数里选⌊i2⌋\lfloor\frac{i}{2}\rfloor⌊2i​⌋里最大的数为多少。预处理sum[i]sum[i]sum...

2020-04-13 15:19:51 482

原创 NC5026E 相似的子串

NC5026E题意把原题意转化为给你一个长为nnn的字符串,求至少有kkk个相同且不相交的长为xxx(可为000)的子串,xmaxx_{max}xmax​为多少?思路二分+哈希字符串 时间复杂度O(nlogn)O(nlogn)O(nlogn)这道题不要求得到所求子串为什么,而要求子串所能取得最大长度,且答案具有严格单调性,故可以二分答案。那么如何验证?首先预处理字符串Hash得到Ha...

2020-04-12 18:13:19 148

原创 CF1334 D. Minimum Euler Cycle

D. Minimum Euler Cycle题意给你一个nnn个结点的完全有向图,求其字典序最小的欧拉回路,输出lll到rrr之间的结点为多少。思路构造 找规律 前缀和 二分结合样例找规律容易发现路径为1 2 1 3 1 4 1 5 … 1 n2 3 2 4 2 5 … 2 n3 4 3 5 3 6 … 3 n…1比赛的时候由于我没有注意样例中99995 9998900031...

2020-04-12 14:02:59 276

原创 NC13611

NC13611题意一棵有n个结点的树,我们有k种不同颜色的染料给树染色。当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同时,染色方案是合法的。请统计方案数。思路把题目转化为给你一颗n结点的树,将其分成i (1≤i≤k)i ~ (1\leq i \leq k)i (1≤i≤k)个连通块涂上不同的颜色,此时发现染色方案的数量与这棵树的形...

2020-04-10 00:12:31 172

原创 NC13249

NC13249题意给你一棵树,每个节点iii上有一个值k[i]k[i]k[i],一开始树上所有节点均为白色,要求你每次选择一个白色节点染色,从该节点往根的链上小于k[i]k[i]k[i]的均被染色,求最小染色次数为多少?思路DFS 贪心首先叶子结点是一定要染色的,我们考虑如何返回的时候构造最优方案,我们维护两个数组。回溯路径所能染色到的最远距离k[x]=max(k[x],k[s]−1)...

2020-04-09 22:08:42 140

空空如也

空空如也

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

TA关注的人

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