自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BZOJ 1998: [Hnoi2010]Fsk物品调度

很作死地写了个高端(SB)的并查集首先只要求出所有的posi,剩下的很容易用置换群的理论得出答案然后看posi的求法对于固定的a,da+b*d(modn)通过b不断地累加会构成环于是查找的时候只要找环上xi最小的点。但是有的时候会把一个环用完于是我们把环上的每个点都连到相应的下一个环上然后我很脑残地写了个并查集,维护环与环之间的路径和环内的路径每次查找的时候

2016-03-31 21:41:28 655

原创 BZOJ 1997: [Hnoi2010]Planar

07年的论文里有关于平面图判定的但是那个代码好像要300多行(听说12年WC的时候clj写出来了%%%%%%%%%%%)不过既然存在哈密尔顿回路,那么当然要用特殊的做法啦首先把哈密尔顿圈画出来然后不在圈上的边要么在圈内要么在圈外如果有两条边在圈内相交了,那么他们肯定是一个在圈内一个在圈外所以是个2-SAT问题(直接套Tarjan就好了)然后因为我比较懒就写了个并查集水一

2016-03-31 16:18:55 788 1

原创 BZOJ 1996: [Hnoi2010]chorus 合唱队

NOIP级别的题也能出到省选上来服#include#include#includeusing namespace std;const int p=19650827;const int N=1000+5;int f[N][N][2];bool vis[N][N][2];int q[N];int dp(int l,int r,int flag){ if(vis[l][r][

2016-03-31 15:30:56 292

原创 BZOJ 1488: [HNOI2009]图的同构

同SHOI2006图的染色只是这题只有两种颜色,即边选或不选然后套用08年论文里的方法,循环节的长度进行划分大概划分方案有10^6左右对要用到的一些东西进行预处理,比如说逆和幂。然后再算上循环节的计算,大概是O(N*10^6)左右的复杂度,就可以过了。(话说这个在OEIS上是不是有啊,首页上0MS的大爷们都是怎么写的啊)#include#include#includ

2016-03-31 14:30:26 499

原创 BZOJ 1487: [HNOI2009]无归岛

仙人掌DP每次在环上DP的时候强制一下环上的根(即环上第一个被发现的节点)左边的节点取或不取#include#include#include#includeusing namespace std;const int N=100000+5;const int inf=1e9;struct Edge{int to,next;}e[N<<2];int head[N],cnt;v

2016-03-31 13:30:07 642

原创 BZOJ 1486: [HNOI2009]最小圈

平均值最小回路二分答案后把每条边的权值都减去答案然后spfa判负圈果断TLE参照09年论文改成DFS版的SPFA,AC#include#include#include#include#includeusing namespace std;const int N=3000+5;const int M=10000+5;const double eps=1e-9;s

2016-03-31 11:22:07 275

原创 BZOJ 1485: [HNOI2009]有趣的数列

有趣的卡特兰数列先搞个50分的递推打个表,发现是卡特兰数列。然后用C(2n,n)/(n+1)这个公式分解质因数计算至于为毛是这个数列我也不造#include#include#includeusing namespace std;const int N=100000+5;const int M=2000000+5;bool is[M];int p[M],tot,cnt[

2016-03-31 11:00:50 478

原创 BZOJ 1483: [HNOI2009]梦幻布丁

链表的启发式合并O(nlogn)直接拿seter(233333)水多好#include#include#includeusing namespace std;const int N=100000+5;const int M=1000000+5;int head[M],next[N],ans,c[N],fa[M],sz[M];void merge(int u,int v){

2016-03-30 19:38:02 407

原创 BZOJ 1213: [HNOI2004]高精度开根

人生苦短我用python(话说正解是二分+高精度+FFT?)m=(int)(input())n=(int)(input())l=0r=1while r**m<=n: l=r r=r*2while l+1<r: mid=(l+r)//2 if mid**m<=n: l=mid else: r=midif

2016-03-30 16:26:08 1375

原创 BZOJ 1212: [HNOI2004]L语言

AC自动机水题跑一遍就好了#include#include#include#includeusing namespace std;struct node{ int fail,len,ch[26]; void clear(){ fail=len=0; memset(ch,0,sizeof(ch)); }}tr[205];int sz;void ins(char

2016-03-30 16:12:23 364

原创 BZOJ 3566: [SHOI2014]概率充电器

双向树形DP(民科专用名词)感觉这年SH的题很水啊先用半个小时发呆(明明是想不出来怎么搞,还以为是解方程吧)然后半小时想出来DP方程。然后就码码码1A了,话说本地的Lemon有几个点炸了不知道怎么回事,linux下测没问题首先肯定是一颗树了。对于每个节点,考虑它只有子节点时的概率。用f[u][0]和f[u][1]分别表示节点u充不充电的概率。f[u][0]=(1-q

2016-03-29 18:15:36 497

原创 BZOJ 3564: [SHOI2014]信号增幅仪

看了一上午平面图最短路的论文还是没看懂很想知道旅行者那题出成在线的要怎么做(离线的你都不会好不好)然后发现老师发了个压缩包过来。咦,14年的SH省选题还有数据,果断开坑。话说第一题是考高中数学吗。。。。。。最小椭圆覆盖和最小圆覆盖差不多就是要推几个公式40+min码完是不是慢了点话说竟然1A了真神奇#include#include#include#

2016-03-29 16:15:04 500

原创 BZOJ 1210: [HNOI2004]邮递员

写了两个小时。。。。。。。。毒瘤三件套:插头DP,哈希判重,高精度学(抄)到了插头DP的书写艺术#include#include#include#includeusing namespace std;const int base=1e9;const int maxhash=2601;int get(int s,int x){return (s>>((x-1)<<1))&3

2016-03-28 15:42:44 998

原创 BZOJ 1209: [HNOI2004]最佳包裹

一眼扫过去,凸包?数据范围什么这么小?10分钟码完了Andrew,发现答案不对……卧槽怎么是三维的。。。。。。。三维凸包不会啊TAT对着白书抄了一遍增量法,水过去了(你这样真的好吗)好吧回去再看一遍增量法,感觉很好玩的样子。很想知道status里0MS的大爷是怎么做到的(随机增量?)#include#include#include#include#include

2016-03-28 11:33:54 594

原创 BZOJ 1206: [HNOI2005]虚拟内存

模拟题#include#include#include#include#includeusing namespace std;mapmp;int sz;int id(int x){ if(!mp.count(x))mp[x]=++sz; return mp[x];}struct page{ int cnt,ti,id; bool operator < (const

2016-03-28 10:20:42 575

原创 BZOJ 1205: [HNOI2005]星际贸易

这道题要枚举做法QAQ首先一看题目,乱七八糟一大堆费用利润什么的,不是DP就是最短路网络流。网络流看起来好像会炸,而且模型很麻烦,弃疗。发现AiDP之后可以建出一个DAG,然后可以找到最大贸易额的方案(然而方案很多岂不是要T)继续读题,发现方案唯一。于是求出方案。问题转化为在一个序列上经过好多点走到终点,符合各项条件的情况下费用最小,其中有某些点必须经过。然后我就傻

2016-03-27 21:40:04 1012

原创 BZOJ 1202: [HNOI2005]狡猾的商人

题目显然是判断若干个不等式是否都成立差分约束。直接用SPFA搞。不过复杂度不好说。但是我们可以换个数据结构用带权并查集维护每个节点到父节点的路径长度。长度的意义是sum[u]-sum[fa[u]],于是若同根则可以算出两节点长度,与当前信息比较判断。不同根就合并,维护长度。#include#include#includeusing namespace std;con

2016-03-27 17:03:24 459

原创 BZOJ 1201: [HNOI2005]数三角形

一个三角形由三条边组成……于是我们可以枚举三角形的底边,然后检查剩余两条边存不存在。用数组预处理出左斜线和右斜线的线段数的前缀和。就可以在O(1)的时间内检查一条斜线段是不是实线。时间复杂度O(N^3)(会炸)虽然名义上有N^3级别的三角形,但是由于(我们常数小)实际上算一下会发现少很多。所以就水过了。#include#include#includeusing n

2016-03-27 16:26:55 777

原创 BZOJ 1200: [HNOI2005]木梳

虐哭了QAQ首先简单分析一下会发现将最终的序列游程编码之后不会出现连续的长度为3的递增或递减数列,然后就弃疗了。于是只好去翻题解……卧槽这贪心是什么鬼。看了半天证明感觉有点方,于是决定把代码敲(抄)一遍就算了。其实我觉得既然复杂度是n*c^2*d^2,不如把c和d设大一点,反正也证不出来。#include#include#includeusing namespace st

2016-03-27 15:16:12 952

原创 BZOJ 1199: [HNOI2005]汤姆的游戏

近9S左右的龟速QAQ竟然过了本来还写了个线段树处理矩形的情况的,结果好像跪了。于是弃疗写暴力。用队列维护一下当前矩形/圆的x范围内的点,然后对每个点暴力判断是否在矩形/圆内。O(n^2)#include#include#include#include#includeusing namespace std;const int N=250000+5;const do

2016-03-27 13:27:28 476

原创 BZOJ 1198: [HNOI2006]军机调度

搜索水题。。。。。。。没加剪枝都过了(才不是我不知道要加什么剪枝)#include#include#include#include#includeusing namespace std;vectorg[20];int s[20],t[20],cnt[20],r[20],p[20];int ans,n,m;void dfs(int i,int j,int d){ if(i

2016-03-27 10:43:31 737

原创 SPOJ (不知道题号是多少) DETER3 - Find The Determinant III

%%%%%%%%%Jin Bin欧几里得消元相当好用#include#include#includeusing namespace std;typedef long long ll;ll a[205][205],p;int n;ll Gauss(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=(a[i][

2016-03-26 17:13:18 504

原创 HDU 1519 Think Positive

依稀觉得以前做过这样的题(然而并不知道怎么做  只会用单调队列乱搞)今天才发现原来可以用数学归纳法直接秒掉。09-《数学归纳法与解题之道 》#include#include#includeusing namespace std;int main(){ //freopen("a.in","r",stdin); int T;scanf("%d",&T); while(T-

2016-03-25 15:42:50 455

原创 SGU 207. Robbers

不是很懂你们经济学边际效应递减……即使你是抢劫犯也要学点经济学:)好吧其实是数学归纳所以数学好的都去帮别人分钱了?#include#include#include#includeusing namespace std;const int N=1000+5;int X[N],K[N];struct hn{ double d; int i; bool operato

2016-03-25 15:31:18 269

原创 BZOJ 1065: [NOI2008]奥运物流

基环内向树上DP。09年-《对一类动态规划问题的研究》#include#include#includeusing namespace std;const int N=60+5;double f[N][N][N],g[N][N][N],FF[N],C[N],K[N];int n,pre[N],m;void dp(int u,int d){ for(int v=2;v<=n;v

2016-03-25 15:00:24 651

原创 BZOJ 2037: [Sdoi2008]Sue的小球

区间DP每次决策时计算当前决策对未来的影响#include#include#include#includeusing namespace std;const int N=1000+5;const int inf=1e9;int sum,s[N],f[N][N][2],x[N],n,y[N],st;bool vis[N][N][2];int w(int i,int j){

2016-03-25 10:13:17 545

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

数学期望水题预处理一下再记忆化搜索#include#include#include#includeusing namespace std;const int N=1000+5;const int inf=1e9;struct Edge{int to,next;}e[N<<1];int head[N],cnt;void ins(int u,int v){ e[++cnt]

2016-03-25 08:30:59 306

原创 POJ 3710 Christmas Game

第一眼看成仙人掌上博弈了,好口怕。然后发现环只会作为基树的叶子出现,然后通过讨论(看论文)发现环是可以缩掉的。所以就变成树上博弈了。。。。。听说有重边???那不应该是环吗 (⊙ˍ⊙)#include#include#includeusing namespace std;const int N=100+5;struct Edge{int to,next;}e[N<<1];

2016-03-24 17:50:05 359

原创 HDU 3094 A tree game

树上删边游戏#include#include#includeusing namespace std;const int N=100000+5;struct Edge{int to,next;}e[N<<1];int head[N],cnt;void ins(int u,int v){ e[++cnt]=(Edge){v,head[u]};head[u]=cnt;}int s

2016-03-24 16:52:30 291

原创 HDU 3595 GG and MM

首先很容易得出来对于单组游戏先拿到p/q>1的那个人赢,因为他可以控制奇偶。但是这是Every-SG游戏。然后就只好看别人的题解了QAQ感觉好像很厉害的样子,大概就是他要改变局面就要使步数多一步,然后就可以套论文里的结论了。#include#include#includeusing namespace std;int f[105];int calc(int x,int y

2016-03-24 16:23:43 342

原创 hdu 1907 John

anti-SG裸题终于刷到09年了\(^o^)/话说SJ定理这个名字怎么这么喜感呢。#include#include#includeusing namespace std;int a[50],n;int sg(){ int ans=0; for(int i=1;i<=n;i++) ans^=a[i]; return ans;}bool check1(){ for

2016-03-24 15:20:42 268

原创 BZOJ 1815: [Shoi2006]color 有色图

这题时限不知道怎么搞的,我的代码跑了4000+MS A掉了,可是时限是4S然后做法什么的不是很懂,好像很玄学的样子,具体看08年的论文。大概是利用划分对置换进行分类,每一类的循环节个数是一样的,这样统计出每一类的置换个数,然后就可做了。代码好短……#include#include#includeusing namespace std;typedef long long ll

2016-03-23 19:57:15 1292

原创 SPOJ 699 HKNAP - Huge Knap Sack

部分贪心解决大背包问题先利用数据特殊性将物品压缩成18个,第i个体积是i,重量为w[i],这里w[i]取体积为i的原物品的最大值。然后找到性价比最大的wi,vi。考虑任意一个物品p,若取q个该物品且q>=vi,即q=vi+x(x>=0),则总重量为w[p]*(vi+x)w[p]*(vi+x)=w[p]*vi+w[p]*x所以取limit=vi*18,即每个物品都取18个,则容量

2016-03-23 11:04:36 441

原创 LA 3270 - Simplified GSM Network

还是觉得应该先把论文刷完感觉好像掌握了构造维诺图的特殊技巧论文的方法真是奥妙重重但是时间复杂度怎么算,我有点方O(ans)?#include#include#include#include#include#define sqr(x) ((x)*(x))using namespace std;const int inf=1e9;struct point{ dou

2016-03-23 08:13:56 321

原创 BZOJ 1197: [HNOI2006]花仙子的魔法

这是啥题?数学归纳法???????!@#¥%……&*()首先初步分析得出问题是要求m个n维球面将n维空间分为多少份。很明显1维的答案是2*m现在我们假设已知n-1维的所有答案,要求第n维m个点能分多少。然后通过(脑补/找规律/乱搞)得出f[n][m]=f[n][m-1]+f[n-1][m-1]。嗯大概就是这样其实用归纳的思想,第m个n维球与前m-1个n维球有f[n-1]

2016-03-22 21:12:57 468

原创 BZOJ 1195: [HNOI2006]最短母串

一看字符串就想到ac自动机是不是没救了然后决定在AC自动机上做分层图最短路233333333结果发现极限数据刚好卡时限了QAQ仔细一想好像每条边的长度都是1哎。果断BFS其实DFS应该也可以的吧,而且可以剪枝。但是我有DFS恐惧症,于是果断选择了BFS。结果跑得奇慢无比。。。。。。。。不谈了我想静静#include#include#include#in

2016-03-22 19:39:29 831 1

原创 BZOJ 1194: [HNOI2006]潘多拉的盒子

不废话了直接%%%%%%%%%%%%%%%%%%%%%%%%%%%%正文一看到自动机就好虚啊tarjan写错3次感觉药丸#include#include#include#include#include#includeusing namespace std;struct Edge{int to,next;}e[20005];int head[55],cnt;void

2016-03-22 17:15:19 509

原创 BZOJ 1190: [HNOI2007]梦幻岛宝珠

好难的分层DP TAT把WTY大爷的话读了好几遍,并不是很懂(然后就把代码抄了一遍)话说这代码跑得略慢了。。。。。。。#include#include#include#includeusing namespace std;int f[40][1005];int n,w;int dp(){ int ans=0; for(int i=1;i<=30&&(1<<

2016-03-22 16:19:51 1176

原创 BZOJ 1188: [HNOI2007]分裂游戏

题目好熟悉(⊙o⊙)想起来是07年的论文题然后不会做┑( ̄Д  ̄)┍遂去翻论文照着论文的放法乱搞出来了#include#include#includeusing namespace std;bool ex[100];int sg[30];void build(){ sg[0]=0; for(int i=1;i<21;i++){ memset(ex,0,siz

2016-03-22 14:49:54 267

原创 bzoj 1187: [HNOI2007]神奇游乐园

人生第一次写插头DP,从此患上了插头DP恐惧症昨天晚上写的时候以为是轮廓线动规,然后发现没法确定联通块的数目,于是乎设计出了一种诡异的分层图DP,然后发现不对。。。。。。跪了……遂翻题解,发现时插头DP。膜了下论文,表示好坑爹,怎么这么多分类讨论啊。然后经过了艰苦卓绝的调试过程,终于A掉了话说这代码写这么烂我自己都看不懂了#include#include#include

2016-03-22 14:07:02 429

空空如也

空空如也

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

TA关注的人

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