- 博客(82)
- 收藏
- 关注
原创 GO 力扣 11.盛最多水的容器
盛最多水的容器这道题要求的就是两个柱子围城的最大的矩形这个题只需要我们枚举一下两个指针,每一次将矮的那一侧的指针向中移动,然后计算一下最大值,直到指针相交。代码如下:func maxArea(height []int) int { i:=0 j:=len(height)-1 ans:=0 for i<j { ans=max(ans,(j-i)*min(height[j],height[i]) ) Min(&i,&j
2021-04-20 21:49:29
199
2
原创 BZOJ 4403: 序列统计(lucas)
传送门题目是给你m个数字,让你求1~n个数分别能构成的单调不降序列的个数的和且模一个1e6+3对于这道题,我们先考虑n个人,然后我们把m个数字分给n个人,但是会有有人分不到的情况,所以我们假设每人都能分到这样我们的总个数就变成了n+m个数字分给m个人,这样我们用隔板法能得到C(m-1,n+m-1)然后总和就是n取1~n个组合数加起来,然而组合数有一个公式是C(m,n)=C(m,n-1)+C...
2020-02-14 17:23:10
299
原创 洛谷 P1771 方程的解
传送门这道题是组合数的知识,就是让我们求k个正整数加起来等于xx%1000的方案有多少种由于我们是要找正整数,所以肯定不会有0,所以就把xx%1000用隔板法分成k份,这样得到就是C(k-1,xx%1000-1)因为这个数范围比较大,所以我们需要高精度处理AC代码如下:#include<bits/stdc++.h>using namespace std;int c[100...
2020-02-14 16:19:47
311
原创 Finding LCM LightOJ - 1215
传送门题意:给出a,b,L求lcm(a,b,c)=L首先我们可以算出ab的lcm为k,然后令L/k=r,从r开始枚举c那么k∗c/gcd(k,c)=Lk*c/gcd(k,c)=Lk∗c/gcd(k,c)=L,当gcd(k,c)等于1时即找到c的最小值AC代码:#include<bits/stdc++.h>using namespace std;int main() {...
2020-02-02 15:16:31
180
1
原创 Bank Robbery LightOJ - 1163
传送门题意:给你一个A-B,让你求A的所有值,B等于A/10.根据题意我们可以列一个方程,令A%10=k那么我们可以得到A(A=10B+k)−B=XA(A=10B+k)-B=XA(A=10B+k)−B=X,即9B=X−K9B=X-K9B=X−K因为k是0到9,所以我们枚举k就能得到B,那么就可以反推A了AC代码:#include<bits/stdc++.h>using ...
2020-02-02 13:45:15
156
原创 A New Function LightOJ - 1098
传送门题意:求1到n每个数的因子和的和,而且要求一个数的因子不包含本身和1我们的做法是枚举因子,计算当前这个因子出现过多少次,而枚举范围为是2到sqrt(n),对于大于sqrt(n)的则用等差来求其和例如10枚举2的时候,我们求的等差就是4 5AC代码:#include<bits/stdc++.h>#define LL long long#define ULL unsi...
2020-02-02 12:48:01
174
原创 Trailing Zeroes (II) LightOJ - 1090
传送门首先这个题的意思是给你四个数字,让你找出这四个数字按照规则组合在一起得到的数字的后缀0的个数前两个数字为组合数,后面两个为指数然后再相乘我们的目的是得到后缀0的位数,而后缀0则取决于分解因子后5的个数和2的个数,所以我们只需要统计这两个数字的个数取最小即可AC代码:#include<bits/stdc++.h>using namespace std;#define ...
2020-02-01 15:28:48
155
原创 Digits of Factorial LightOJ - 1045(简单数论)
传送门题目大意,给你两个数字,让你找n的阶乘在k进制下的位数这个题比较简单,首先有一个转换就是十进制下的位数是log(n!)log(n!)log(n!)log10(n!)=log101+log102+log103+⋯+log10nlogk(n!)=log10(n!)∗logk10log_{10}(n!)=log_{10}1+log_{10}2+log_{10}3+\dots+log_{10}...
2020-01-28 13:15:01
151
原创 洛谷 P1903 [国家集训队]数颜色 / 维护队列 /【模板】带修莫队
传送门这道题需要我们在查询的时候修改内容,但是我们可以对其加一个时间戳,把每次的修改都记录一下,如果时间晚了就改回去,反之一样然后其他的操作就和普通的没多大区别了,直接上代码(记得开O2)#include<bits/stdc++.h>using namespace std;const int maxn=5e5+10;struct node { int l,r,time,i...
2020-01-19 23:25:44
156
原创 SPOJ 3267 D-query(简单莫队)
传送门这道题比较简单,做法也比较多,可以主席树,也可以离线树状数组,莫队也行,不过本文做法还是用的莫队直接上代码#include <bits/stdc++.h>using namespace std;#define maxn 1010000#define maxb 1010int aa[maxn], cnt[maxn], belong[maxn];int n, m, s...
2020-01-19 18:47:38
244
原创 139. 回文子串的最大长度(字符串哈希)
传送门描述如果一个字符串正着读和倒着读是一样的,则称它是回文的。给定一个长度为N的字符串S,求他的最长回文子串的长度是多少。输入格式输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个小写字符的形式给出。输入以一个以字符串“END”(不包括引号)开头的行表示输入终止。输出格式对于输入中的每个测试用例,输出测试用例编号和最大回文子串的长度(参考样例格式)。每个输...
2020-01-19 15:10:07
393
原创 841. 字符串哈希
传送门描述给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。输入格式第一行包含整数n和m,表示字符串长度和询问次数。第二行包含一个长度为n的字符串,字符串中只包含大小写英文字母和数字。接下来m行,每行包含四个整数l1,r1,l2,r2...
2020-01-19 14:24:36
229
原创 248. 窗内的星星(扫描线)
传送门描述在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数)。求用宽为W、高为H的矩形窗口(W,H为正整数)能圈住的星星的亮度总和最大是多少。(矩形边界上的星星不算)输入格式输入包含多组测试用例。每个用例的第一行包含3个整数:n,W,H,表示星星的数量,矩形窗口的宽和高。然后是n行,每行有3个整数:x,y,c,表示每个星星的位置(x,y)和亮度。没有...
2020-01-19 13:34:09
507
原创 1084. 数字游戏 II(数位dp)
传送门描述由于科协里最近真的很流行数字游戏。某人又命名了一种取模数,这种数字必须满足各位数字之和 mod N 为 0。现在大家又要玩游戏了,指定一个整数闭区间 [a.b],问这个区间内有多少个取模数。输入格式输入包含多组测试数据,每组数据占一行。每组数据包含三个整数 a,b,N。输出格式对于每个测试数据输出一行结果,表示区间内各位数字和 mod N 为 0 的数的个数。数据范围...
2020-01-15 14:05:25
571
1
原创 1083. Windy数 (数位dp)
传送门描述Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?输入格式共一行,包含两个整数 A 和 B。输出格式输出一个整数,表示答案。数据范围1≤A≤B≤2×1091≤A≤B≤2×1091≤A≤B≤2×109输入样例1:1 1...
2020-01-15 13:44:13
375
原创 1082. 数字游戏(数位dp)
传送门描述科协里最近很流行数字游戏。某人命名了一种不降数,这种数字必须满足从左到右各位数字呈非下降关系,如 123,446。现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数。输入格式输入包含多组测试数据。每组数据占一行,包含两个整数 a 和 b。输出格式每行给出一组测试数据的答案,即 [a,b] 之间有多少不降数。数据范围1≤a≤b≤231−...
2020-01-15 00:00:06
481
原创 不要62(数位dp)
传送门描述杭州人称那些傻乎乎粘嗒嗒的人为 62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有 4 或 62 的号码。例如:62315,73418,88914 都属于不吉利号码。但是,61152 虽然含有 6 和 2,但不是 连号,所...
2020-01-14 22:26:43
260
原创 1068. 环形石子合并(区间dp)
传送门描述将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。请编写一个程序,读入堆数 n 及每堆的石子数,并进行如下计算:选择一种合并石子的方案,使得做 n−1 次合并得分总和最大。选择一种合并石子的方案,使得做 n−1 次合并得分总和最小。输入格式第一行包含整数 n,表示共有 n 堆石子。第...
2020-01-14 15:54:23
248
原创 320. 能量项链 (区间dp)
传送门描述在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,...
2020-01-14 15:38:52
315
1
原创 acwing 282. 石子合并(区间dp)
传送门描述设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2...
2020-01-13 22:22:26
267
原创 acwing 274. 移动服务(线性dp)
传送门描述一个公司有三个移动服务员,最初分别在位置1,2,3处。如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p 到 q 移动一个员工,需要花费 c(p,q)。这个函数不一定对称,但保证 c(p,p)=0。给出N个请求,请求发生的位置分别为 p1~pN。公司必须按顺序依次满足所有请...
2020-01-13 15:39:42
197
原创 acwing 273. 分级(线性dp)
传送门描述给定长度为N的序列A,构造一个长度为N的序列B,满足:1、B非严格单调,即B1≤B2≤…≤BN或B1≥B2≥…≥BN。2、最小化 S=∑Ni=1|Ai−Bi|。只需要求出这个最小值S。输入格式第一行包含一个整数N。接下来N行,每行包含一个整数Ai。输出格式输出一个整数,表示最小S值。数据范围1≤N≤2000,0≤Ai≤109输入样例:713245...
2020-01-13 13:40:13
307
原创 acwing 271. 杨老师的照相排列(线性dp)
传送门描述有 N 个学生合影,站成左端对齐的 k 排,每排分别有 N1,N2,…,Nk 个人。 (N1≥N2≥…≥Nk)第1排站在最后边,第 k 排站在最前边。学生的身高互不相同,把他们从高到底依次标记为 1,2,…,N。在合影时要求每一排从左到右身高递减,每一列从后到前身高也递减。问一共有多少种安排合影位置的方案?下面的一排三角矩阵给出了当 N=6,k=3,N1=3,N2=2,N3...
2020-01-12 23:12:54
241
原创 acwing 758. 切割树(树形dp)
传送门描述给你一棵含有n个结点的树,编号为0~n-1,这n个结点都被染成了黑色或白色。显然,对于一棵树而言,我们每去掉一条边就能把树分成两部分。现在,要求你把这棵树切开,使得每一个连通块内只有一个白色结点。问共有多少种切开的方式满足以上条件,如果被删除的边集不同,我们则认为两种方式不同,反之,认为相同。请输出对1000000007取模后的结果。输入格式第一行仅包含一个正整数n,表示...
2020-01-12 22:06:17
425
原创 acwing 1078. 旅游规划(树形dp)
传送门描述W 市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足,W 市市长决定只在最需要安排人员的路口安排人员。具体来说,W 市的交通网络十分简单,由 n 个交叉路口和 n−1 条街道构成,交叉路口路口编号依次为 0,1,…,n−1 。任意一条街道连接两个交叉路口,且任意两个交叉路口间都存在一条路径互相连接。经过长期调查,结果显示,...
2020-01-12 17:41:43
421
原创 acwing 1072. 树的最长路径(树形dp)
传送门描述给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。现在请你找到树中的一条最长路径。换句话说,要找到一条路径,使得使得路径两端的点的距离最远。注意:路径中可以只包含一个点。输入格式第一行包含整数 n。接下来 n−1 行,每行包含三个整数 ai,bi,ci,表示点 ai 和 bi 之间存在一条权值为 ci 的边。输出格式输出一个整数,...
2020-01-12 13:53:00
281
原创 acwing 746.树的重心(树形dp)
传送门描述给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的结点数。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。输出格式输出一个...
2020-01-11 21:52:30
244
原创 acwing 286. 选课(背包类树形dp)
传送门描述学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了 N 门的选修课程,每个学生可选课程的数量 M 是给定的。学生选修了这 M 门课并考核通过就能获得相应的学分。在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其他的一些课程的基础上才能选修。例如《Windows程序设计》必须在选修了《Windows操作基础》之后...
2020-01-11 20:00:29
178
原创 acwing 285. 没有上司的舞会(树形dp)
传送门描述Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下来N行,第 ...
2020-01-11 18:01:39
526
原创 acwing 91. 最短Hamilton路径(状压dp)
传送门描述给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x]...
2020-01-11 15:40:50
174
原创 洛谷P2015 二叉苹果树(树形dp)
传送门题目描述有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点)这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1。我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有4个树枝的树2 5 \ / 3 4 \ / 1现在这颗树枝条太多了,需要剪枝。但是一些树枝上长有苹果。给定需要保留的树枝数...
2020-01-11 14:42:40
143
原创 acwing 272. 最长公共上升子序列
传送门描述熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了。小沐沐说,对于两个数列A和B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列,而所有的公共上升子序列中最长的就是最长公共上升子序列了。奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长...
2020-01-10 18:32:12
209
原创 acwing 895. 最长上升子序列
传送门描述给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4这个可以动态规划,也可以其他,动态规划复杂度为O(n*n),贪心+二分则可以达到O(n...
2020-01-10 17:04:24
210
原创 acwing12. 背包问题求具体方案
传送门描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是 1…N。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个...
2020-01-10 14:18:55
236
原创 acwing 11. 背包问题求方案数
传送门描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用...
2020-01-09 22:41:40
207
原创 acwing 10. 有依赖的背包问题
传送门有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总...
2020-01-09 19:08:08
133
原创 acwing 9. 分组背包问题
传送门描述有 N 组物品和一个容量是 V 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。接下来有 N 组数据:每组数据第一行有一个整数 S...
2020-01-09 15:35:31
145
原创 acwing 8. 二维费用的背包问题
传送门描述有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下来有 N 行,每行三个整...
2020-01-09 14:26:56
143
原创 acwing 7. 混合背包问题
传送门描述有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来...
2020-01-09 14:15:34
150
原创 acwing 6. 多重背包问题 III(单调队列优化)
传送门描述有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V (0<N≤1000, 0<V≤20000),用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格...
2020-01-09 13:35:39
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人