- 博客(20)
- 收藏
- 关注
原创 1190: [HNOI2007]梦幻岛宝珠
这是一道很好的DP哦非常值得去做大家都叫它分层背包(其实很好理解啦)就是先按照二进制位分层,然后先在层内简单背包 f [i] [j] 表示 容量第 i 个二进制位为 j 的最大价值 换句话说就是 容量为 j*2^i 的最大价值然后就是把各个层合并 这个时候 f [i] [j] 表示 容量为 j*2^i+(W第i-1位之前) 的最大价值这里要注意: 不是j*2^i还要加上W本身前i-1位然后转移
2017-11-01 09:57:59 318
原创 bzoj 3224 Tyvj 1728 普通平衡树
还是SPLAY啦坚持每日一道SPLAY明天开启网络流计划平衡树的基本操作#include<bits/stdc++.h>using namespace std;int n,op,x;struct splay_node{ int val,siz,cnt; splay_node *fa,*son[2]; splay_node(int _val,splay_node *_fa)
2017-10-25 11:54:20 184
原创 bzoj 1861 [Zjoi2006]Book 书架
又是一道SPLAY!!!庆祝!!!其实这是一道splay模板题,然而我却和傻子一样开心!毕竟我是机房中最菜的,他们都会splay,就我不会。网上都是数组版本,难道只有我是指针吗???(凯爷你出来!)这个题不是简单以权值来建立平衡树,而是以下标这个我觉得挺难理解的。这样的话插入其实就是找到下标为 i 的节点然后插入在它的前面就好了#include<bits/stdc++.h>#define lca
2017-10-24 11:50:32 174
原创 bzoj 1044 木棍分割
这是一个水题然而我却想了一年我好菜啊这个题分为两问第一问随便二分第二份随便 d p 然而简简单单的 d p 会 T 而且 M 所以使用滚动数组解决M的问题然后发现每一个点向前追溯的点是一样的所以可以预处理然后搞一搞前缀和就好啦!#include<bits/stdc++.h>using namespace std;const int MX = 50005 ; const int mod = 10
2017-10-23 22:38:08 240
原创 bzoj1208 [HNOI2004]宠物收养所
我终于学会 SPLAY 啦这是一道水题,貌似用set比splay要快得多,不过还是来练练手,毕竟机房各路神犇早都已经会了 QWQ裸板子#include<bits/stdc++.h>#define lca long long using namespace std;const int mod = 1000000 ;const lca inf = 999999999999999LL ;int
2017-10-23 14:42:06 237
原创 bzoj 1042: [HAOI2008]硬币购物
这是一道好题,值得品味首先先不考虑有限制的情况是一道水题但是一定要记得循环顺序,首先要循环第几种硬币,然后再循环多少钱为什么呢?如果先循环钱,就会导致重复 3 = 2 + 1 , 3 = 1 + 2 然后考虑有限制的情况 容斥一下:答案 = 没有限制 - 第一种硬币突破限制 - 二 - 三 -四 + 一 & 二 ……怎么求突破一种硬币限制呢?只要这一种硬币使用 d[i]+1 个 剩下的 可以随便取(
2017-10-21 17:50:52 171
原创 bzoj 1037 [ZJOI2008]生日聚会Party
这是一道非常好的dp题,实在是太好了机房众神犇都说这是一道水题然而我却做了一上午,这可让我这种菜鸡怎么办啊 qwq这个题一看就是dp,但是我第一眼看像是区间dp???这个题要男生与女生的差不超过 k (常数)怎么维护???然后得到神犇的指点说其实可以只维护以 i 为结尾的所有后缀的情况就好啦f[i][j][a][b] 表示 以 i 为结尾的所有后缀中 男生有 j个,男-女最大为a,女-男最大为b
2017-10-21 17:38:02 160
原创 bzoj 1016
这个题就不是那么水啦首先要证明一个结论在一张图中的所有最小生成树中,相同的权值的个数是一定的就是说 一种权值的数量 是固定的这是为什么呢?(当然是玄学啦!)考察两个不同的最小生成树,选取其中的不同的部分,剩下的是相同的部分相同的部分先并查集连成块,然后发现不同的部分应该是具有相同作用的(也就是说把相同部分的那些块连了起来)那么一定可以选取两个不同部分中较小的来达到相同的作用然后观察 克鲁斯卡尔 的过
2017-10-20 11:58:47 224
原创 bzoj 1015
真是一道大水题啊链表存边并查集倒着连边但是要注意被打掉的星球算是已经消失了以及连边的另一头如果还没有恢复(就是连边的反操作),就先不能连就这么简单#include<bits/stdc++.h>using namespace std;const int MX = 200005 ;int head[MX<<1],fa[MX<<1],e[MX<<1][2],att[MX<<1],used[MX],v
2017-10-20 09:55:17 271
原创 bzoj 1013
又做了一道水题实在是太水啦!直接列方程高斯消元即可#include<bits/stdc++.h>using namespace std;const double eps = 1e-8 ;int n;double k[20][20],a[20][20],x[20][20],r,sum[20];int main(){ scanf("%d",&n); for(int i=1;i
2017-10-20 08:51:25 215
原创 bzoj 1263
这是一道大水题 不知道从哪里听来的结论就是贪心优先拆分成3,然后只可能剩下4或者2 然后乘起来就好了/************************************************************** Problem: 1263 User: 27rabbit Language: C++ Result: Accepted Time:
2017-10-20 07:49:29 210
原创 bzoj 1010
这是一个大水题斜率优化dp推一推式子#include<bits/stdc++.h>#define lca long long using namespace std;const int MX = 50005 ;lca n,l,p,q[MX];lca c[MX],dp[MX];double getk(int pos){ int x=q[pos],y=q[pos-1]; re
2017-10-19 20:52:38 193
原创 bzoj 1008
不想说什么了,实在是太水了。。。#include<bits/stdc++.h>#define lca long long using namespace std;const int mod = 100003 ;lca n,m;lca qpow(lca a,lca b){ lca res=1,base=a%mod; while(b) { if(b&1) res
2017-10-19 17:17:34 234
原创 bzoj 1007
这是一个大水题 只需要维护一下凸包就好啦 画一下图发现斜率相同在下面的就看不见啦 斜率不同的手画一下直线交点就好啦 简简单单的栈#include<bits/stdc++.h>using namespace std;const int MX = 500000 ;const double eps = 1e-8 ;struct node{ double k,b; int
2017-10-19 17:02:03 200
原创 bzoj1005 小明的烦恼
这个题是 简单的pruffer序列然后简单组合数公式 然后质因数分解高精度#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define lca long longusing namespace std;const int MX = 1005 ;int n,m,re,cnt,d[MX],u[M
2017-10-19 11:14:17 308
原创 我是最菜的
我果然是最菜的 我又双叒叕是最菜的 看了一眼XHB神犇的博客 woc 他咋啥都会 树套树 treap bit splay 点分树 好强! %%%%
2017-10-04 21:12:30 199
原创 网络流 dinic poj 1273
板子 网络流题用的是 dinic (好像打成 dicnic了 。。=_=)很简单的一道题 但是一开始的时候insert ( x , y , z ) insert( y , x , 0 ) 写成了 insert( x , y , z ) insert( y , z , 0 ) mdzz 给 RE 掉了我好弱啊啊附上 代码 #in
2017-04-10 09:14:25 292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人