自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 本博客已搬家

已搬家https://www.cnblogs.com/DeepJay/

2020-10-20 21:43:18 132

原创 Educational Codeforces Round 80 (CF - 1288C - Two Arrays)

方法1: dp计数状态转移方程:dp( i , j , k ) = sum[ dp( i - 1 , x , y ) ] , 1<=x<=j , k<=y<=n , x<=y;dp( i , j , k ) 表示 在长度为 i 的数组,对于数组最后一个数字(即第i个) a[i] = j , b[i] = k 的总情况数;其中,a数组是单调不递减的,b数组是单调不...

2020-01-19 17:06:47 177

原创 CodeForces Goodbye2019 E.Divide Points (构造)

题目:传送门思路及代码参考了这位大佬的博客 点此跳转现将点分为四类 :(0表示偶数,1表示奇数)(0,0)(1,1)(0,1)(1,0)如果有至少一个点属于 3或4 ,则可以将所有点分为 {1,2} 和 {3,4};这样划分,集合内部距离平方为偶,集合之间的距离平方为奇数,满足题意;如果没有点属于 3或4 ,则将所有点分为 {1} 和 {2} ;这样划分 1:( 2 * x...

2020-01-05 10:46:41 274

原创 大连海事大学第十届程序设计竞赛 题解

A.宣传比赛简单暴力,对于每一个海报,向后遍历算出相交面积并求和。坑点:注意只有一张海报的情况AC#include<cstdio>#include<cstring>#include<algorithm>#include<cctype>using namespace std;typedef long long LL;typedef ...

2019-12-03 22:04:08 581

原创 Codeforces Round #603 (Div. 2) E. Editor (线段树维护前缀和最值)

题目:传送门思路:左括号设为1,右括号设为-1,线段树维护其前缀和的最大值和最小值,如果最小值>=0&&左括号数==右括号数,则括号序列合法,而最大嵌套数即为前缀和最大值,否则输出-1;坑点:这道题细节挺多的。一开始我写的如果左括号覆盖左括号,右覆盖右,那么完全不需要处理,然后就continue了,导致当前没有输出。。。还有就是光标移动的一些细节问题,谁覆盖谁需要...

2019-11-30 11:43:02 212

原创 Educational Codeforces Round 77 (Rated for Div. 2) E. Tournament (DP)

题目:传送门B站有详解点此跳转这里只谈一谈,为什么直接贪心就可以了(这里其实是DP的思想)首先不考虑贿赂的原因,那么这个满二叉树的每一条树链 自底向上能力值一定是单增的,越强的人能pk掉更多的人,所以可以把能力值高的人放在高轮次(便于后面贪心,当然放在前面被朋友pk掉也是可以的)。对于-1前面的数字完全不必理会,因为朋友可以吊打他们。那么我们就假定-1是第一个数字。对于朋友来说,第一轮选...

2019-11-29 20:51:59 142

原创 Leetcode1256 加密数字(手动找规律)

刷b站无意间看到了这道题,于是心血来潮想了想,但是没有leetcode的会员交不了。。。通过表可以发现:第i位的 1 表示 2 * 2^i, 0 表示 1 * 2^i ,其中最低位为第0位。那么我们把f(n)转化为2进制,1: 2 *2^i --> 2 *2^(i+1),即进位,0则不管;那么 我们把2进制转化为f(n) ,可以通过从低位开始借位 得到答案;#include<...

2019-11-23 23:31:03 342

原创 Codeforces Round #600 (Div. 2) E. Antenna Coverage (DP)

传送门思路见注释;AC代码#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> pii;typedef pair<LL,LL> pLL;const int N=2e5+5;const double inf=0x3f3f3f3f;...

2019-11-21 20:43:16 94

原创 CodeForces - 1249F(树形DP)

思路:考虑选了一个点u就加上他的权值w[u] ,那么对于与u距离小于K的点v,作w[v]-w[u] ,相当于对v造成选u不选v的影响。如果有的点点权变成了负数,那么这个点一定不会被选。如果有的点点权还是正数且之前被w[u]更新了,那就再加上这个点的权值进行“补差”,就相当于选了这个点而没有选u,而如果没有w[u]被更新,则相当于选了 u、v 两个点然后就是选点顺序的问题,一种可行的方案就是从叶...

2019-11-08 11:22:15 207

原创 Codeforces Round #598 (Div. 3) E - Yet Another Division Into Teams (dp)

传送门AC代码/*先排序,因为取连续的一段数作为一队,diff肯定是优于不连续的当一段>=6时,一定能分成两队,diff4-diff3可以被优化掉所以 就有了递推式 dp[i] = min ( dp[i] , dp[i-j] + a[i] - a[i-j+1] ), 3<=j<=5;*/#include<bits/stdc++.h>using nam...

2019-11-06 20:52:31 238

原创 Codeforces Round #597 (Div. 2) Shichikuji and Power Grid (最小生成树+思维好题)

传送门题意:在矩阵上给n个点,点与点之间的距离为他们的曼哈顿距离。现在可以建立若干个发电站在这n个点上,也可以在若干对点上建立边,使得每一个连通子图都至少有一个发电站。每一个点都有两种权值,建边权值ki和建发电站权值ci,如果i、j之间要建立边,那么边权为其曼哈顿距离*(ki+kj);思路:初始想法,是跑一个最小生成树,然后进行建站割边。答案思路,构建一个额外的点 s ,s到每个点...

2019-11-02 11:02:39 131

原创 Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing(二分答案+贪心)

传送门题意:给定n个人的可获得的最低工资,和最高工资,和你的总钱数,保证总钱数能满足所有人的最低工资,现在你要用这些钱去分配工资。问这些人最终获得工资的最大中位数。思路:二分答案mid,每一次对答案进行判断。这里又一点贪心的思想,由于想让答案更大,那么尽量就在不影响答案的情况下花更少的钱,所以我们要提升中位数mid,实际上就只需要将(n/2+1)个人的工资提升到mid。每个人都至少要达到...

2019-10-30 21:36:50 282

原创 Codeforces Round #594 (Div. 2) D1. The World Is Just a Programming Task (Easy Version)

传送门题意:可以选择一对位置进行交换,找出括号序列的操作后合法的的最大 位置个数,合法即为没有失配的括号比如“)()(”、")())(("等操作就是,当前位置时 p,把p+1~n放在位置1的前面;若操作后序列合法,那么该序列对应的满足条件的位置个数+1;思路:左括号数 != 右括号数,那么答案为0;左括号数 == 右括号数,可以把等式改为:已匹配的左括号数 == 已匹配的右括号数...

2019-10-30 18:57:13 259

原创 2018 ICPC沈阳区域赛补题

G - Best ACMer Solves the Hardest Problem Gym - 101955G 由于k都是整数,而在圆上的整数点很少,所以想到,tx^2 + ty^2 = K^2 ,处理出来 K 对应的所有的 tx 和 ty,那么对于(x,y),k,圆上所有的点为 (txdirx + x, tydiry + y) , dir表示方向,每...

2019-10-27 16:56:39 319

原创 POJ 1042(DP+路径打印)

被一个max和一个inline卡常了。。。dp[i][j]表示前i个湖用时j个单位时间时钓到的最多鱼数。状态转换方程为:dp[i][j]=Math.max(dp[i-1][ j-k-t[i] ]+fishs , dp[i][j]),t[i]为从第i-1个湖到第i个湖所用的时间,fishs为在k个时间单位内小明在第i个湖钓到的鱼数;递推填表时,有很多细节要注意,见代码注释AC代码#inc...

2019-10-23 21:56:20 143

原创 CF1248C Ivan the Fool and the Probability Theory(计数DP+思维)

传送门思路:由题意可知:相邻两行要么相同,要么相反;假设上述命题为假命题,那么一定存在a[ i ][ j ] != a[ i ][ j+1 ] , a[ i+1 ][ j ] == a[ i+1 ][ j+1 ] ;由于要么为黑、要么为白(每个格子只有两种状态)则这四个格子中一定有一个格子有两个相同颜色的相邻格子,与题目要求矛盾,因此上述命题为真命题;得证。分析一下第一行的情况...

2019-10-22 21:46:21 193

原创 1236B - Alice and the List of Presents(思维)

传送门思路:可以把n件物品拆成一件一件来考虑;对于每一件物品,要保证至少有一个是放在m个包中的某一个包里的,那么总的合法方案就是 2^m-1(对于每一个包放或者不放,最后减去全不放的情况);那么总的答案 就是第一种的物品的方案 * 第二种物品的方案 * …… =(2^m-1) ^ n ;(要把每一种物品放置 组合成 n 种物品放置);同时这种考虑方法也规避掉了一个包 放置多个同一种物品的...

2019-10-21 16:28:55 149

原创 Uva481 (LIS+路径打印)

last数组储存在栈中的对应位置题目要求找最后一个lis,就直接从最后向前遍历因为后面能够更新栈中元素的元素,下标靠后,所以不会影响寻找;AC代码#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>using namespace std;typed...

2019-10-15 11:50:37 138

原创 POJ1192 (树形dp 最优连通子集)

AC代码#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>using namespace std;typedef long long LL;const int N=1e3+5;const int inf=0x3f3f3f3f;const int m...

2019-10-15 09:58:27 166

原创 POJ 1061 (拓展欧几里得+求最小正整数解)

AC代码#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>using namespace std;typedef long long LL;const int N=1e5+5;const int inf=0x3f3f3f3f;const int m...

2019-10-14 21:46:43 257

原创 欧几里得算法(辗转相除法) 证明及复杂度分析

欧几里得算法核心:gcd( a , b ) = gcd( b , a%b ) ,其中 gcd 表示 a 和 b 的最大公约数;证明:设 a 和 b 的最大公约数为 c ;则有 c = gcd( a , b ) ;设 a = x * c , b = y * c , 其中 x 与 y 互质 (因为 c 是最大公约数)设 g = a%b = a - i * b = (x - i * y )...

2019-10-14 20:19:29 7157

原创 1238D - AB-string (容斥+思维)

题目:传送门思路:good字符串的情况有很多,而坏字符串的情况比较少,所以我们可以考虑容斥,总的字符串有(n+1)*n/2个,我们直接算坏的;坏的字符串: ABBBBBB…BB(一个A ,k个B ) 或者 BBB…BBA 或者 A,1<=k<n;AC代码#include<cstdio>#include<cstring>#include<ccty...

2019-10-10 19:31:09 160

原创 POJ-3162(树形DP+单调队列)

题意:求1~n 在树上的最远距离d[i] , 1<=i<=n; 然后求出d数组里最长区间长度且满足区间最大值-最小值<=m;思路:树形dp求出数组d; 然后两个单调队列分别维护最小值最大值,并且维护一个最左端点l,更新队列 、端点和答案即可。AC代码#include<cstdio>#include<cstring>#include<ccty...

2019-10-09 16:28:12 146

原创 最小支配集(poj3659)

最小覆盖集:点覆盖边最小支配集:点覆盖点AC代码#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>using namespace std;typedef long long LL;const int N=1e5+5;const int inf=0...

2019-10-05 21:05:00 282

原创 求树的重心 模板

树的重心:树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。void dfs(int u,int pre){ num[u]=1; f[u]=0; for(int i=head[u];i;i=e[i].next) { int v=e[i].to; if(v...

2019-10-04 20:59:50 129

原创 1234F - Yet Another Substring Reverse(枚举状态压缩+子集DP)

题意:给出一个只含 a~t 的字符串,现在可以选择一段区间进行翻转,问区间中字符各不相同时,最长长度为多少。分析:将题意转换为选择两个字符各不相同的区间,然后长度相加取最大;字符串中满足条件的所有区间长度和不超过20∗n,那么处理出所有区间,现在任务即为找到两个区间,其字符各不相同,且长度和最大;dp[i] 代表,最多(至多)出现这些字符 的 连续串 的 最大长度i是二进制状态枚举...

2019-10-03 11:19:33 299

原创 P2014 选课(树形背包,点权)

#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N=3e2+5;const int inf=0x3f3f3f3f;#define ls (i<<1)#define rs (i<<1|1)#define fi first#define se seco...

2019-10-02 21:57:17 98

原创 Strategic game(树上最小点集覆盖,树形DP)

不取父亲结点,那么必须取儿子节点,这样才能保证父亲和儿子的连边会被覆盖;取父亲结点,那么儿子节点可取 可不取;f [ u ] [ 0 ] += f [ v ] [ 1 ] ;f [ u ] [ 1 ] += min( f [ v ] [ 1 ] , f [ v ] [ 0 ] ) ;#include<cctype>#include<cstdio>#include...

2019-10-02 20:18:42 143

原创 Codeforces Round #590 (Div. 3) E - Special Permutations

用O(n)的时间处理出来每种数字pos加一的影响和变成1的影响;然后从 f(1)开始递推到f(n)【类似于差分】拿加一的影响来说,现在数字x变成排列的第一个位置,那么比x小的数字之前pos已经加一,判断原序列中x的左右两个元素:如果比x小,那么 inc[ x ]++ (所有大小为x的数字加一的影响) ,因为比x小的数pos之前已经+1,差的绝对值-1,因此当x pos变大时,要把它补回来;...

2019-10-02 20:08:08 158

原创 P2015 二叉苹果树(树形背包,边权)

树形背包(有依赖性的背包)由底向上更新,把子树处理成一个最优物品集,即像背包九讲说的一样,对于所以费用相等的,我们用01背包跑一个最大的价值,作为一个新的物品集。而向上更新时,每一个容量对于每一个物品集的选取而言,相当于做一次多重背包,选择一个取法,作为最优解,而这些容量对应的最优解集又会作为一个新的最优物品集回溯上去。AC代码#include<cctype>#include&...

2019-10-02 19:46:39 108

原创 P1352 没有上司的舞会(树形DP入门,自底向上更新)

f [ u ] [ 1 ] 表示当前点 取,f [ u ] [ 0 ] 表示当前点 不取则有状态转移方程:f [ u ] [ 0 ] += max( f [ v ] [ 0 ] ,f [ v ] [ 1 ] ) ,v是u的儿子结点;【比线性dp多了个子节点求和】f [ u ] [ 1 ] += f [ v ] [ 0 ];AC代码#include<bits/stdc++.h&gt...

2019-10-01 17:31:18 126

原创 Codeforces Round #589 (Div. 2) C.Primes and Multiplication (数学,质因子分解+快速幂)

设 x 的质因子为p1,p2,p3…f(x,1) * f(x,2) *… * f(x,n)= g(1,p1) * g(2,p1) * g(3,p1) * … * g(n,p1) *g(1,p2) * g(2,p2) * g(3,p2) * … * g(n,p2) *g(1,p3) * g(2,p3) * g(3,p3) * … * g(n,p3) * …这样可以用每个质因子求出n项 g(...

2019-09-30 21:33:33 97

原创 HDU2546 (01背包)

#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N=1e3+5;const int inf=0x3f3f3f3f;int read(){ int x=0,t=1; char ch=getchar(); while(!isdigit(ch)){ if(c...

2019-09-30 08:25:42 64

原创 Max Sum Plus Plus HDU - 1024(最大M子段和+滚动数组优化)

递推填表,填出来是个平行四边形;#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int N=1e6+5;const int inf=0x3f3f3f3f;...

2019-09-29 17:05:33 109

原创 POJ1064 浮点数二分答案

二分答案,最后直接保留两位小数会因为第三位小数的四舍五入错掉#include<stdio.h>#include<cmath>const int N=1e5+5;const double inf=0x3f3f3f3f;const double eps=1e-6;double a[N];int n,k;bool judge(double x){ int...

2019-09-29 08:17:18 168

原创 2019牛客暑期多校训练营(第二场)H.Second Large Rectangle

错因,用单调栈求出所有极大全1子矩阵,在这些矩阵中取第二大;最后被3 5101001110011101hack了,仔细想了一下,其实忽略了 (w-1)* h和(h-1)* w ;#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N=1e3+5;const int in...

2019-09-26 21:22:02 68

原创 最大全1子矩阵的两种解法(例题:City Game HDU - 1505)

以前牛客多校遇到过两道,都没做出来,这次来系统性的补习一下。例题:City Game HDU - 1505 题意:给你一个矩阵,求最大全1子矩阵,最后结果乘以3。。。全1矩阵可以参考下图这个框就代表一个全1矩阵,且图中所示是一个极大全1矩阵(四条边都有0)当然他也是一个最大全1矩阵。做法一:单调栈+预处理我们先把 01矩阵预处理,对于第 j 列,从第一行从头开始扫描至最后一行,得到...

2019-09-25 21:20:13 917

原创 POJ - 2593(求两个不相交最大子段和)

从左向右扫,求得【1,i 】的最大子段和,1<=i<n从右向做扫,求得【 i,n】的最大子段和,1<i<=n然后 O(n) 枚举断点#include<cctype>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;ty...

2019-09-25 16:51:01 269 1

原创 Codeforces Round #588 (Div. 2) C - Anadi and Domino

#include<bits/stdc++.h>using namespace std;const int N=11;const int inf=0x3f3f3f3f;int read(){ int x=0,t=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')t=-1; ch=getchar()...

2019-09-24 10:21:17 250 5

原创 1216E - Numerical Sequence(前缀和+二分)

Easy vision:维护三个数组 a[ ] , b[ ] , c[ ] ;a[ i ] 表示 数值为 i 的数字的长度,例如 a [ 1 ] = 1 , a [ 23 ] = 2 ;b[ i ] 表示 数字1~i 的总长度 ,例如 b[ 9 ] = 9 , b[ 11 ] = 13 (1234567891011) ;c[ i ] 表示 序列 1~1 、1~2、…… 、1~i-1 、...

2019-09-22 21:10:06 763

空空如也

空空如也

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

TA关注的人

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