自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BZOJ 1051: [HAOI2006]受欢迎的牛

仅解释一下tarjan缩点的模板。#include <bits/stdc++.h>using namespace std;const int N=1e4+5,M=5e4+5;int n,m,u,v,ans,sum;int du[N];int now,top,col,dfn[N],low[N],sta[N],si[N],color[N];int cnt,head[N];...

2020-02-28 21:41:33 112

原创 CF327E Axis Walking

简单状压dp。难点:需要在状态的枚举过程中的通过位运算技巧进行优化。#include <bits/stdc++.h>#define lowbit(x) x&(-x)using namespace std;const int N=24,MOD=1e9+7;int n,k,max_statue;int a[N],b[3],sum[1<<N],f[1<...

2020-02-25 18:45:29 98

原创 CF417D Cunning Gena

一眼状压,且是个纯粹的状压。如果没有显示器台数限制的话,就成了最模板的状压dp,现在因为有了显示器台数的限制,我们可以枚举每一次能用的最多的显示器台数。考虑暴力进行求解:设f[p][j]为显示器台数最多为离散化后第j大,已选集合为p的最小花费。会得到一个O(n*2^m * n)的复杂度。signed main(){ scanf("%lld%lld%lld",&n,&m,&a...

2020-02-25 15:34:22 125

原创 洛谷 P4950 完美数字

之前的博客中提到过CF1073E,现在重新回顾一下这种类型的题目。均是求L-R的区间中符合类型的数的和,而不是求符合类型的数的数量。P4950 完美数字#include <bits/stdc++.h>#define int long longusing namespace std;const int N=10;int T,n,m,x,now,p1,p2;int a[N],...

2020-02-25 13:44:38 329

原创 BZOJ 1044: [HAOI2008]木棍分割

注意可以且m次,即分成m+1段。所以先让m加上1。先做一个简单的二分答案算出最小的最大值。然后可以得到一个O(mn^2)的dp。发现dp可以通过前缀和把时间复杂度优化为O(nm),通过滚掉记录m的那一维,把空间复杂度优化为O(n)。#include <bits/stdc++.h>#define left lefttusing namespace std;const int ...

2020-02-24 21:14:41 88

原创 AT5312 [ABC156E] Roaming

推出公式即可。计算组合数时,由于n<=200000,所以可以预处理好bin和inv,表示阶乘和逆元。#include <bits/stdc++.h>#define int long longusing namespace std;const int N=2e5+5,MOD=1e9+7;int n,m,ans;int bin[N],inv[N];inline in...

2020-02-23 23:17:01 367

原创 AT5341 [ABC156D] Bouquet

题意:Akari 有 n 种不同的花,她可以选择其中一种或多种花做成花束。但是 Akari 不喜欢花的种数恰好为 a 或 b 的花束。求出她组合花的合法方案总数,对 10^9+7 取模。推出公式:ans=(2^n)-C(n,a)-C(n,b)-1由于n,a,b均小于模数,所以直接算组合数即可,不需要Lucas定理。下面给出的代码复杂度为:O(min(m,n-m))适用于在m比较小,或m与...

2020-02-23 15:05:37 421

原创 洛谷 P4892 GodFly的寻宝之旅

题意有点绕,读懂题意之后就是一道简单计数状压dp。大致题意:给出一幅图,要求计算从起点开始走到终点的(在题目特殊规则下统计的)路径条数。根据题意,一条路径会被一个复杂的公式分成0路径和1路径两种,而题目则是要求到达终点的opt(opt为已给的0或1)路径有多少。(opt为输入数据)#include <bits/stdc++.h>#define int long longus...

2020-02-22 17:59:28 184 3

原创 [USACO08OCT]牧场散步Pasture Walking

深夜水题二刷祭。如果把颓知乎的时间都用来打模板,相信模板一定能打的很快吧。注意由于边权不是1,所以要重新开一个dis数组记录距离,但是记录深度的d数组不能省。#include <bits/stdc++.h>using namespace std;const int N=1e3+5;int n,m,u,v,w,x,y;int d[N],dis[N],p[N][21];in...

2020-02-22 01:34:06 166

原创 BZOJ 1189: [HNOI2007]紧急疏散evacuate

远古时期的HNOI,这题感觉内存开小了吧,虽然数据也不是满的。如果是满的数据,128MB根本不够啊。20 20.DDDDDDDDDDDDDDDDDD.D..........D.......DD.......D..........DD..................DD.....D...D........DD........D....D....DD.............D.....

2020-02-21 20:35:00 174

原创 [USACO08JAN]电话线Telephone Lines

原本以为此题是一道很套路的二分+最短路题,今天二刷hzw的博客再看这题惊奇的发现可以用分层图来做。因为可以k次免费,所以把图分成0到k+1层。第i层的d[j]表示:从节点1出发,免费i次道路费用的达到j节点的最小花费。然后注意一下数据范围,要考虑到k+1层,所以节点数会变成(k+1)倍。#include <bits/stdc++.h>using namespace std;c...

2020-02-21 00:40:56 155

原创 洛谷 P1484 种树

用双向链表维护可反悔贪心。当堆顶<0后直接break。#include <bits/stdc++.h>#define int long longusing namespace std;const int N=5e5+5;int n,m,ans;int a[N],l[N],r[N];bool vis[N];struct node{ int id,v; in...

2020-02-20 13:34:13 85

原创 BZOJ 3450: Tyvj1952 Easy

一道需要推公式的简单期望dp题。设f[i]:到第i位为止的期望长度g[i]:第i位结尾的连续o段的期望长度#include <bits/stdc++.h>using namespace std;const int N=3e5+5;int n;double f[N],g[N];char str[N];int main(){ scanf("%d",&n); s...

2020-02-18 21:07:15 95

原创 BZOJ 1415: [Noi2005]聪聪和可可

简单的预处理过后就是一个简单的记搜。#include <bits/stdc++.h>using namespace std;const int N=1e3+5;const double inf=-2e9;int n,m,sx,sy,u,v;int d[N][N],p[N][N];double du[N],f[N][N];int cnt,head[N];struct e...

2020-02-18 16:58:45 66

原创 HDU 3853

f[i][j]表示从(i,j)走到(n,m)的期望步数。对于数据,保证除了(n,m)的原地踏步概率为1,别的地方原地踏步的概率均不为1。与HDU4336类似。#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <vecto...

2020-02-18 03:00:01 87

原创 HDU 4336

f[S]表示收集到的卡片的状态为S时,收集完所有卡片再需要多少次的期望。所以可以得到ans=f[0],f[max_statue]=0。#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <vector>#includ...

2020-02-18 02:56:39 132

原创 POJ 2151 Check the difficulty of problems

题意:在acm比赛中,n题,t队。给出每个队做对每题的概率,问每队至少对一题,至少有一队做对至少m题的概率。分析:主要考察的是对于概率的数学思维与转换。#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <vector&...

2020-02-17 00:26:26 120

原创 POJ 3071

题意:2^n个队进行足球赛,每个队打败另外一个队都有一个概率。进行n轮比赛,每轮每支球队都要比赛一场,每次比赛只能相邻的两个球队之间进行,输掉的球队将会淘汰,所以在下一轮的时候淘汰的球队的左右两支未淘汰的球队将会变为相邻。问n轮以后,最终获胜概率最大的是哪只球队。f[i][j]表示进行了i轮比赛,j球队的获胜概率可推出方程:f[i][j]=f[i-1][j]*f[i-1][k]*p[j][k...

2020-02-16 19:22:07 171

原创 POJ 2096

题意:输入n,s表示这里存在n种漏洞和s个系统(0<n,s<=1000)。工程师可以花费一天去找出一个漏洞——这个漏洞可以是以前出现过的种类,也可能是未曾出现过的种类,同时,这个漏洞出现在每个系统的概率相同。要求得出找到n种漏洞,并且在每个系统中均发现漏洞的期望天数。#include <iostream>#include <cstdio>#include...

2020-02-16 16:53:02 172

原创 CF148D Bag of mice

题意:有a只白老鼠,b只黑老鼠,A先抓,B后抓,只要有一个人先抓住老鼠,游戏就结束了。每次当B抓住一只老鼠且游戏还没结束时,就睡会逃出一只老鼠。问A抓住老鼠的期望值为多少。(如果都没抓住,A不算赢)思路:设f[a][b]为还剩a只白老鼠,b只黑老鼠时的期望,设定此时的含义是在A先抓,B后抓的条件下成立。给出两个边界条件:1.f[0][i]=02.f[i][0]=1对于f[i][j]来...

2020-02-16 12:49:30 162

原创 洛谷 P1850 换教室

两题都是顺着dp的期望题。题意:每次有p的概率让最前面的人上电梯,问T时间内上电梯人数的期望值。简单方程f[i][j]表示当前时刻,最前面的人是第i个人,时刻是j时的期望。#include <bits/stdc++.h>using namespace std;const int N=2e3+5;int n,t;double p,f[N][N];int main(){ ...

2020-02-16 05:28:50 110

原创 洛谷 P4316 绿豆蛙的归宿

#include <bits/stdc++.h>using namespace std;const int N=1e5+5,M=2e5+5;int n,m,u,v;double inf,w,du[N],f[N];int cnt,head[N];struct edge{int next,to; double w;}e[M]; inline void add(int u,i...

2020-02-16 00:02:13 140

原创 BZOJ 1076: [SCOI2008]奖励关

对于每次的任务,如果做了可能会对当前产生负效应,如果不做可能会错过之后的正效应,很明显的一道dp题。用记忆化的方式来dp更容易代码实现。记录当前是第几个宝物,当前已经收集的宝物状态。对于一个当前可以收集的宝物来说,可以选择收集或不收集;对于一个不可收集的宝物来说,当然是不收集喽。#include <bits/stdc++.h>using namespace std;cons...

2020-02-15 17:22:04 131

原创 BZOJ 3526: [Poi2014]Card

这题也可以用线段树来维护吗?好吧,是我菜了…ans[0/1][0/1]记录某一段:左端点是正面还是反面,右端点是正面还是反面,且这段是不是非降序列。合并的时候对于两端的四种情况和连接处的四种情况进行考虑即可。#include <bits/stdc++.h>using namespace std;//#define getchar() (p1==p2&&(p2...

2020-02-14 21:57:14 112

原创 CF713C Sonya and Problem Wihtout a Legend

题意:给出n个正整数组成的序列,可以对于任意位置的数进行+1,-1操作,可以使得数变成0或负数。问最少进行几次操作能够使得这个序列变成严格上升序列。惊喜地发现一道几乎一模一样的题:CF13C Sequence一道要求的是严格上升序列,一道要求的是非降序列。对于严格上升序列我们很难进行操作,所以可以通过改变数值,把它转变为非降序列的要求来做。下面给出一个套路:原题要求:a[i]<a[...

2020-02-14 14:27:09 278

原创 CF1287B && CF567C

这两题都不难,但都是一样的套路我做第一题的时候没想出来。从前往后暴力累加答案的同时,可以把前面出现过的值用一个map数组累加起来,就很方便了。CF1287B#include <bits/stdc++.h>#define int long longusing namespace std;const int N=2e3+5;int n,m,ans;string s[N];...

2020-02-13 21:28:16 336

原创 Codeforces Round #608 (Div. 2)

今天状态还不错,补题补得比较顺利,div2 Solved:5 out of 6A.将b,c作为一个整体,个数为b,c的较小值;然后根据e,f的大小,决定先买a,还是先买b,c这个整体。如果先买了,就要贪心的尽可能买光。#include <bits/stdc++.h>using namespace std;int a,b,c,d,e,f,ans1,ans2,sum;int m...

2020-02-12 01:06:12 123

原创 线段树中的离散化——动态开点线段树

看到这两道题目(CF845C Two TVs,CF915E Physical Education Lessons),第一感觉都是可以离散化后用差分来做,细细想过后发现,差分的做法不适用于第二题,只能做第一题。为什么是这样呢?第一题中只需要求一个最大值是不是大于2,而这个最大值所在的位置一定是离散出来的某个点;而第二题中需要求的是个数,如果再通过简单的离散加差分,则不能这样进行统计了。所以就需要...

2020-02-11 20:37:00 292

原创 CF1296F Berland Beauty

利用贪心的思想进行构造,然后检验。注意到在一棵树中,一个节点最多只有一个根节点,所以可以把边权转化为点权来存储:一个点与它父节点之间的边的权值,存储在它的身上即可。5000的数据就是用来暴力跳lca的。#include <bits/stdc++.h>using namespace std;const int N=5e3+5;int n,u[N],v[N],m,now;in...

2020-02-10 23:59:35 176

空空如也

空空如也

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

TA关注的人

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