自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ren_Ivan的博客

Life isn't about waiting for the storm to pass. it's about learning to dance in the rain.

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

原创 bzoj 4832 抵制克苏恩 概率期望dp

考试时又翻车了.....一定要及时调整自己的思路!!!随从最多有7个,只有三种,所以把每一种随从多开一维so:f[i][j][k][l]为到第i次攻击前,场上有j个1血,k个2血,l个3血随从的概率最后利用期望的可加性都加起来就好了ps.30滴血受到四五十伤害,完全tm不符合逻辑啊,mdzz!!!#include#include#include#include#in

2017-07-31 15:07:33 390

原创 noip 2015 斗地主 大爆搜!!!

反正肯定是大模拟但是每一个可以出的牌都搜一定不是最优的考虑最特殊的出牌方案:顺子(单,对,三)每一种方案再加上暴力贪心打出剩下的牌的步数#include#include#include#include#include#define N 35using namespace std;int a[N],num[N],n,T,ANS;void read(){ int

2017-07-31 15:01:48 355

原创 bzoj 3759 Hungergame 博弈论+线性基

和nim游戏类似易证必败状态为:当前打开的箱子中石子异或和为0,没打开的箱子中不存在一个子集满足异或和为0因为先手无论是取石子还是开箱子,后手都可以通过取石子来使状态变回原状态所以只需判定是否有子集异或和等于零即可#include#include#include#include#includeusing namespace std;int T,n,a[25];bo

2017-07-30 20:35:46 389

原创 bzoj 1409 Password 矩阵快速幂+欧拉函数

可以发现,该数组的mi就是斐波那契数列所以要矩阵快速幂搞出第n位但是斐波那契数列上涨的很快,这就需要欧拉定理了p^phi(q)%q=1(gcd(p,q)==1)p是素数,所以可以用然后需要5000个数的phi,q筛出sqrt(2^31)范围内的素数,然后直接找单个数的欧拉函数就好了最后再套个快速幂就A了#include#include#include#in

2017-07-30 14:30:20 376

原创 bzoj 1189 紧急疏散 网络流

二分答案,网络流判断将每个门拆点,每个人连向每个门的dis~当前解然后跑最大流,如果等于人数,即为可行解#include#include#include#include#include#include#define pa pair#define N 405#define inf 0x7fffffffusing namespace std;int n,m,p,per=

2017-07-29 21:20:52 591

原创 codeForces 472D 最小生成树

题目大意:给出一个图中点的两两距离,问是否是一棵树,若是,求出平均边权最大的点prim最小生成树,若原图是树,则最小生成树的距离就是原距离。否则不是。搞出来树了,第二问随便dfs就好了。#include#include#include#include#include#define N 2550using namespace std;int T,n,fa[N],pp[N];

2017-07-28 21:43:09 363

原创 bzoj 3195 奇怪的道路 状压dp

看范围,状压没毛病 但是如果随便连的话给开1<<16,乘上n,m就爆了 所以规定转移时只向回连边 于是想状态数组:f[i][j]表示到i这里i前K位的状态为j(表示奇偶) 发现有条数限制,但是n,m,2^K都比较小,加一维, f[i][j][k]表示前i位,用j条路,i前的K位状态为j 转移的话,因为1<=|u - v|<=K, 所以转移时必须要保证转移前一位能连到的最远距离是偶数

2017-07-28 18:02:43 427

原创 Poi2010 Monotonicity 2

树状数组优化dp可以证明最优解一定是通过之前的最优转移过来的,所以每一个点只需要保存以该节点为结尾的最长长度即可对于不同符号,等于号维护数组,大于小于维护树状数组#include#include#include#include#include#define N 500005using namespace std;int n,m,a[N],f[N],ans,c[2][2*N],

2017-07-27 21:07:46 500

原创 noip2011 玛雅游戏 大模拟

深搜+模拟需要剪枝:同一移动向右移了就不需要向左移了#include#include#include#include#includeusing namespace std;int n,bo[6][8],tot,a[6][6][8],b[6][3];bool boo;int print(int x){ printf("\n"); for(int i=0;i<

2017-07-27 21:03:46 530

原创 bzoj 2510 弱题 矩阵乘

看题就像矩阵乘但是1000的数据无从下手打表发现每一行的数都是一样的,只不过是错位的,好像叫什么循环矩阵于是都可以转化为一行的,O(n3)->O(n2)*logk#include#include#include#include#includeusing namespace std;int n,m,k,yy[1005][1005];double ma[1005],A[100

2017-07-27 20:02:11 301

原创 bzoj 1426 收集邮票

f[i]:当前已拥有i种邮票,还需要买的邮票数的期望值。g[i]:当前已拥有i种邮票,还需要的钱的期望值。每张邮票初始都是1元钱,每买一张邮票,还没购买的邮票每张都涨价1元。 f[i]=1+(n-i)/n*f[i+1]+i/n*f[i]--->>f[i]=f[i+1]+n/(n-i)g[i]=1+(n-i)/n*(g[i+1]+f[i+1])+i/n*(g[i]

2017-07-27 12:22:25 291

原创 bzoj 4129 Haruna’s Breakfast 树上莫队

按照dfs序分块,莫队乱搞再套个权值分块#include#include#include#include#include#define N 100005using namespace std; int e=1,head[N];struct edge{ int u,v,next;}ed[2*N];void add(int u,int v){ ed[e].

2017-07-27 12:15:13 245

原创 cogs 2235 烤鸡翅

贪心,每次如果够直接卖,不够找到之前的卖出的最多的一份,然后反悔不过反悔的确是很好的策略!#include#include#include#include#include#include#define N 250005using namespace std;priority_queue q;long long n,a[N],b[N],ans,now;int main()

2017-07-25 21:42:42 277

原创 bzoj3236 作业 莫队+树状数组

莫队+树状数组#include#include#include#include#include#define N 100055#define M 1000066using namespace std;int gy[N],be[N],c[M],cc[M],n,m,nn,maxn,tot,num[N];struct Query{ int l,r,a,b,id,ans1,ans2

2017-07-25 21:40:04 323

原创 bzoj3289 Mato的文件管理 莫队+树状数组

求逆序对个数,莫队套树状数组#include#include#include#include#include#define N 50005using namespace std;int n,m,nn,a[N],c[5000005],be[N],maxn;struct Query{ int l,r,id,ans;}qr[N];bool cmp1(Query a,Query

2017-07-25 21:38:13 282

原创 bzoj 2120 数颜色 带修改莫队

带修改莫队,每次查询前调整修改#include#include#include#include#include#define N 20005using namespace std;int n,m,nn,a[N],be[N],l,r,num[1000005],tot,qq,cc;bool vis[N];struct Change{ int pos,nxt,pre;}ch[1

2017-07-25 21:35:55 255

原创 today

bzoj 2120 数颜色BZOJ 3289 Mato的文件管理BZOJ 3236 AHOI 2013 作业

2017-07-25 21:34:13 205

原创 bzoj 4318 OSU 概率期望dp

可以发现:f[i]转移到f[i+1]只和最后一串1的长度和平方有关,因为如果新加的位置是1,贡献就是(x+1)^3-x^3=3x^2+3x+1,否则为0;所以对于每一个位置,处理出期望的f,x和x^2(x表示最后一串1的长度)即可#include#define N 100100int n; double a1[N],a2[N],f[N],p[N];int main(){

2017-07-22 14:03:04 242

原创 bzoj 2038 小z的袜子 莫队

莫队大法好,入坑保平安只要能O(1)或O(log)转移,离线莫队貌似真的无敌。#include#include#include#include#include#define N 50005using namespace std;int n,m,nn,tot,c[N],be[N],num[N];struct Query{ int id,l,r; long long son

2017-07-22 14:02:53 273

原创 bzoj 2821 作诗 分块

基本思路和蒲公英一样还是预处理出每两个块间的答案询问时暴力跑两边的贡献#include#include#include#include#include#include#include#define N 100005using namespace std;int n,m,c,nn,tot,a[N],be[N],f[4000][4000],tim[N];bool bo[

2017-07-22 14:02:34 281

原创 2017.7.15雷雨

又下雨了一下雨就不想学习了下得好大好大感觉自己好渺小啊一个人这一生又能干点什么呢??何必呢?不必强颜欢笑,不必装虚作假Be yourself , do the best.And you'll never regret.

2017-07-22 14:01:47 256

原创 bzoj 3319 黑白树

暴力大法好!!!!!纯暴力修改+查询。此题数据卡所有正解,就是不卡暴力(经测试,在每点1s下,几乎所有正解都T了)暴力压正解。。。

2017-07-15 14:32:43 386

原创 bzoj 2724 蒲公英 分块

分块,预处理出每两个块范围内的众数,然后在暴力枚举块外的进行比较那么怎么知道每一个数出现的次数呢?离散后,对于每一个数,维护一个动态数组就好了#include#include#include#include#include#include#include#define N 40005using namespace std;int a[N],be[N],n,m,nn,cnt

2017-07-15 12:50:12 268

原创 7.10-7.14校内集训总结反思

Day1:第一题:按照自己的思路打了20分;                   发现有好多种情况没有考虑,还是要多刷题第二题:筛了30分,和暴力一个分…第三题:最简单的暴力,40,链表是个好东西。。第四题:神题啊!码力太弱了。。Day2:其实这天如果不出意外(2个题没调库)的话,rank 1是稳了。。(QAQ)第一题:裸数位dp,没打高精,90第二题:基本思路

2017-07-15 10:21:46 606 1

原创 bzoj 3343 教主的魔法 分块

修改直接对整块打标记,两边暴力。查询需要保证每个整块有序,所以在修改时排序就好啦#include#include#include#include#include#define N 1000005using namespace std;int n,m,nn,be[N],lazy[1005],ans;int a[N],b[N];void work(int x){ int

2017-07-15 10:12:51 332

原创 bzoj2120 数颜色 分块

分块大法好 orz处理出每个点的前驱和后继位置。暴力修改,查询就在每个整块里查询pre#include#include#include#include#include#define N 10005using namespace std;int n,m,nn,a[N],be[N],pre[N],nxt[N];int last[1000005],pp[N],ans;void

2017-07-15 10:10:07 645

原创 bzoj3594 方伯伯的玉米田 树状数组优化dp

f[i][j]表示到第i位,使用了j次机会的最长不下降子序列长度转移:f[i][j]=max(f[x][y])+1;x所以根据后两个条件维护二维树状数组求最值#include#include#includeusing namespace std;int n,m,k;int a[10005],c[505][5505],f[10005][505];int lowbit(in

2017-07-14 21:40:38 417

原创 bzoj 2500 幸福的道路 树上直径+set

首先明确:树上任意一点的最长路径一定是直径的某一端点。所以先找出直径,求出最长路径,然后再求波动值#include#include#include#include#include#include#include#define N 1000005using namespace std; int fa[N],cal[N],dis[2][N],d[N]; int e=1

2017-07-14 21:35:10 252

原创 [HAOI2008]移动玩具 状压

发现自己只会打状压了。 233333不需要考虑是否会被挡,所以直接dp#include#include#include#include#includeusing namespace std;int tot1,tot2,a[5][5],b[5][5];int x1[20],x2[20],y11[20],y2[20];char ch;int dis[20][20],f[20]

2017-07-14 21:31:48 354

原创 [Usaco2015 Jan]Grass Cownoisseur 图论 tarjan spfa

先缩点,对于缩点后的DAG,正反跑spfa,枚举每条边进行翻转即可#include#include#include#includeusing namespace std;struct pp{ struct edge{ int u,v,w,next; }ed[200005]; int e,head[100005]; pp(){

2017-07-13 21:44:35 211

原创 sdoi 2009 HH去散步 矩阵乘

如果没有题里的“不会立刻沿着刚刚走来的路走回”限制,那么直接矩乘计算k步的方案数但加了这个限制,就不能以点来矩乘了,考虑边数先拆边,再把每一个边和以其终点为起点的边相连,注意不能是拆前的同一条边。ran

2017-07-13 21:34:35 240

原创 noip2010 引水入城 bfs+贪心

如果能够实现,每个河边的城市对应的控制区域一定是一条线段。所以直接bfs每个河边的城市,贪心线段的右端点#include#include#include#includeusing namespace std;int qx[500005],qy[500005],a[505][505],n,m,bo[505][505],ans;//队列一定要开大!!!!!! bool flag[5

2017-07-13 21:31:04 272

原创 普通平衡树

SPLAY#include#include#include#define N 1000005using namespace std;int ch[N][2],f[N],size[N],cnt[N],key[N],root,sz;inline void clear(int x){ ch[x][0]=ch[x][1]=f[x]=size[x]=cnt[x]=key[x]=0;}

2017-07-12 15:04:32 408 1

原创 bzoj 1064 假面舞会 图论??+dfs

有两种情况需要考虑1.链:可以发现对最终的k没有影响2.环:如果是真环(即1->2->3->4->1),可以看出所有可行解一定是该环的因数 假环呢??(1->2->3->4,1->5->4),可行解便是两条路的差值的因数So??对于每条边,正建1,反建-1,dfs,每出一个环,就计算gcd没有环呢??最小是3,最大是所有链加和喽#include#include#incl

2017-07-12 10:40:23 284

原创 spot 状压dp

题目大意:数轴上有n个泥点,共有m个木板,求最少用几个木板可以覆盖全部泥点,并求最优方案数(n,m看范围,肯定是状压f[i][j]表示前i个泥点都被覆盖,使用的木板集合为j转移:f[ii][j|bit[k]]+=f[i][j]*(r-l+1)ii表示枚举木板k能转移到的所有位置,r,l分别表示可行的左右端点#include#include#include#include

2017-07-11 18:38:06 342

原创 [ZLXOI2015]殉国 数论 扩展欧几里得

题目大意:已知a,b,c,求满足ax+by=c (x>=0,y>=0)的(x+y)最大值与最小值与解的个数。直接exgcd,求出x,y分别为最小正整数的解,然后一算就出来啦#include#include#define ll long longusing namespace std;ll a,b,c,x,y,d,bd,ad,X1,Y1,X2,Y2;ll Abs(ll x){ ret

2017-07-11 06:26:52 305

原创 bzoj 1098 poi2007 办公楼 bfs+链表

题意很好理解,求给出图反图的联通块个数。考虑这样一个事情:一个联通块里的点,最多只会被遍历一次,再遍历时没有任何意义所以用链表来存,每遍历到一个点就将该点删掉#include#include#include#include#includeusing namespace std;#define N 100005int e=1,head[N],n,m;int nxt[N],

2017-07-10 21:18:09 242

原创 bzoj 3629 聪明的燕姿 约数和+dfs

考试只筛到了30分,正解dfs......对于任意N=P1^a1*P2^a2*......*Pn^an,F(N)=(P1^0+P1^1+...+P1^a1)(P2^0+P2^1+...+P2^a2)*...*(Pn^0+Pn^1+...+Pn^an)从小到大枚举素数P,依次判定是否有K满足(P^0+P^1+...+P^K)|X有一些细节需要处理,比如当前S为某大素数+1......

2017-07-10 20:05:34 344

原创 bzoj 2002 弹飞绵羊 分块

正解lct,然而本蒟蒻并不会....分块思路很清晰,处理出每个点弹出所在块所需要的步数及出去后的第一个位置#include#include#include#include#define N 200005using namespace std;int n,m,nn,k[N],nxt[N],ned[N],be[N],tot;int opt,aa,bb,ans;void work(i

2017-07-09 21:46:39 255

原创 bzoj 1076 奖励关 状压+期望dp

因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推。f[i][j]表示从第i次开始,初始状态为j的期望收益#include#include#includeusing namespace std;int bit[18],K,n,aa,ned[18],a[18];double f[105][1<<17];int main(){ bit[0]=1; for(int i=

2017-07-09 19:47:39 314

空空如也

空空如也

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

TA关注的人

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