自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SiriusRen的博客

是不是代码很短<( ̄︶ ̄)>

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

原创 这可能是我在CSDN的最后一篇文章了...

本人已搬家到博客园 http://www.cnblogs.com/SiriusRen/小伙伴们都在博客园…我会定时来CSDN转一转的~~~

2017-03-10 18:48:03 879 1

原创 BZOJ 1537 cdq分治

思路: 我只是想写一下cdq…… 二维偏序 一维排序 一维cdq分治 (我忘了归并排序怎么写了,,,) 写了个sort… 复杂度是O(nlog^2n)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=100050;#defi

2017-03-08 21:26:01 1055

原创 BZOJ 2794 DP

思路: 考虑把询问离线 按照m排序 物品按照a排序 f[i]表示c[j]的和到i b的最大值 背包就好 O(nk)竟然能过……//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;const int N=1005;struct Ask{int m,k,s,id;}ask[N*N];stru

2017-03-08 21:24:20 504

原创 BZOJ 2729 高精度+组合数学

思路: 考虑 把男生排成一排 女生和老师往里插 分成两种情况. 1. 女生中间夹着老师 2. 女生中间没有夹着老师求一下组合* 阶乘就好了 先放Python代码 简洁易懂def fact(n): temp=1 for i in range(1,n+1): temp*=i return tempdef C(n,m): if(n<m): re

2017-03-08 21:20:15 424

原创 BZOJ 4033 树形DP

http://blog.csdn.net/mirrorgray/article/details/51123741 安利队长blog… 树形dp吧,状态挺显然的,dp[x][j]表示以x为根的子树中,选择了j个黑点的答案,但注意这个答案是整棵树的答案。 我们只需要对于每个儿子背包一遍,在最后更新一下dp[x][j]即可,具体可以看一眼程序。 非常重要的是,这个复杂度是n^2的,需

2017-03-08 21:16:26 535

原创 BZOJ 1196 二分+Kruskal

思路: 二分答案 判一下能不能加//By SirisuRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=40050;int n,m,k,xx,yy,aa,bb,ans,f[N],top;struct Node{ int from,to,type,

2017-03-04 21:12:37 420

原创 BZOJ 1116 并查集

思路: 如果 每个联通块 边数>=点数 就OK 用并查集搞//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=100050;int n,m,xx,yy,sizep[N],sizee[N],f[N];int find(int x){re

2017-03-04 21:09:18 323

原创 BZOJ 3522 DFS+DP

思路: f[]表示选1个点的 g[]表示选2个点的 dp一下 ans+=(ll)g[k]*deep[k]; g[k]+=(ll)f[k]*deep[k]; f[k]+=deep[k];//By SiriusRen#include <cstdio>#include <cstring>using namespace st

2017-03-04 21:04:47 368

原创 BZOJ 2929 网络流

题意是啥……. 思路: 不是与1或n连起来的边 边权是1 否则是inf 跑网络流//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=66666,inf=0x3f3f3f3f;queue<int>q

2017-03-04 21:03:01 309

原创 BZOJ 1507 splay

写完维修数列 这不是水题嘛233333//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=5000050;int n,pos=1,ch[N][2],fa[N],size[N],root,xx,cnt;char op[15],ins[N],

2017-03-04 21:01:14 306

原创 BZOJ 1061费用流

思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西我们发现 等式左边的加起来=0 可以把每个方程看成一个点正->负 连边 跑费用流即可//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#de

2017-03-04 20:59:43 311

原创 BZOJ 3991 set维护dfs序

思路: set按照dfn排序 两点之间的距离可以O(logn)算出来 加一个点-> now ans+=dis(pre,now)+dis(now,next)-dis(pre-next); 删一个点同理 最后加上dis(begin,end)即可//By SiriusRen#include <set>#include <cstdio>#include <cstring>#include

2017-03-04 20:56:53 415

原创 BZOJ 4547 矩阵快速幂

思路: 肯定每回只加最大值和次大值如果 一开始的最大值>0且次大值<0 那就一直加 加到次大值>0搞一个矩阵 推斐波那契数列 求和 就好…//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int mod=10000007,N=100050;#de

2017-03-04 20:53:42 338

原创 BZOJ 1500 splay终结版...

GSS系列有一丝丝像… 只不过那个是线段树 这个是splay 翻转 插入 删除啥的就是普通的splay 合在一起了而已//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Tree{ int v,rev,sum,lmax,rmax,ma

2017-03-03 00:37:20 343

原创 BZOJ 2957 分块

思路: 记录每栋楼楼顶与原点连线的斜率 那么一栋楼可见当且仅当前面所有楼的斜率都小于这栋楼 将n栋楼分为√(0.5*n*logn)块 每一块内维护一个单调上升子序列(注意不是LCS) 比如说4 1 2 3 5 那么维护的序列就是4 5 修改的时候块内暴力重建 然后查询顺着块撸一遍 每次记录当前的最大值 然后去下一个块中二分找到第一个比这个最大值大的值 然后统计答案&&更新最大值 from p

2017-03-03 00:30:03 328

原创 BZOJ 2141 分块 线段树

思路: a[i]//By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=20050;int n,m,cpy[N],h[N],u,Block,block[N],xx,yy,ans;struct BIT{

2017-03-03 00:23:48 282

原创 BZOJ 4241 分块

思路: 考虑分块 f[i][j]表示从第i块开头到j的最大值 cnt[i][j]表示从第i块开始到序列末尾j出现了多少次 边角余料处理一下就好啦~//By SiriusRen#include <cmath>#include <cstdio>#include <algorithm>using namespace std;const int N=100050;int n,q,Bloc

2017-03-03 00:18:16 437

原创 BZOJ 4129 树上带修莫队+线段树

思路: 可以先做做BZOJ3585 是序列上的mex 考虑莫队的转移 如果当前数字出现过 线段树上把它置成1 对于询问 二分ans 线段树上查 0到ans的和 是不是ans+1 本题就是把它搞到了序列上 带了个修改… 麻烦一点 本质上是一样的//By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#

2017-03-03 00:13:49 484

原创 BZOJ 4028 分块

zrt当年是怎么想到的……. 思路: 考虑把序列分块 对于每块 存xor[i] 表示从本块开头到i的前缀异或和 把它扔进set里 存gcd[i]表示从本块开头到i的前缀gcd. 如果这一块的GCD和整个的gcd的gcd是一样的 从set里找ans 否则暴力.. GCD最多log种 所以是复杂度是O(nsqrt(n)logn)的//By SiriusRen#include

2017-03-03 00:08:25 332

原创 BZOJ 3238 后缀数组+单调栈

单调栈跑两遍求出来 ht[i]为最小值的那段区间//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=500050;int n,cntA[N],cntB[N],A[N],B[N],sa[N],tsa[N],rk[N],ht[N],stka[N

2017-03-03 00:03:01 345

原创 BZOJ 3323 splay维护序列

就第三个操作比较新颖 转化成 在l前插一个点 把r和r+1合并//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=100005,mod=20130426;typedef long long ll;struct Tree{

2017-03-02 23:59:52 523

空空如也

空空如也

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

TA关注的人

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