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

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

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

原创 BZOJ 2819 DFS序+线段树

非递归的DFS写炸了… 交了一个递归版的 过了………..//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=1000050;int n,nn,q,xx,yy,stk[N],in[N],out[N],top,cnt,tree[N*4];i

2017-01-31 12:58:54 423

原创 BZOJ 3105 线性基 高斯消元

思路: 按照从大到小排个序 维护两个数组 一个是消元后的 另一个是 按照消元的位置排的 不断 维护从大到小 (呃具体见代码)//By SiriusRen#include <cstdio>#include <iostream>#include <algorithm>using namespace std;#define int long long#define N 105i

2017-01-30 18:07:27 610

原创 BZOJ 4004 高斯消元

思路: 排个序 消元 完事~但是! 坑爹精度毁我人生我hhhh他一脸红红火火恍恍惚惚//By SiriusRen#include <cmath>#include <cstdio>#include <algorithm>using namespace std;#define double long doubleconst int N=505;const double eps=1e-8;

2017-01-30 16:11:59 380

原创 BZOJ 3624 并查集 (Kruskal)

思路: 先把所有能加上的水泥路都加上 判断哪些是必加的鹅卵石路再重新做一遍最小生成树 加上必加的鹅卵石路 一直加鹅卵石路 判一下是不是=k 最后加上水泥路就好了//By SiriusRen#include <cstdio>using namespace std;const int N=100050;int n,m,k,f[N],top;struct Node{int u,v,

2017-01-30 11:27:49 352

原创 BZOJ 1989 概率相关

思路: 一条边免费的概率为 (经过它的路/总路径条数)^2 DFS即可有个地方没有用 long long炸了好久…//By SiriusRen#include <cstdio>using namespace std;const int N=20050;int n,m,xx,yy,first[N],next[N],v[N],tot,size[N];typedef long long ll

2017-01-29 22:07:24 471

原创 BZOJ 4012 树链剖分+主席树

//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define N 300050int n,Q,A,age[N],w[N],v[N],next[N],first[N],tot,rev[N],root[N];int

2017-01-29 21:21:11 548

原创 Codeforces 232E - Quick Tortoise bitset+分治

题意: 思路: //By SiriusRen#include <cstdio>#include <bitset>#include <vector>using namespace std;int n,m,q;char map[505][505],ans[600005];struct Node{int x1,y1,x2,y2,id;}jy;vector<Node>vec;b

2017-01-26 22:08:28 460

原创 BZOJ 2127 二元关系

题意: 思路: 先把所有的值加起来 最小割割哪儿 就代表那个地方不选 一减 剩下的就是 最大值了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=105,M=10005,K=300050,inf=0x3f3f3f3f

2017-01-26 19:33:58 425

原创 POJ 3469 Dinic (二元关系)

题意: 思路: //By SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#define mem(x,y) memset(x,y,sizeof(x))const int N=20005,M=880005;int first[N],vis[N],next[M],v[M]

2017-01-26 16:35:37 338

原创 BZOJ 3160 FFT+Manacher

思路: 这道题思路好奇怪…….我们先要知道关于x (x可以是间隙) 对称的有几对字母 显然暴力是n^2的 那怎么办呢先把所有’a’看成1 ‘b’看成0意外的发现 这不就是卷积嘛再倒过来搞一搞 加一下2^x-1就是包含连续的回文串的解了然后 跑个manacher 把包含的删掉就好啦时间复杂度是O(nlogn)的代码://By SiriusRen#include <cstdio>#inc

2017-01-26 14:47:27 627

原创 COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)

思路: 此题显然是CDQ套CDQ套树套树 (然而我懒) 想用一种奇怪的姿势卡过去就出现了以下解法5w*5w/8的bitset   hiahiahia 但是空间会爆怎么办啊…   折半~ 变成5w*2.5w/8完美卡过去 时间会慢很多么    并没有~~完全可以过 甚至比某些姿势不好的树套树快hiahiahia代码是不是很短~//By SiriusRen#include

2017-01-25 00:36:51 431

原创 BZOJ 2194 FFT

思路: 题目中给的是差值一定的那么就把b数组倒一下 不就变成 i+j=k(k为定值的了嘛) 嗯 然后搞个FFT//By SiriusRen#include <cstdio>#include <complex>using namespace std;typedef complex<double> cplxd;const int N=270000;const double pi=acos(

2017-01-25 00:30:46 561

原创 HDU 4609 FFT+各种分类讨论

思路: http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html 其实我是懒得写了....一定要define int long long……(否则不知道自己怎么死的别怪我..)有用C++写好的虚数 的版本 (是慢一些) (写完本地编译过了 交上去各种CE)哦 还有.. 不要每回都搞1<<18个初始量,,,,,,, 会

2017-01-25 00:27:34 794

原创 BZOJ 2179 FFT模板

思路:FFT板子题//By SiriusRen#include <cstdio>#include <complex>using namespace std;typedef complex<double> cplxd;const int N =133333;const double pi=3.1415926535897932;int n,m,L,R[N],c[N];char ch[N];

2017-01-24 22:19:42 376

原创 BZOJ 4568 倍增维护线性基

在树的路径上选取一些点 使得这些点权xor后的结果最大 思路: 时限60s 59696ms卡过去了哈哈哈//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int N=20005;ll Temp

2017-01-22 23:14:57 495

原创 BZOJ 3569 询问删除指定的k条边后图是否连通 线性基

思路: 这题思路好鬼畜啊…… 绝对是神思路//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;const int N=100050,M=1000050;int n,m,first[N],next[M],v[M],tot=1,vis[N],a[M],b[N],xx,yy,stk[19],ans;

2017-01-22 21:30:46 846

原创 BZOJ 2844 高斯消元 线性基

思路: //By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int inf=0x7fffffff,mod=10086;int n,a[100050],q,flag=1,rec[66],ans;void Gauss(){ for(int i=

2017-01-22 18:40:59 471

原创 寒假培训1.20 位运算

补码: 负数 ~x+1 正数一样<< >> & ! ~ 运算符… 取某位: (x>>pos)&1 将某些位置为1 x|(1<< i ) 将某些位置为0 x&~(1<< i) 将某些位置取反 x^(1<< i)求1的个数 1.查表 f[i]=f[i>>1]+(i&1) 分段 分成16位 如果内存很小怎么办…… (并没有听懂..)求1的个数的奇偶性 把它拆成两个1

2017-01-20 11:32:41 329

原创 hihocoder1415 重复旋律3

思路: 扫一遍height 判一下即可//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 200050int n,cntA[N],cntB[N],A[N],B[N],tsa[N],sa[N],rk[N],ht[N],ans;char s[N

2017-01-19 08:44:05 340

原创 hihocoder 1407 重复旋律2

思路: 二分一哈答案 height分个块解题方法提示 × 解题方法提示 小Ho:这一次的问题该如何解决呢? 小Hi:嗯,这次的问题被称为最长不可重叠重复子串问题。 小Ho:

2017-01-19 08:28:00 676

原创 BZOJ 3175 最大独立集

思路: 最大独立集嘛 用nlogn的Dinic做//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 888888int n,re[205][205],cnt,first[40050],next[N],v[N

2017-01-19 07:53:10 387

原创 BZOJ 3626 离线+树链剖分+线段树

思路: 抄一波yousiki的… 显然,暴力求解的复杂度是无法承受的。 考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是上面有几个已标记了的点(包括自身)。所以,我们不妨把 z 到根的路径上的点全部 +1,对于 l 到 r 之间的点询问他们到根路径上的点权和。仔细观察上面的暴力不难发现,

2017-01-19 07:51:28 411

原创 BZOJ 3165 李超线段树

思路: 李超线段树 我是把线段转成斜率的形式搞得 不知道有没有更简单的方法//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int mod1=39989,mod2=1000000000;#define double long doubleint read

2017-01-18 09:11:08 960 3

原创 BZOJ 1568 李超线段树

思路: 李超线段树裸题//By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100050int n,t;char op[10];struct Tree{double s,p;}tr[N*8];void in

2017-01-18 09:06:41 987

原创 URAL 1297 后缀数组+线段树

思路: 论文题……*n 倒过来接上 求LCP 搞棵线段树即可//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 5555int cases,pos,maxans,n,cntA[N],cntB[N],A[N],B[N],rk[N],sa[

2017-01-15 23:27:15 399

原创 SPOJ 694/705 后缀数组

思路: 论文题*n Σn-sa[k]-ht[k]+1 就是结果 O(n)搞定~//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 55555int cases,n,cntA[N],cntB[N],A[N],B[N],rk[N],sa[N],

2017-01-15 23:24:55 686

原创 POJ 3693 后缀数组+RMQ

思路: 论文题 后缀数组&RMQ有一些题解写得很繁//By SiriusRen#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100050int n,cases,cntA[N],cntB[N],A[N],B[N],rk[N],sa

2017-01-15 23:19:01 310

原创 POJ 3261 后缀数组+二分

思路: 论文题… 二分+对后缀分组这块一开始不用基数排序 会更快的(其实区别不大)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 20050int n,k,s[N],cntA[N],cntB[N],A[N],B[N],rk[N],sa[

2017-01-15 23:17:23 436

原创 POJ 1743 后缀数组

思路: 后缀数组论文题 对后缀分组//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 20005int n,s[N],cntA[N],cntB[N],A[N],B[N],rk[N],sa[N],tsa[N],ht[N];void SA()

2017-01-15 23:02:15 386

原创 hihoCoder 1403 后缀数组 重复旋律

思路: 后缀数组 第一次写 留个模板吧先求出后缀数组,问题转换为询问height数组中连续k-1个数的最小值的最大值,单调队列扫描一遍即可。—yousiki手懒用得STL//By SiriusRen#include <deque>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#def

2017-01-15 22:49:35 443

原创 BZOJ 3166 set+可持久化trie树(OR 莫队)

思路: 1.找次大值 我们不妨设当前点是次大的 那这段区间为 左边第二个比它大的点的坐标+1 和右边第二个比它大的点的坐标-1 2.用可持久化trie树找异或最大值也可以用莫队//By SiriusRen#include <set>#include <cstdio>#include <algorithm>using namespace std;#define N 50050i

2017-01-13 08:53:59 625

原创 HDU 4757 可持久化trie树

思路: 可持久化trie树裸题 x->y 就是x +y -lca(x,y) -fa[lca(x,y)] 学了可持久化线段树 再看这个就无压力了注意是多组数据……//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100050#defin

2017-01-12 23:35:28 948

原创 POJ 1741 树分治

思路: http://blog.sina.com.cn/s/blog_6d5aa19a0100o73m.html//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 20005int n,k,xx,yy,zz,first[N],next[N],

2017-01-12 17:59:54 605

原创 POJ 2114 点分治

思路: 点分治//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 10005int n,k,xx,yy,first[N],next[N*2],v[N*2],w[N*2],tot;int f[N],size[N],vis[N],d[N],de

2017-01-12 17:57:14 406

原创 BZOJ 4260 trie树

思路: 搞一个前缀异或和一次从左往右 另一次从右往左 异或最大值用字典树搞一搞//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 400500int n,a[N],cnt=1,ch[N*20][2],sum[N],lmax[N],rmax[N

2017-01-12 17:54:48 612

原创 BZOJ 2096 单调队列

思路: 偷懒用的STL//By SiriusRen#include <deque>#include <cstdio>using namespace std;struct Node{int id,w;}jy;deque<Node>qmin,qmax;int n,k,xx,t,ans;int main(){ scanf("%d%d",&k,&n); for(int i

2017-01-12 17:51:42 661

原创 BZOJ 1283 费用流

思路: 最大费用最大流 i->i+1 连边k 费用0 i->i+m (大于n的时候就连到汇) 连边1 费用a[i]//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 1005#define M 2222

2017-01-12 17:48:45 364

原创 BZOJ 3339 线段树

思路: 考虑离线处理 显然 l固定时 r越大 ans越大 那我们不妨按照l从小到大排序l->l+1的时候 l到next[l]这段区间都跟a[l]取min就好了搞颗线段树维护一下//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 22222

2017-01-12 17:46:54 653

原创 BZOJ 2588 主席树

思路: 主席树 做完BZOJ 3123 觉得这是道水啊…… 然后狂RE 狂MLE 要来数据 忘把deep[1]设成1了…………………………. 啊wocccccccccccccccc//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N

2017-01-12 17:44:04 580

原创 BZOJ 1898 构造矩阵+矩阵快速幂

思路: T的最小公倍数是12 那么12以内暴力 整除12 的部分用矩阵快速幂//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,st,ed,k,nfish,T,p[5],can[13][55];struct Matrix{ int a[

2017-01-11 11:28:37 415

空空如也

空空如也

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

TA关注的人

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