自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Codeforces Round #532 (Div. 2) (A,B,C,D,E,F)

A. Roman and Browser n个数只有(1/-1),你可以选择一个位置b,然后把所有c位置的数删除,c=b+i*k ( i 可以为任意整数),求的最大值 思路 直接暴力枚举b然后搞一遍就OK #include <bits/stdc++.h> using name...

2019-03-27 17:07:26 198 0

原创 Educational Codeforces Round 62 (Rated for Div. 2) (A,B,C,D,E)

A. Detective Book 题意 有一本侦探小说共n页,每一页都会有一个问题,第 i 页的答案在第 a[i] 页。有个人再看这本书,他读书有个习惯,必须把所有的问题都找到答案,问他几天能看完这本书? 题解 定义MAX为前缀的最大值,统计有几个位置MAX = a[i] 即可。 #...

2019-03-25 17:13:41 135 0

原创 牛客网 ~ 2018年湘潭大学程序设计竞赛G ~ 又见斐波那契 (矩阵快速幂)

题意 思路 显然就是矩阵快速幂,我们只需要构造6*6的矩阵使得 F[i−1]+f[i−2]+i3+i2+i+1F[i-1] + f[i-2] + i^3 + i^2 + i + 1F[i−1]+f[i−2]+i3+i2+i+1 乘一次可以转移到F[i]+f[i−1]+(i+1)3+(i+1)2+...

2019-03-07 15:51:27 153 0

原创 UVA ~ 712 ~ S-Trees(二叉树,二进制枚举)

题意 给出一棵满二叉树,每一层用一个xix_ixi​的01变量来表示,xix_ixi​取0往左走,取1往右走。每个叶子结点有一个值(0或1),然后有一些询问,求每个询问到达的叶子结点的值。 多组测试数据,以n=0表示结束,每组先输入n表示有n层,然后输入从根到叶子每一层对应x几x_几x几​那个变量...

2019-01-06 21:33:31 132 0

原创 UVA ~ 673 ~ Parentheses Balance (栈,括号配对)

题意 给定一串由()和[]组成的字符串。如果我们规定以下的字符串是合法的字符串: (1) 空串是合法的字符串 (2) 如果A、B都是合法的,那么AB也是合法的字符串。 (3) 如果A是合法的,那么(A)和[A]都是合法的字符串。 也就是说,所有左右括号必须配对,且不能“切开括号”(如“[(])”...

2019-01-06 16:51:08 189 0

原创 HDU ~ 6273 ~ Master of GCD (差分数组 + 快速幂)

题意 T组测试数据,每组给出一个N和M,N表示有一个长度为N初始值全为1的序列,现在有M次操作,每次把[L,R]区间乘上x(x只可能是2或者3),问最终整个序列的最大公约数是多少? 题目PDF地址 思路 答案就是:22出现最小次数∗33出现的最小次数2^{2出现最小次数}* 3^{3出现的最小次...

2018-12-25 20:44:17 260 0

原创 POJ ~ 3263 ~ Tallest Cow(差分数组)

题意 有N头牛,最高的是第i头,身高是H,现在有R组相对关系。每组相对关系有两个数A和B,表示A和B能相互看见,也就是他们中间的牛都比他俩低。输出所有牛的最大的可能身高。 思路 我们只要找到每个牛最大可能是第几高的就OK。 A和B可以相互看见,其实就是[A+1,B-1]区间的牛都比他俩低,也就是...

2018-12-25 20:14:45 147 0

原创 GYM ~ 101775J ~ Straight Master(思维,差分数组)

题意 T组测试数据,每次给你一个长度为N的序列,每次可以选择一个长度3,4,5的区间将这个区间内的数都减一,问能否经过若干次操作后使得数组全变为0? 思路 首先将数组进行差分获得差分数组diff(diff[i]=a[i]-a[i-1])。 diff[i]为+++就相当于以 i 为起点的区间有di...

2018-12-25 19:41:21 89 0

原创 洛谷 ~ P3948 ~ 数据结构 (差分数组)

思路 直接差分数组搞一搞就OK了。因为前面的查询和修改掺杂在一起的询问很少,所以对于那些询问我们暴力去查询就OK。在final询问之前求一个符合要求的前缀和就可以O(1)输出了。 #include &lt;bits/stdc++.h&gt; using namespace std;...

2018-12-24 14:52:29 103 0

原创 洛谷 ~ P1083 ~ 借教室 (差分数组 + 二分)

思路 很容易想到暴力的写法,对于一个订单来说,直接从第一天到最后一天都减去d[i]即可,每个订单复杂度为O(n),总的复杂度为O(n*m)明显超时。 可以发现如果前x个订单不符合要求,那么往后一定不符合,这个性质使得我们可以使用二分来求答案。 我们每次二分一个答案,对于当前答案x,我们需要判断...

2018-12-21 21:35:03 107 0

原创 HDU ~ 1556 ~ Color the ball (差分数组)

思路 差分数组模板题。 学习链接 #include &lt;bits/stdc++.h&gt; using namespace std; const int MAXN = 1e5 + 5; int n, a[MAXN]; int main() { while (~scan...

2018-12-21 20:21:52 101 0

原创 洛谷 ~ P2458 [SDOI2006] ~ 保安站岗(树形DP,最小支配集变形)

注意他看守的是通道端点(即树中的点) 思路 看起来很像是最小点覆盖或最小支配集。但是最小点覆盖是去覆盖边的;最小支配集,一个点只可以被支配集中的一个点支配。而本题,需要支配点,但是一个点可以被多个点去支配,所以本题是最小支配集的一个变形。 dp[u][0/1/2]dp[u][0/1/2]dp[...

2018-12-21 19:18:23 117 0

原创 UVA ~ 1218 ~ Perfect Service (树形dp,最小支配集)

题意 补充 本题是多组输入输出,每组先输入N,然后输入N-1条边,然后在输入一个flag,flag=-1表示结束。 dp[u][2]=min(dp[u][2],dp[u][1]−dp[v][2]+dp[v][0]);dp[u][2] = min(dp[u][2], dp[u][1] - dp[...

2018-12-18 19:09:33 83 0

原创 UVA ~ 1292 ~ Strategic game (树的最小点覆盖)

题意 对于图G=(V,E)来说,最小点覆盖指的是从V中取尽量少的点组成一个集合,使得E中所有的边都与取出来的点相连。也就是说,设V‘是图G的一个顶点覆盖,则对于图中的任意一条边(u,v),要么u属于集合V’,要么v属于集合V‘。在V‘中除去任何元素后V’不在是顶点覆盖。 输入有多组数据,每组...

2018-12-14 15:29:24 92 0

原创 洛谷 ~ P2014 ~ 选课 (树形背包)

思路 树形背包的模板题。加一个虚拟的0结点然后选m+1个科目就OK。 sz[u]sz[u]sz[u]表示以uuu为根的这棵子树的节点数目 dp[u][j]dp[u][j]dp[u][j]表示uuu以uuu为根节点的子树,选取jjj门课且必须选自己的最优解。 dp[u][j]=max(dp[u][...

2018-12-14 13:34:06 199 0

原创 HDU ~ 4745 ~ Two Rabbits (区间DP,环形序列的最长回文子序列)

题意 有两只兔子和一个N块石头组成的环,他们在这个环跳,A顺时针跳,B逆时针跳,有一个要求他们两个每时每刻必须站在相同质量的石头上,跳过的石头不能再跳,两个人的起点任意(可以相同),求两只兔子步数之和的最大值? 思路 问题就相当于:环形序列的最长回文子序列。环形序列,其实我们把原串往后复制一段就...

2018-12-13 15:47:48 114 0

原创 HDU ~ 4632 ~ Palindrome subsequence(区间DP,容斥,回文子序列个数)

题意 T组测试数据,每组给你一个序列,问这个序列有多少个回文子序列,mod104+7mod\quad 10^4+7mod104+7 思路 dp[i][j]dp[i][j]dp[i][j]表示[i,j][i,j][i,j]区间有多少个回文子序列 ①s[i]!=s[j]s[i]!=s[j]s[i]!...

2018-12-12 21:21:59 128 0

原创 POJ ~ 3280 ~ Cheapest Palindrome(区间DP,变为回文子序列最小代价)

题意 给你长度为N一个字符串,和M个字符,对于每个字符有两种操作:增加或删除,各有一个权值,问将这个串变为一个回文串的最小花费是多少? 思路 dp[i][j]dp[i][j]dp[i][j]表示将[i,j][i,j][i,j]区间变为回文串的最小花费 那么状态转移很容易想到: ①如果s[i]==...

2018-12-12 20:29:47 99 0

原创 Codeforces ~ 1083A ~ The Fair Nut and the Best Path(树形DP,树的直径)

题意 先输入N表示一棵有N个结点的树,然后输入N个点的点权,然后输入M条边。要求一条链,使得链上的∑\sum∑点权和-∑\sum∑边权和最大,输出这个最大值。 思路 显然是树的直径? dp[u]表示当前到u的最长链,那么ans=max(dp[u]+dp[e.v]−e.w)ans = max(d...

2018-12-12 18:07:19 260 0

原创 HDU ~ 2476 ~ String painter(区间DP,好题)

题意 现在有两个字符串A,B,现在有一种操作是可以将A的某一段全变为同一个字符,问将A变成B最少需要多少次操作? 思路 可以发现是区间DP,如果考虑直接将A变为B,A和B有的字符相同有的不同不太好DP。 我们可以分两步来,先计算出来把一个空串刷成B的花费,然后在计算把A变为B的花费就比较好计算了...

2018-12-11 19:40:44 123 0

原创 HDU ~ 4283 ~ You Are the One (区间DP)

题意 T组测试数据,每组输入N,表示有N个人要上台表演,然后输入这N个人的不开心度。如果第i个人第k个上台表演,那么他的不开心度就是d[i]*(k-1)。现在有一个狭窄的小黑屋,导演可以暂时让人先进入小黑屋中,然后让后面的人去舞台表演,因为小黑屋很狭窄所以最先进去的人最后才能出来,问怎么安排才能...

2018-12-10 21:51:34 87 0

原创 POJ ~ 1657 ~ Distance on Chessboard(思维 or 搜索)

思路 x = 横坐标之差 y = 纵坐标之差 王:其实就是max(x, y),这个也是切比雪夫距离 后:在横竖斜三条线上为1,否则为2 车:在横竖两条线上为1,否则为2 象:同在白格子或黑格子即可到达,在同一条斜线上为1,否则为2 判断是否在一条斜线上其实也就是x是否等于y 白色格子和黑色格子...

2018-12-10 21:30:22 95 0

原创 ZOJ ~ 3469 ~ Food Delivery (区间DP)

题意 一个人要送外卖,现在,在X轴上有N个人,先输入n,x,v,表示n个人,骑手一开始在x位置,他的速度是v,然后N行输入X[i]和B[i]表示这个人在x[i]位置,每分钟的等待都会增加b[i]的愤怒度,想要更多的回头客,所以骑手需要安排一个送外卖的方案使得所有人总的愤怒度最小,输出这个愤怒度。...

2018-12-09 22:03:46 69 0

原创 POJ ~ 1651 ~ Multiplication Puzzle(区间DP)

题意 多组测试数据,每组输入一个长度为n的数组,每次可以挑选一个值,然后获得该值乘以左右两边的分数,不可以挑选两端,求只剩下左右两端的最小分数。 思路 最优矩阵链乘的变形。 dp[i][j]dp[i][j]dp[i][j]表示[i,j][i,j][i,j]区间的最小分数 dp[i][j]=min...

2018-12-09 19:01:34 104 0

原创 ZOJ ~ 2433 ~ Highways(水)

题意 T组测试数据,每组先输入n,表示n个城市之间有一条单向的高速路,然后输入n-1个数字,表示1到[2,n]的路程。现在要新建两条反向的高速路,使得新建的路程最短,并且保证可以从任意城市到达任意城市,且一个城市不能建两个高速站。输出新建的路程和S1,E1,S2,E2。 每组数据后面输出一个换行...

2018-12-09 18:41:35 64 0

原创 Codeforces ~ 1088D ~ Ehab and another another xor problem (交互题,位运算)

题意 现在有两个数字a,b(a,b&amp;amp;lt;230a,b&amp;amp;lt;2^{30}a,b&amp;lt;230) 每次可以给出两个数字c,d,询问a⊕c和b⊕d的关系。询问次数不能超过62次。询问结束后输出a,b的值。 思路 考虑a和b在二进制下...

2018-12-05 13:01:29 225 0

原创 Codeforces ~ 1088C ~ Ehab and a 2-operation task (思维,构造)

题意 一个长度为n的序列,你有两种操作:①将前i个数字加上一个值,②将前i个数字取余一个值。让你通过不超过n+1次操作,将序列变为递增的。 思路 可以想到构造成0,1,2,3,4…n-1这种形式。这个n+1给的很玄。 从后往前,通过n次加操作,把a[i]加到a[i]%n=i,最后所有数对n取余即...

2018-12-05 11:44:24 131 0

原创 Codeforces ~ 1088B ~ Ehab and subtraction (set,模拟)

题意 给你一个长度为n序列,让你重复m次以下操作:选出序列中最小的正(&amp;amp;gt;0)整数,输出这个数字,所有数字减去这个数,全为0就输出0。 思路 通过手推第一个样例发现每次减去的值是两个不同的数的差值,所以直接放入set,每次输出当前值减去上一个值即可。 #include...

2018-12-05 11:37:31 184 0

原创 Codeforces ~ 1088A ~ Ehab and another construction problem (暴力)

题意 给你一个x,让你求得一组a和b,满足a∗b&amp;gt;x,a/b&amp;lt;x,a%b=0a*b&amp;gt;x,a/b&amp;lt;x,a\%b=0a∗b&gt;x,a/b&lt;x,a%b=0,输出一组合法的a和b,如果没有输...

2018-12-05 11:32:51 312 0

原创 Codeforces ~ 1082G ~ Petya and Graph (最大权闭合子图)

题意 N个点M条边,每个点有一个点权,每条边有一个边权。要求选出一个子图,使得边权和-点权和最大。 选这条边就必须选这条边的两个端点。 思路 其实就是边为正权值的点,点就是负权值的点,这样就是最大权闭合图的问题了。 源点s为0,汇点t为n+m+1,边成为的点编号为[1,m],原来的点编号为[m+...

2018-12-04 21:28:38 101 0

原创 Codeforces ~ 1082D ~ Maximum Diameter Graph (构造,树)

题意 N个点,给定每个点的最大值,要求构造一棵树,使得直径最长。 思路 首先度数超过2的都是直径上的点,剩下的度为1的点往上面挂即可,注意先在第一个和最后一个挂上一个。 什么时候是NO呢,除了根节点和叶子结点,每个点度数至少为2,叶子最少为1个。那么度数和最小为2*n-2。 #include&...

2018-12-04 21:01:46 60 0

原创 Codeforces ~ 1082C ~ Multi-Subject Competition (vector,暴力)

题意 n个人m个学科,然后n行每行输入s,r,表示这个人专攻方向为s,能力值为r。现在要选出一些人参加竞赛, 任意选几个学科,但是要求每个学科选的人数必须相等,求所有人能力和的最大值。 思路 用vector存一下每个学科有哪些能力,从大到小排序,求个前缀和。 ans[j]表示选j个人的时候的答...

2018-12-04 20:52:35 62 0

原创 Codeforces ~ 1082B ~ Vova and Trophies (模拟)

题意 给你一个只有‘G’和‘S’的字符串,可以交换两个字符的位置,问可以使得只有G的子段的最大长度是多少? 思路 模拟就行,但是情况比较麻烦。我们可以把每两个SS之间的G的长度存下来,并且统计一下非0段的个数。然后相邻两段相加,再加是否可替换,求一个MAX即可。 #include &lt...

2018-12-04 20:22:46 115 0

原创 Codeforces ~ 1082A ~ Vasya and Book (水)

题意 T组测试数据,每次输入n,x,y,d表示这本书有n页,你要从x页翻到y页,你每次只可以往前或往后严格的翻d页,不会超过最后一页和第一页。输入最少需要翻多少次?翻不到输出-1. 思路 考虑三种情况即可。①直接翻到②翻到第一页然后翻到y③翻到最后一页然后翻到y #include&lt;...

2018-12-04 20:10:35 93 0

原创 牛客练习赛32 ~ D ~ Where are you(kruskal + 边双联通)

题目链接 思路 kruskal过程,我们按边权排序,然后依次加入,同时用并查集维护连通性。 本题难以处理的其实是边权相同的边,我们把这些边一起考虑。假设此时最小生成树的这个森林中,我们把在一棵树(一个集合)看作一个点,以这些边权相同的边(如果这条边不太同一棵树中)建立新图,可以证明桥边一定必...

2018-12-03 18:58:35 66 0

原创 HDU ~ 4612 ~ Warm up(边双联通缩点 + 树的直径)

题意 N个点M条边的图,问如果加一条边, 最少可以剩下多少个桥? 思路 边双联通缩点以后形成一棵的树,所有树边均为桥。 环上的边显然不是桥,所以我们使得最长的一条链称为环,也就是直径。 那么答案就是:原来的桥数 - 直径 坑点是:有重边!!!重边自然不算是桥了。 #include &lt...

2018-12-03 18:25:36 67 0

原创 POJ ~ 3013 ~ Big Christmas Tree (最短路径树,思维)

题意 T组测试数据,每组先输入n,m表示有一个n个点m条边的无向图,然后输入n个点的点权,然后输入m条边(u,v,w),求一棵以1为根节点的数使得该树花费最小,输出最小花费,如果无法构建成一棵树输出“No Answer”。 树的花费为:∑\sum∑(边权*子树的点权和) 思路 通过推样例可以发现...

2018-11-20 18:41:48 94 0

原创 POJ ~ 3498 ~ March of the Penguins(最大流,结点容量)

题意 T组测试数据,每组先输入N,d,表示有N块浮冰。然后输入N行表式N块浮冰的信息编号为0~(N-1),(x[i],y[i],n[i],m[i])表示第 i 块浮冰在(x[i],y[i])位置,上面有n[i]只企鹅,m[i]表示这块浮冰最多允许跳跃m[i]只企鹅从这里离开。每块浮冰都可以承载...

2018-11-20 18:00:08 209 0

原创 HDU ~ 2732 ~ Leapin' Lizards(最大流,结点容量)

题意 T组测试数据,每组测试数据输入n,d,表示有两个n行的矩阵,保证列数相等但是没有输入是多少列。 第一个矩阵,每个点有一根柱子,每个柱子的高度&amp;lt;10。 第二个矩阵,‘L’表示该点有一只蜥蜴,‘.’表示啥也没有。 由于作用力与反作用力的原因,柱子上每当有一只蜥蜴跳过柱子...

2018-11-20 14:21:30 69 0

原创 Codeforces ~ 1062C ~ Math(贪心,前缀和,快速幂)

题意 给你一个长度为n的01串,q次询问,每次询问[l,r]区间可以获得的最大值为多少,取模1e9+7。 假定答案为ans,ans初始为0。你每次选择01串中的某个元素将其吃掉,ans加上这个元素的值,并将其他元素都加上这个元素的值。 比如第一个样例的第一次询问,串的变化过程如下: “1011...

2018-11-19 20:06:45 151 0

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