单调队列
文章平均质量分 60
nlj1999
这个作者很懒,什么都没留下…
展开
-
1047: [HAOI2007]理想的正方形
一开始很蠢地用单调队列模拟,得出了一个O(a*b*n)的方法,然后果断炸掉了。 遂改良了一下,用maxv[i][j]和minv[i][j]分别表示点(i,j)往下垂的一小条(长度为n)的最大最小值,然后再模拟一遍,但是每次正方形移动的时候并不是把所有点都加进去,只加最大最小的点,于是就是O(a*b)。然后就A了^_^。 #include #include #include #include u原创 2015-12-19 10:18:00 · 481 阅读 · 0 评论 -
1023: [SHOI2008]cactus仙人掌图
好难不会做TAT。 只好Orz各路神犇的题解。 搞了一个小时,终于乱搞出来了。 大概就是Tarjan+树形DP+环上单调队列DP+乱七八糟的讨论。 脑子有点糊了。 #include #include #include using namespace std; const int N=50000+5; inline int read(){ int x=0;char ch; while(原创 2015-12-23 09:56:21 · 325 阅读 · 0 评论 -
3437: 小P的牧场
斜率优化什么的真心无脑。 令sum[i]=sigma(b[k])(k 则f[i]=min(f[j]+i*(sum[i]-sum[j])-mul[i]+mul[j])(j 单调队列维护就好了。 #include #include #include using namespace std; const int N=1000000+5; typedef long long ll; ll f[N]原创 2015-12-24 13:27:32 · 324 阅读 · 0 评论 -
POJ 2754 Similarity of necklaces 2
论中午不睡觉的危害TAT 蒟蒻什么都没学过表示很新奇系列——原来多重背包真的可以用单调队列做。 显然多重背包有n*V*sigma(k)的做法,但是这里的sigma(k)显然是多余了,当对每一个物品更新的时候,我们将当前容量对物品的体积v取模,根据剩余进行分类,显然一个状态的更新必定是来自同一类的,并且可以单调维护。 即f[j*v+d]必定是由f[t*v+d](t 然后这题就水过去了 #i原创 2016-02-26 14:02:25 · 1360 阅读 · 1 评论 -
bzoj 1499: [NOI2005]瑰丽华尔兹
其实这是个论文题我会乱说? 我大概是我见过的最简单的NOI题了吧 然而并没有用论文里的的方法(虽然是黑科技但是好麻烦啊) 这个东西嘛,很明显每次转移都是区域化的。 然后单调队列维护乱搞一下 代码写得好丑QAQ没治了 #include #include #include using namespace std; const int inf=1e9; int f[2][205][205],原创 2016-03-11 21:11:59 · 430 阅读 · 0 评论 -
BZOJ 3141: [Hnoi2013]旅行
这题做得我想哭QAQ 完全不知所措 srorz SROTL #include #include #include #include using namespace std; #define _(x) static_cast(x) const int N=500000+10; int n,m,s[N],cnt[N],a[N],tot; struct node{int l,r,x;}t原创 2016-04-08 20:35:59 · 1029 阅读 · 0 评论 -
BZOJ 1205: [HNOI2005]星际贸易
这道题要枚举做法QAQ 首先一看题目,乱七八糟一大堆费用利润什么的,不是DP就是最短路网络流。 网络流看起来好像会炸,而且模型很麻烦,弃疗。 发现Ai DP之后可以建出一个DAG,然后可以找到最大贸易额的方案(然而方案很多岂不是要T) 继续读题,发现方案唯一。 于是求出方案。 问题转化为在一个序列上经过好多点走到终点,符合各项条件的情况下费用最小,其中有某些点必须经过。 然后我就傻原创 2016-03-27 21:40:04 · 1016 阅读 · 0 评论 -
APIO2014 UOJ 103-105
#103. 【APIO2014】Palindromes 回文树裸题 利用lazy思想延迟标记,最后所有标记倒序更新即可 #include #include #include using namespace std; #define rep(i,l,r) for(int i=l;i<=r;i++) #define per(i,r,l) for(int i=r;i>=l;i--) typedef原创 2016-04-27 10:35:04 · 539 阅读 · 0 评论