自定义博客皮肤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的博客

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

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

原创 BZOJ 4710 容斥原理+dp

http://www.cnblogs.com/CXCXCXC/p/5093584.html//By SiriusRen#include <cstdio>using namespace std;int n,m,K,mod=1000000007,f[33][33][666][9];int main(){ scanf("%d%d%d",&n,&m,&K); f[1][0][0][0

2017-02-27 23:03:18 660

原创 BZOJ 3195 DP

http://www.cnblogs.com/CXCXCXC/p/5093584.html//By SiriusRen#include <cstdio>using namespace std;int n,m,K,mod=1000000007,f[33][33][666][9];int main(){ scanf("%d%d%d",&n,&m,&K); f[1][0][0][0

2017-02-27 23:02:51 478

原创 BZOJ 3667 Pollard-rho &Miller-Rabin

论O(1)快速乘和O(logn)快速乘的差距….//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll shai[10]={2,3,5,7,11,13,17,19,23,29};ll mul(ll a,ll b,ll p){ ll d=((long

2017-02-27 22:59:42 638

原创 BZOJ 4522 Pollard-rho+exgcd

思路: N=P*Q 求出来P和Q 模拟就好…//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll shai[10]={2,3,5,7,11,13,17,19,21,23};ll mul(ll x,ll y,ll mod){ x%=mod;l

2017-02-27 22:57:08 819

原创 BZOJ 3729 splay维护DFS序+博弈论

思路: 这像是 阶梯Nim之类的东西 我们 直接把sg函数 设成mod(L+1)的 一棵子树 向下的奇数层上的石子xor起来 就是答案 有加点和改值的操作 就splay维护一下//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=1

2017-02-26 16:10:56 679

原创 BZOJ 3720 树分块

借鉴了别人的代码……//By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 66666struct Blocks{ int a[210],size; void Insert(int x){

2017-02-26 13:59:05 349

原创 BZOJ 3052 树上带修莫队

思路: 就是把带修莫队移到了树上 块的大小开到(n^2/3)/2 比较好… 这是一个卡OJ好题 //By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=100050;int n,m,q,xx,yy,Blo

2017-02-25 16:28:09 744

原创 BZOJ 2120 带修莫队

思路: 暴力能过的 嘿嘿嘿我是来练带修莫队的嗯 复杂度 O(n^5/3)//By SiriusRen#include <cmath>#include <cstdio>#include <algorithm>using namespace std;const int N=1050000;int n,m,a[N],cnt1,cnt2,Block,block[N],xx,yy,ans,su

2017-02-25 16:24:50 555

原创 Burnside&Polya总结

这里就算是一个小总结吧… 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/hankers/archive/2012/08/03/2622231.html 首先 Burnside引理: Burnside引理:即互异状态个数等于各种转换下的等价类个数的和除以转换个数。

2017-02-20 23:46:14 509

原创 BZOJ 2287 DP+容斥

思路: 先处理出来f[j]表示这i个物品都可用 填满容量j的方案数容斥一发处理出来g[j]=g[j-w[i]] 表示i不能用的时候 填满容量j的方案数//By SiriusRen#include <cstdio>using namespace std;int n,m,w[2005],f[2005],g[2005];int main(){ scanf("%d%d",&n,&m),f

2017-02-17 19:46:14 689

原创 BZOJ 2821 分块+二分

题意: N个数,M组询问,每次问[l,r]中有多少个数出现正偶数次。 思路: 把N个数分成sqrt(n)块,预处理d[i][j]表示第i块起点到第j块末尾的答案 枚举起点i,并维护一个数组记录每个数到目前为止出现的次数,从偶变奇、从奇变偶时相应增减答案。 把每个数在数列中出现的位置从小到大排序后放入到一个数组Arr中备用。 读入每个询问[l,r]。如果l和r在同一个块中暴力即可,否则设l

2017-02-15 16:11:01 410

原创 BZOJ 4358 坑 莫队+线段树 死T

这是一个坑 竟然卡nsqrt(n)lognT死 等更//By SiriusRen#include <cmath>#include <cstdio>#include <algorithm>using namespace std;#define Max(x,y) x>y?x:y;const int N=50050,T=50050*8;int n,m,Block,a[N],block[N]

2017-02-15 00:19:37 613

原创 BZOJ 4321 DP

思路: 这个DP太神了… 完全没想到 http://blog.csdn.net/geotcbrl/article/details/49663401//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n;long long f[1005][1005][2

2017-02-15 00:17:56 578

原创 BZOJ 1786 DP

思路: 肯定从小往大填合适了 f[i][j]表示第i个数是j的最少逆序对数 f[i][j]=min(f[i-1][k]+cost,f[i][j]) 优化一下成O(nk)就好啦~ (不优化也可以过的…)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;co

2017-02-15 00:16:59 662

原创 BZOJ 3674/BZOJ 3673 主席树

思路: 主席树维护可持久化数组 剩下的就是普通的并查集了…//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=200050;int n,m,op,xx,yy,L[N*50],R[N*50],tree[N*50],root[N],cnt;

2017-02-15 00:14:59 549

原创 BZOJ 1369 树形DP

思路: f[i][j] 表示节点i 染成j时 子树的最小权值 (我会猜这个j很小 你打我吖~) 随便DP一发就好了 (证明我也不会)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=20050,inf=0x3f3f3f3f;int

2017-02-15 00:13:17 433

原创 BZOJ 4184 线段树+高斯消元

思路: 线段树表示的是时间 每回最多log个段 区间覆盖 一直到叶子 的线性基 xor 一下 就是答案 一开始没有思路 看了这篇题解 豁然开朗 http://www.cnblogs.com/joyouth/p/5333181.html (还是本省的前辈呢)//By SiriusRen#include <set>#include <vector>#include <cstdi

2017-02-15 00:08:49 711

原创 BZOJ 3796 后缀数组+KMP

思路: 写得我头脑发蒙,,, 旁边还有俩唱歌的 抓狂 (感谢lh大爷查错) 首先 1、w是s1的子串 2、w是s2的子串 这两步很好办啊~ 后缀数组一下O(n)就可以搞 重点是 这个:3、s3不是w的子串 怎么办呢 把 1、3做一发KMP 那么取一下min就好了 注意重叠的情况 (其实是可以O(n)搞的 我一开始写错了 改的时候偷懒就直接二分了) 也很快~//By

2017-02-13 11:51:15 780

原创 BZOJ 3230 后缀数组+ST

思路: 首先我们已经会了后缀数组求本质不同的子串个数 这道题跟那个差不多 首先我们可以知道按字典序排好的每个后缀之前包含多少本质不同的字串 就是sigma(n-sa[i]+1-ht[i]+bi[i-1]) 在这上面二分就可以求出来原串是什么了 就把两个后缀的LCP和原串的长度取个min即可 再把串倒过来也差不多这么搞一遍就好啦//By SiriusRen#include <cstdi

2017-02-12 21:16:55 586

原创 BZOJ 2212线段树的合并

借鉴(抄)了一下题解…… 线段树合并的裸题吧…//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 4000050typedef long long LL; int n,cnt,tree[N],son[N][2],root,Root[N],a

2017-02-11 22:25:45 894

原创 BZOJ 2733 线段树的合并 并查集

思路: 1.线段树合并(nlogn的) 2.splay+启发式合并线段树合并比较好写 我手懒//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=100050;int n,m,q,a[N],f[N],xx,yy,son[N*50][2]

2017-02-11 22:23:23 523

原创 POJ 2388 基数排序

这题可以直接nth_element过去 比如这样子//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,a[100500];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i])

2017-02-11 16:41:28 552

原创 BZOJ 4516 后缀数组+ST+set

写了一半 没了啊啊啊     重新写的 思路: 先不考虑后缀自动机   (我不会啊)那这道题只能用后缀数组了 先把原串倒一下  后缀->前缀 相当于每回在前面加了一个字母 求不同的子串个数 首先 正常的求子串个数我们是会的 SPOJ 705 但是这道题比较坑 它让你每回都输出一下 那只好 维护一个前驱 一个后继 求LCP 取max ans=ans+n-i+1-max(LCP

2017-02-01 17:38:30 410

原创 BZOJ 1806 DP

思路: f[i][a][b][c][d] 表示在第i天 昨天1矿吃的是a 前天1矿吃的是b 昨天2矿吃的是c 前天2矿吃的是d 的最优解暴力转移 哦 需要优化一下空间… 变成i%2 就好了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const

2017-02-01 15:25:53 406

原创 BZOJ 1818 线段树+扫描线

思路: 可以把题目转化成 给你一些沿坐标轴方向的线段 让你求交点个数 然后就线段树+扫描线 搞一搞 (线段不包含断点 最后+n 这种方式 比线段包含断点+各种特判要好写得多)//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;const int N=100005;int n,stkx[N]

2017-02-01 10:46:03 655

空空如也

空空如也

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

TA关注的人

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