2016.11
Notokkkkkk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj1010
这道题的初始方程很容易推。f[i]=min { f[j]+(cost(j+1,i)-L)^2}其中,f[i]表示前i个东西放在容器里的最小代价cost表示把j+1到i这些东西都放在一个容器的长度,可以用前缀和s来维护但是时间上还不够,这时可以用一个斜率优化。对于j1对于i来说,如果j2这个点更优于j1,那么从今以后j1都没有用了,把它剔除出去。这样对于我们的取最原创 2016-11-28 18:15:50 · 438 阅读 · 0 评论 -
bzoj1015
这道题是要求一个动态的联通块数量。刚开始的想法是强连通,找割点,然后发现打不下去。所以想到了并查集。可是并查集如何删点?我这里采用了逆时间建边,就是先把最后结果的边建好,再把删的点加回去,维护联通块数量。#include#include#includebool v[500000];//是否被释放int p[500000]; struct mod{int x,y,next;原创 2016-11-25 18:14:49 · 347 阅读 · 0 评论 -
bzoj1031
把原字符串直接接一个一样的在后面,这样就能解决环的问题了,直接后缀数组sa水过。注意dsort的范围,不知为何,第一次设400然后RE。看来是有特殊字符的!?#include#include#includeint sa[200005];int rank[200005];char s[200005];int dsort[200005],Y[200005],wr[200005]原创 2016-11-25 18:13:38 · 395 阅读 · 0 评论 -
bzoj1001
这道题,n*m=1000*1000=100 0000网络流理论上过不了,可是因为数据太弱了,网络流dinic也可以过。然而这个团队只有我用最短路QAQ。原题就是一个最小割的典型模型,我们可以把原图的每一个面(三角形)当成一个点,再虚拟一个源和一个汇,拥有上边界或右边界(边界!)的连到源,下边界或左边界的连到汇。有公共边的三角形相连。这样,我最短路中的每一个路径都是一个割。构图很原创 2016-11-24 17:46:08 · 488 阅读 · 0 评论 -
bzoj1012
线段树水题#include#include#includestructmod{intl,r,lc,rc,c;};mod tr[400005];inttrlen=0;chars[5];intmymax(intu1,intu2){ if(u1>u2)原创 2016-11-24 17:59:18 · 332 阅读 · 0 评论 -
bzoj1026
这题是一道数位DPf[i][j]表示总共有i位数字,其中最高位数字为j的windy数个数f[i][j]+=f[i-1][k] 其中,k为0~9中的数且|j-k|>=2那么接下来就根据题目所给的A,B用前缀和相减就好了。那对于A/B如何求前缀和呢,下面用A来说明一。若一个数 的位数比A少,那么这个数一定比A小,直接加上方案数。二。位数相同:这个数的最高位 比 A的原创 2016-11-24 18:00:18 · 516 阅读 · 0 评论 -
bzoj3156
斜率优化。注意long long的使用,一不小心就没有用。#include#include#include#define LL long longlong long f[1000005];long long a[1000005];int q[1000005];long long s[1000005]; double Y(int j){ return f[j原创 2016-11-30 20:43:28 · 498 阅读 · 0 评论 -
bzoj1096
斜率优化把原方程化开(看代码),用前缀和维护。#include#include#include#includeusing namespace std;long long x[1000005],p[1000005],c[1000005];long long sump[1000005],cheng[1000005];long long f[1000005];int q[1000原创 2016-11-30 20:54:43 · 330 阅读 · 0 评论 -
bzoj1597
斜率优化这道题先按从大到下排序(两个关键字)然后如果一个木板长和宽均小于另一块木板,前者是可以直接舍弃的。f[i]=min{f[j]+A[j+1]*B[i]}这样吧 j+1 到 i 的部分包装起来了。注意这道题为了维护斜率方程原来的样子,我的除数是相反数。#include#include#include#includeusing namespace std;lon原创 2016-11-30 20:52:57 · 447 阅读 · 0 评论 -
bzoj1911
斜率优化这道题方程划开挺长的,一定要细心。最后的斜率方程右边只能剩下含有 i 的项,不含 i 的项必须全部到左边#include#include#include#includeusing namespace std;long long f[1010005];long long o[1010005];long long s[1010005];int q[10100原创 2016-11-30 20:48:37 · 465 阅读 · 0 评论 -
bzoj3437
斜率优化先把原方程拆开(拆到没有括号)然后运用结合律用前缀和维护数据范围只有一百万!#include#include#includelong long a[1000005];long long b[1000005];long long f[1000005];int q[1000005];long long s[1000005];long long s原创 2016-11-30 20:46:00 · 593 阅读 · 0 评论 -
bzoj1003
这道题数据范围很小。用f[i]表示前i天的最小代价,那么f[i]=min{f[j]+cost(j+1,i)+k}cost表示从j+1天到第i天找一条 唯一的 最短路径 的长度#include#include#includeint n,m,k,e; int first[25];struct mod{int x,y,z,next;};mod q[1005];b原创 2016-11-27 15:42:39 · 363 阅读 · 0 评论
分享