自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KGV093的博客

Revelations and heartaches, make you realize.

  • 博客(414)
  • 收藏
  • 关注

原创 bzoj 3036(期望dp)

传送门题解:1A,稳。我感觉好像~似乎~也许~学会期望dp的皮毛了。。。#include#include#include#includeusing namespace std;const int MAXN=1e5+4,MAXM=MAXN<<1;int head[MAXN],etot=0;struct EDGE { int v,nxt,w;}e[MAXM];d

2017-10-29 15:35:32 367

原创 bzoj 4318(期望dp)

传送门题解:维护当前位为1的贡献相对上一位的一次方增量f[i]、平方增量g[i]、立方增量h[i]。因为记录的是增量,所以最后还要再加一遍。P.S.如果写成"h[i]=h[i-1]+p[i]*(f[i-1]*3+g[i-1]*3+1);"则答案就是f[n],因为之前的贡献都已经算在一起,此时h[i]定义为当前为1的对1~i的直接贡献。#include#include#inc

2017-10-29 12:26:04 412 1

原创 poj 3682(期望dp)

传送门题解:设g[i]表示已经有i次正面,要到k次的期望次数。g[i]=p*g[i+1]+(1-p)*g[i]+1g[i]=g[i+1]+1/p边界:g[k]=0设f[i]表示已经有i次正面,要到k次的期望花费。f[i]=p*(f[i+1]+2*(g[i+1]+1)-1)+(1-p)*(f[i]+2*(g[i]+1)-1)移项化简即可。边界f[k]=0。P.

2017-10-29 11:26:16 464

原创 zoj 3640(期望dp)

传送门题解:设dp[i]表示战斗力为i 时至少花多少时间才能逃出。记忆化搜索即可。P.S.因为战斗力最多增大到maxC的两倍,所以数组要开10000*2。#include#include#include#include#include using namespace std;const double X=(sqrt(5.0)+1)/2;double dp[2000

2017-10-29 11:23:57 293

原创 bzoj 3384(dp)

传送门题解:设dp[i][j][k]表示前i分钟,第i分钟在k号树,以走了j次的最大收益。直接转移即可。#include#include#include#includeusing namespace std;int dp[1004][34][3],a[1004];int n,m;int main() {// freopen("bzoj 3384.in","r",st

2017-10-27 17:21:44 252

原创 bzoj 3450(期望dp)

传送门题解:设f[i]表示1~i的期望收益,len[i]表示i尾部连续的'0'期望长度。若s[i]=='x',则f[i]=f[i-1],len[i]=0,若s[i]=='o',则f[i]=f[i-1]+len[i-1]*2+1,len[i]=len[i-1]+1,若s[i]=='?',则f[i]=f[i-1]+(len[i-1]*2+1)/2,len[i]=len[i-1]/2

2017-10-27 15:50:01 294

原创 bzoj 1426(期望dp)(公式推导)

传送门题解:反正就是想尽一切办法去掉极限。#include#include#include#includeusing namespace std;const int MAXN=10004;double g[MAXN],f[MAXN];int n;int main() { scanf("%d",&n); g[n]=0; for (int i=n-1;~i

2017-10-27 15:07:40 365

原创 Luogu 3932(公式推导)(浮游大陆的68号岛)

传送门~~~洛谷10月月赛R2~~~题解:P.S.注意减法取模处理不慎易出现负数,不然就1A了。。。#include#include#include#includeusing namespace std;#define fil(a,b) memset(a,b,sizeof(a))typedef long long ll;const int MAXN

2017-10-27 12:12:33 296

原创 bzoj 1978(dp)

传送门题解:对于每个数x枚举因子i,记录上一个能整除i的位置,从这个位置转移过来,取max即可。#include#include#include#includeusing namespace std;int n,L,dp[50004],nxt[1000004],ans=0;inline int read() { int x=0;char c=getchar(); whi

2017-10-26 17:21:31 313

原创 bzoj 1617(dp)

传送门机房外面运动会,机房里面刷水题。。。记录一个代价前缀和,直接dp即可。注意:最后的答案要减去一次单人过河的代价,因为最后一次过河不用返程。#include#include#include#includeusing namespace std;const int MAXN=2504;int s[MAXN],dp[MAXN];int n;inline int re

2017-10-26 16:25:47 240

原创 bzoj 1787(LCA)

传送门题意:一棵树 N 个结点的树,有 M 次查询:树上三个点到哪个点的距离之和最小。题解:求(a,b)(b,c)(c,a)三对点的LCA,深度最深的那个即使答案:下面口胡一下证明过程:三个LCA如果发生重合,那么显然上述做法正确,不再赘述。如果三个LCA互不相同,那么它们一定可以组成一个二叉结构,从将最浅的LCA作为答案,将其往另外两个移动,每移动一次距离之和+1-2。显

2017-10-26 15:51:03 223

原创 bzoj 1037(dp)

传送门dp神题。dp[i][j][k][h]表示前i个人有j个男生,任意连续段中,男生最多多出k个,女生最多多出h个的方案数。答案为所有dp[n+m][n][k][h](k#include#include#include#includeusing namespace std;const int MOD=12345678;int n,m,K,ans=0,dp[304][1

2017-10-26 14:54:58 223

原创 bzoj 3043(差分)

传送门题解:考虑差分(a[i]-a[i-1],i≥2)后的序列b,每一次操作可以使b[i]加1/减1/正负相消。所以最少次数即max(∑正b[i],∑-负b[i]),最终序列种数为abs(∑正b[i]-∑-负b[i])+1,本蒟蒻无法严格证明,但是可以模拟一组数据来验证。54 1 7 6 2答案为max(8,6)=8和abs(8-6)+1=3三种目标序列为{2,2,2,2,

2017-10-26 12:11:46 249

原创 hdu 3182(状压dp)

传送门题解:略,满足条件就转移,否则不转移,完了。调了一晚上。。。只有复杂度允许,能for的就for(比如dp时内层对n的循环),不要为了追求一点速度就去写什么lowbit来提取二进制的1,此可谓弄巧成拙。#include#include#include#includeusing namespace std;int n,m,v[16],c[16],pre[16];i

2017-10-25 22:36:17 243

原创 高精度运算模板

去年这个时候问亲爱的hfu老师NOIP考不考高精度,hfu老师满不在意地说这几年早都不怎么考了不用管。一年后的今天,只听见机房门口:“好同yue们,这个高精度,还是要去看一下,哈~~~。万一他考到了。。。”好吧那就硬着头皮自己写模板吧。估计即使用高精也是乘爆或者加爆long long应该不会是除法,再加上时间紧迫,先附上加减乘三种运算的模板。codevs 3116 高精度加法

2017-10-25 19:44:47 372 2

原创 hdu 4135(容斥原理)

传送门题解:容斥原理。补集转化:将问题转化为求1~x内与n不互质的数的个数。将n分解质因数后,答案为:是一个质因数的倍数的数的个数 - 是两个质因数的倍数的数的个数 + 是三个质因数的倍数的数的个数......#include#include#include#includeusing namespace std;typedef long long ll;ll a,b,n,p

2017-10-24 21:56:24 431

原创 hdu 1796(容斥原理)

传送门虽然hdu本站和hdu_split都挂了,但是vjudge还能用。本题差不多是容斥原理的模板题,答案就是:是一个数的倍数的个数 - 是两个数的倍数的个数 + 是三个数的倍数的个数......DFS直接上,可做容斥的模板。#include#include#include#includeusing namespace std;typedef long long ll;

2017-10-24 21:13:35 261

原创 Luogu 2346/codevs 1004(IDDFS)

传送门题解:可以BFS+Hash判重,但是本蒟蒻还是把此题当做迭代加深的模板题来做。所谓迭代加深就是指每次限定一个迭代深度,到达这一层就返回,如果找不到解再扩大限制重复搜索直到搜到解,否则直接返回答案。#include#include#include#includeusing namespace std;char s[5][5];int sx[2],sy[2],cnt=

2017-10-24 20:35:14 230 1

原创 10.23~10.24NOIP模拟测试总结

一次逼真的模拟考试,总分100+212=312,预计省一的分数线是280左右。先说一下概况:第一天爆炸,第二天比较理想。所以加起来的分数还看得过去,但是还是很不理想。第一天炸了哪些:第一题找到正解的思路,但是因为种种原因比如错误地低估了算法的正确性以及高估了评测机的速度,TLE了两个点。第二题也是知道了怎么做(vector+二分),但是由于对STL的lower_bound以及迭代器

2017-10-24 19:26:10 273

原创 bzoj 3262(cdq分治+树状数组)

(正经题解在后面)斜体字都是一年前在没有把cdq扯清楚的情况下应付的,即使现在真正理解了cdq,还是将这堆话留在这,毕竟,花无重开日,人无再少年——RunID User Problem Result Memory Time Language Code_Length Submit_Time 2374693 2711694897 32...

2017-10-23 19:53:30 328

原创 hihocoder 1142(三分)

传送门三分求单峰函数模板题,讲解略。P.S.听说三分是骗分大发?!#include#include#include#include#includeusing namespace std;#define eps 1e-10double a,b,c,px,py;double l=-400,r=400;inline double dis(double x) { retur

2017-10-23 16:40:33 266

原创 Luogu 1311(dp/模拟)(NOIP 2011)

传送门NOIP 2011 D1T2题解:1.dp,有O(n),下面是三月份测试写的O(n*k)的:#include#include#include#includeusing namespace std;const int maxn=200004;int n,k,p;//客栈数,色调数,max int c,m;//色调,花费int num[maxn][51],s[ma

2017-10-22 21:57:20 233

原创 Luogu 1314(二分答案)(NOIP 2011)

传送门NOIP 2011 D2T2题解:二分W的值,每次O(n+m)计算检验结果(前缀和),如果S>Y则缩小W,否则增大W。P.S.1A,贼稳!#include#include#include#includeusing namespace std;const int MAXN=2e5+4;typedef long long ll;int n,m,L[MAXN],R

2017-10-22 19:37:46 251

原创 NOIP集训Week 6总结

依稀记得上周这时在干嘛。。。又一周飞逝而去。本周已经没有未复习的完整知识板块,主要在查漏补缺并且弥补一些小的盲点。完成的内容有:树形dp练习,一些普通dp练习以及背包dp练习,非旋转treap入门,数论基础(exgcd,phi......),容斥原理入门,A*搜索入门,DFS剪枝,二分答案练习。本周相较上周来说在时间安排方面有了一定的进步,运动时间安排得更合理了,但是晚上回家复习的落实还可

2017-10-22 16:42:12 259

原创 bzoj 1673(A*)

传送门题意:有n个砝码(n 从中选择一些砝码,使得总重量最大而不超过c。w[i]按单调不降顺序给出,保证w[i] >= w[i-1]+w[i-2] (i >= 3)。题解:有题目那条类似斐波那契数列的性质,从大往小DFS。启发式剪枝:当剩余所有砝码都选仍不足之前的最大值时直接return。P.S.对于每个砝码选不选,必须先执行“选”的情况再做“不选”的情况,否则

2017-10-22 14:39:00 260

原创 bzoj 1598(SPFA+A*)

传送门~~~A*的经典应用~~~题解:先预处理反向图的单源(T)最短路,之后启发式搜索,每次从优先队列中弹出f(p)最小的点p,如果点p就是t,则计算t出队的次数,如果当前为t的第k次出队,则当前路径的长度就是s到t的第k短路的长度,算法结束,否则遍历与p相连的所有的边,将扩展出的到p的邻接点信息加入到优先队列继续搜。#include#include#include#

2017-10-22 12:53:08 251

原创 UOJ 147/bzoj 4325(DFS)(NOIP 2015)

传送门NOIP 2015 D1T3 斗地主题解:优先考虑三种顺子,其余的用一个cal函数统计出来,直接搜即可。#include#include#include#includeusing namespace std;int c[15],cnt[5],ans;inline int cal(int *c) { memset(cnt,0,sizeof(cnt)); int re

2017-10-22 10:05:51 332

原创 bzoj 1616(dp)

传送门题解:设dp[t][i][j]为第t秒走到(i,j)的方案数,边界dp[0][sx][sy]=1。O(T*nm)暴力递推方案数即可,注意变量枚举顺序。也可以用搜索过。#include#include#include#includeusing namespace std;const int MAXN=104;int dp[17][MAXN][MAXN];char

2017-10-21 16:30:43 205

原创 UOJ 148/bzoj 1650(二分)(NOIP 2015)

传送门NOIP 2015 D2T1题解:二分答案(最小跳跃距离),每次O(n)check,凡是中间的石子都移走,如果移走的数量大于m就减小mid,否则增大mid。1A,贼稳(^_^)。#include#include#include#includeusing namespace std;const int MAXN=5e4+5;int d[MAXN],L,n,m;in

2017-10-20 21:39:13 203

原创 Luogu 1083(借教室)(NOIP 2012)

传送门NOIP 2012 D2T2题解:二分答案(最早必须修改到的订单),差分维护前缀和,每次暴力check。复杂度O(nlog(n)),常数比线段树小,线段树加优化和卡常也能过。#include#include#include#includeusing namespace std;typedef long long ll;const int MAXN=1e6+4;i

2017-10-20 19:48:32 272

原创 Luogu 1525(并查集)(NOIP 2010)

传送门NOIP 2010 T3题解:1.二分图匹配2.镜像并查集P.S.小心答案为0#include#include#include#includeusing namespace std;const int MAXN=2e4+4,MAXM=1e5+4;int n,m;int fa[MAXN<<1];struct EDGE { int u,v,w; f

2017-10-20 19:20:28 255

原创 Luogu 1962(矩阵快速幂)

传送门图片转自:http://www.cnblogs.com/huxianglin/p/5995649.html代码作为模板。#include#include#include#includeusing namespace std;typedef long long ll;const int MOD=1e9+7;ll n;struct Matrix { in

2017-10-19 23:00:06 217

原创 bzoj 1042(容斥原理+背包dp)

传送门题解:先预处理出完全背包(无限制)的方案数。ans=(f(s)-d1超限-d2…+d1d2+d2d3+…-d1d2d3….+d1d2d3d4)P.S.d1超限即使用了d1+1个物品,于是剩下S-(d1+1)*c1都可以随意分配,于是d1超限的方案数就是f(S-(d1+1)*c1)#include#include#include#includeusing

2017-10-19 19:29:45 291

原创 10.19数论模拟赛

Problem 1. payInput file: pay.inOutput file: pay.outTime limit: 1 secondMemory limit: 256 MBMr.Hu 开了个饭店,来了两位客人:Alice 和Bob,他们吃完饭要结账时,发现他们需要支付c 元钱,但是Alice 只有面值为a 的钱,Bob 只有面值为b 的钱(他们每个人的钱的和都大

2017-10-19 14:28:53 309

原创 bzoj 2287(背包dp)

传送门题解:设f[i]为装满i的容量的方案数,可以按01背包的方法O(nm)预处理。设g[i][j]表示不用i,装满j的容量的方案数。对于每个i:若i否则g[i][j]=f[j]-g[i][j-v[i]]由于每个物品单独考虑互不影响,所以g数组可以去掉第一维。P.S.听说可以用什么分治背包?以后再说。。。#include#include#incl

2017-10-18 21:41:25 225

原创 hdu 1078(记忆化搜索)

传送门题解:简单记忆化搜索。#include#include#include#includeusing namespace std;const int MAXN=104;int n,m;int a[MAXN][MAXN];int dp[MAXN][MAXN];int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};inline int read(

2017-10-18 20:59:22 207

原创 hdu 2571(dp)

传送门题解:定义dp[i][j]为走到(i,j)的最大收益。为了防止枚举因数,建议用当前状态更新未来状态。转移方程略,自己yy吧。#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;int n,m,a[24][1004];int dp[24][1004];inlin

2017-10-18 20:01:07 246

原创 bzoj 2721(线性筛)(约数个数)

传送门题解:设y=n!+t,化简后知x=(n!)^2/t+n!。所以求(n!)^2的约数个数即可。约数个数公式:若x=(p1^k1)*(p2^k2)*...*(pm*km),则x的约数个数d(x)=(k1+1)*(k2+1)*...*(km+1)所以后面枚举每个预先线性筛筛出的质数,计算它的k,由于是(n!)^2,所以每一个质数的贡献是ki*2+1,最后乘起来即可。

2017-10-18 19:20:11 359

原创 Luogu 1141(dp)

传送门NOIP 2010 T2题解:切入点:使用同等数量的各种卡牌,走到的位置是一样的。定义dp[i][j][k][h]为使用了i张1号卡,j张2号卡,k张3号卡,h张4号卡。然后转移即可,注意起点为1。#include#include#include#includeusing namespace std;int dp[42][42][42][42];int n

2017-10-18 17:05:33 221

原创 URAL 1141(扩展欧几里德+欧拉函数)

传送门这就是传说中的RSA加密?!题意:给出正整数e,n,c。已知n=p*q,其中p,q为两个奇质数并且gcd(e,(p-1)*(q-1))=1。求出一个m使m^e=c(mod n)。题解:#include#include#include#include#includeusing namespace std;typedef long long ll;i

2017-10-18 16:28:37 322

空空如也

空空如也

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

TA关注的人

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