自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #563 (Div. 2)

A. Ehab Fails to Be Thanos直接排序即可#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#define S se...

2019-12-31 16:58:53 129 1

原创 Codeforces Round #548 (Div. 2)

A:枚举每一位为结尾即可。B:倒叙贪心每次取最大即可C:红色边连接的联通块里的路径一定是not good 做个减法即可#include<bits/stdc++.h>using namespace std;typedef long long ll;const int M =2e5+6;const ll mod=1e9+7;ll qpow(ll a,ll b)...

2019-12-31 16:08:37 108

原创 Codeforces Round #582 (Div. 3)

A:先免费跳2,最终情况是都跳在x和x+1的位置。奇偶取min即可#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin>>n; in...

2019-12-22 20:45:48 190

原创 P3382 【模板】三分法

三分模板题目#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M=100000+7;const double eps=1e-9;double a[20];int n;double cal(double x){ double ans=0; for(int i=1;...

2019-12-19 21:02:50 156

原创 101. 最高的牛

假设牛身高都是H。给出一对关系A,B。A,B之间的牛都比A,B矮。为了使所有牛身高尽量高,我们只把A-B之间的牛身高减一,表示AB比其之间的牛只至少高了1.而且不会破坏之间牛的身高关系。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M=100000+7;...

2019-12-19 20:43:26 170

原创 蓝书——100. IncDec序列

差分数组的巧妙运用:让所有数都相同即:让差分数组bi,b2-->bn都等于0.每次操作相当于选择i,j.bi++,bj--;为了让b2->bn都等于0;正数之和:p,负数之和q最少操作次数一定是:先选择一正一负,抵消,然后剩的全正或者全负,与b1||bn+1,进行操作。最少次数为|p-q|由于选择b1,bj 和bj, bn+1会让结果+1或者不变...

2019-12-19 20:28:55 116

原创 蓝书——99. 激光炸弹

二维前缀和的基础应用#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M=5000+7;int sm[M][M];int main(){ int n,R; scanf("%d%d",&n,&R); for(int i=1;i<=n;i++)...

2019-12-19 20:07:30 159

原创 蓝书——98. 分形之城

对应找坐标,画图找关系即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#define S secondtypedef long do...

2019-12-19 19:38:46 222

原创 Codeforces Round #562 (Div. 2)

A Circle Metro 直接枚举,这种题范围小一般直接枚举,枚举复杂度On。最多一轮。分类讨论容易错,#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long...

2019-12-19 11:24:30 80

原创 Codeforces Round #577 (Div. 2)

A:这题我写了20min,BC一共才10min。。。。太粗心,写错一个上界调半天。#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#de...

2019-12-12 22:02:19 146

原创 CodeForces - 1252K 线段树维护矩阵乘法

本质上A操作相当于 * =.B操作相当于:*=.区间修改,区间查询,明显的线段树操作。我们每个节点同时维护和,区间更新时只需要交换两个矩阵即可,比较方便。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (...

2019-12-11 10:17:22 424

原创 POJ3252——数位dp

数位DP,难点在处理前导0.#include <cstdio>#include<iostream>using namespace std;typedef long long ll;const int N = 1e5+7;int di[50];ll dp[50][100];//二进制下 ,0-第i位,1的个数小于等于j的数 的个数 ll dfs(int ...

2019-12-10 20:14:30 146

原创 HDU 4734—— 数位DP

题意:F(x) = An* 2n-1+ An-1* 2n-2+ ... + A2* 2 + A1* 1,Ai是十进制数位,然后给出a,b求区间[0,b]内满足f(i)<=f(a)的i的个数。比较常规的数位dpdp[i][j]:低于i位数字的数中小于j的个数。然后从高位到第位进行数位dp,记录前面位累加的F贡献。减去小于FA,和超上界。 搞搞就行#in...

2019-12-10 16:59:40 131

原创 蓝书——131. 直方图中最大的矩形 单调栈入门题

回顾下单调栈。单调栈的求解最大子矩形的核心思想就是枚举以每个高度作为矩形的高度,乘以最大宽度。如果我们维护了一个递增的高度,来了一个比当前高度小的高度,那么当前高度就不能向右扩展了,则它就是一个无用高度,将它能扩展的宽度*高度算完就可以把他给扔了。这样就能在线性时间处理类似问题还有最大值左右维护的区间也可以用单调栈做,维护递增序列最小值左右维护的区间,维护递减序列。上面三类...

2019-12-09 15:53:21 180

原创 2019牛客暑期多校训练营(第二场)A,B,D,E,F,H,J

以后每周打牛客重现赛F. Partition problem递归组合数枚举。先把所有人当成红队,再组合数枚举7个人移到白队,每次移动改变的竞争值可以在On的复杂度内算出。#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef...

2019-12-09 15:27:44 357

原创 2019-2020 ICPC, NERC, Northern Eurasia Finals B,C,L,J,K

B:一定是奇数个颜色,且中间的颜色的个数+1就是答案。其他都是不可能的。C:枚举那个人竞选成功即可L:先处理1-K行。 一行一行进行处理,第一列直接从小到大,第二列往后,判断前一列与第k个字符串的那一列的字符相同的位置最上面在哪,然后从上往下填字典序小的字符。依次类推填好后再填剩下的就行。先填的是个倒三角以上是签到题。。J:枚举屏幕大小,屏幕大小一定小于等于最小的图标数+1....

2019-12-07 20:57:54 629

原创 Codeforces Round #604 (Div. 2)

D:贪心:优先010101,再212121再232323.(最左边的数必须先用完,用完后次左边的数变成最左边的数也要先用完)双端队列两头加,模拟了所有情况#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef uns...

2019-12-07 20:21:14 176

原创 蓝书——218. 扑克牌

概率dp经典题目f[a][b][c][d][x][y],黑桃a张,红桃b张,梅花c张,方块d张。大王小王状态x,y(等于0代表每抽到,等于1,2,3,4代表摸到四种花色)时,摸到满足题意的状态的期望张数。下一张摸牌有6种情况:四种花色,大小王。dfs枚举递推即可#include <bits/stdc++.h>using namespace std;typedef lo...

2019-12-06 22:01:32 573

原创 蓝书——217. 绿豆蛙的归宿 拓扑排序/dfs 两种方法

概率dp经典套路:设f[i]为:第i个点到终点的期望步数。对一个边u -> v.u走到v点的概率是 1/deg[u].走到v点再到终点的步数是:dis(u,v)+f[v].到v点这个事件带来的期望的贡献是:1/deg[u]*(dis(u,v)+f[v]).f[u]={任取v属于u的直接可达点}初状态:f[n]=0;求f[1].任意的x->y f[y...

2019-12-06 19:21:00 189

原创 蓝书——216. Rainbow的信号 0X38

首先:按位操作,31位分开处理是不影响的。l,r的取值可能有n^2,枚举肯定不行。一般这种区间计数问题我们采用枚举一个边界r,计算多少个l满足条件,且贡献是多少。当r确定时,l==r,的概率是1/(n*n),l<r 时, (l,r)的概率是2/(n*n), (因为(r,l)也相当于 l,r )我们都知道,期望等于变量出现概率乘以变量的取值。当处理到第k+...

2019-12-06 16:51:27 132

原创 蓝书——315. 旅行

LCS没啥可说的主要是打印方案。看了题解才会,,pa[i][j]:a字符串1-i位,最后一个'a'+j-1字符出现的位置pb[i][j]:b字符串1-i位,最后一个'a'+j-1字符出现的位置假设最长公共子序列长度为len我们dfs,从最后一位开始往前填枚举当前位填的字符ch,如果pa[i][j]或者pb[i][j]小于1,说明前面每这个字符,无法构成,剪去。如...

2019-12-06 15:19:33 85

原创 蓝书——314. 低买 输出LDS方案

这题难在输出LDS方案我们已经得到了f[i]数组,即以i为结尾最长的LDS的长度。如果i>j且f[i]==f[j]+1 ,说明f[i]能从f[j]推过来,那么方案数:nm[i]+=nm[j].这个递推关系很对,但是题目说相同数字算一种方案。看了很多题解,发现下面的方法最容易理解,而且好写:既然相同的数字不能算一种方案,那我们就把相同的数字去重到一个从前往后递推时...

2019-12-05 21:15:14 126

原创 蓝书——289. 环路运输

经典环形问题。我们采取长链乘二的方法(这一题另一种方法不好处理)。这题麻烦的点在于di必须是环形左右最小的那个距离。/但我们分析下可知:最小的距离一定小于等于n/2.所以我们可以把问题转化为:在2n的长链里,找到a[i]+a[j]+i-j最大,且i-j<=n这个问题就是单调队列的标准题目 搞搞即可。#include <bits/stdc++.h>usi...

2019-12-05 15:54:17 136

原创 蓝书——135. 最大子序和

学dp时学到了单调队列优化dp重新敲个模板回顾下,加深理解#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#define S secon...

2019-12-05 15:31:38 119

原创 蓝书——288. 休息时间 环形DP两种处理方法

环形问题一般有2中处理办法。1:断开长链,复制一倍,处理一遍(每相邻n个的答案取最优)2:先断开,处理一边,再把断开少的情况加上处理一遍。这一题第一种方法不行。f[i][2],处理到第i个小时,第i个小时休息或不休息恢复的最大体力。如果你断开,复制一倍的话:你的dp数组就要维护每n个的结果,不方便。(如果用上面的dp数组,会出现某一个小时休息2次,比如 1 100000...

2019-12-05 14:43:02 208

原创 Codeforces Round #585 (Div. 2) A-E

A:贪心分配黄牌即可#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#define S secondtypedef long doub...

2019-12-04 19:03:08 147

原创 蓝书——287. 积蓄程度换根DP

首先:树形DP常规套路—— f[i]:以i为根的子树,以i为源点,的最大流量转移就是枚举i连接的点v的最大流量f[v],肯定是这些流量与连接边的最小值,之和是f[i]的最大流量。这样我们就可以求出根节点的f[1],同时也是ans[1],即整棵树以1为源点的最大流量。如果暴力树形dp所有的就是n^2的复杂度,显然不行于是我们可以用换根dp,其实就是自上而下递推,上面的dfs是自...

2019-12-04 14:35:35 139

原创 蓝书——323. 战略游戏

f[i][2];以i为根的子树,i节点不放置士兵满足条件的最小放置士兵数量。树形dp一下就行比较奇怪的是:读入scanf("%d:(%d)",&u,&m);是对的scanf("%d%s",&u,s);int m=s[2]-'0';这样就会超时。。。有懂得大佬解答下吗。。。#include <bits/stdc++.h>using ...

2019-12-04 11:08:03 119

原创 蓝书——acwing164. 可达性统计

主要是bitset的使用。bitset的复杂度O(n/32)空间:(n*m/8) bitset<n>s[m]#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull...

2019-12-04 10:31:03 108

原创 蓝书——284. 金字塔

区间DP为了不重不漏,枚举区间第一颗子树的区间。#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 LL;//typedef unsigned long long ull;//#define F first//#define S second...

2019-12-03 20:11:35 153

原创 蓝书—— ACwing313. 花店橱窗

简单的线性dp,f[i][j] 处理到第i朵花,放在第j个花瓶里最大美观值是多少递推很简单,主要是初始化要注意。DP一般都是从初态到末态,除了初态其他最好先设成不可能即一个大负数#include <bits/stdc++.h>using namespace std;typedef long long ll;int a[110][110];int f[110]...

2019-12-03 16:44:48 159

原创 蓝书——312. 乌龟棋 两种解法

很自然的想法,f[n][41][41][41][41]. 表示到第i个点,4种卡片剩余个数,最大得分。递推很简单,看下就懂。不过时间复杂度是350*40*40*40*40会T。这个时候就有2种优化:第一种: 1977ms,1496kb由于总卡片数固定,且最后都用完,我们可以省去一维卡片。f[n][41][41][41],到达某个点,前三种卡片数量知道了,最后一种...

2019-12-03 10:47:51 245

原创 蓝书——283. 多边形

https://www.acwing.com/problem/6/区间DP,枚举删除的边。复杂度n^4.注意:要同时维护处理到当前状态的最大值和最小值因为l,r 由 左右区间乘法变换过来时:最大值可能等于左右最大值相乘,也可能等于左右最小值相乘(负负得正)。#include <bits/stdc++.h>using namespace std;typed...

2019-12-02 21:07:19 125

原创 蓝书——AcWing 146. 序列

求n个不好求,我们可以先求2个序列,求出从小到大的前n个。然后再与第三个序列进行求解,以此类推这样问题就简化了复杂度NM*logm 用优先队列维护下即可。注意要防止 i j+1 i+1 j,这两种情况都能递推到i+1,j+1.我们先让i加,后让j加即可,熟悉的套路! #include <bits/stdc++.h>using ...

2019-12-02 19:18:29 143

原创 蓝书例题---数据备份BZOJ1150

问题明显可以转化成:给你n个数,选K个不相邻的数,使其和最小K==1时,一定选最小值K==2时,要么选最小+次小要么选最小旁边的两个数,不可能最小旁边的两个数只选一个,否则为什么不选最小呢?有了这个贪心策略我们就可以搞K==n的情况了。建一个链表,把这n个数链起来。再开一个小根堆。每次操作取出堆顶的数。a[i]1.把这个数前驱和后继从链表中和堆中删除2.新...

2019-12-02 11:52:47 165

空空如也

空空如也

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

TA关注的人

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