- 博客(51)
- 收藏
- 关注
原创 8.27 题解
先%一发达哥 T1,其实不难,就是一个简单的dp+矩阵快速幂加个原根优化,其实是模意义之前没做过题,有点懵,一开始思路也光想数学了,就gg了…… 模意义下所有运算都和正常运算一样,只是除变成了乘逆元!! 定义状态数组f[i][j]表示第i步转移后模数为j的概率,矩阵乘优化,可得80分,正解是把每个数转化为p原根的i次方,别的都一样,会发现这样出来的是循环矩阵,复杂度降为O(logm*mod^2
2017-08-29 16:51:52 431
原创 8.27考试小结
好久不考试了...一开始没有考试的感觉,一直在想第一题,无果,打了个不知道是什么的暴力大概还剩不到两个小时了,发现T2,T3都没看。。洗了把脸,清醒了一下。看T2,想了一会,感觉60分应该可以,打了个dfs+高斯消元,又过了1h。急忙去看第三题,觉得应该是卡特兰枢加一些奇奇怪怪的东西,但卡特兰数不太记得了,觉得4种情况也来不及推了,最后20min就滚动数组打了65分暴力.
2017-08-28 16:29:54 442
原创 bzoj2326 [HNOI2011]数学作业
矩阵乘,按位搞 两个矩阵,分别为 ans00i00100\begin{matrix} ans & i & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{matrix} 10k11011001\begin{matrix} 10^k &0 & 0 \\ 1 & 1 & 0 \
2017-08-26 12:07:25 273
原创 [Poi2012]Festival 差分约束+tarjan
差分约束建图,发现要在每个联通块里求最长路,600,直接O(n3) floyed#include#include#include#include#include#define N 650#define M 100050using namespace std;int g[N][N],n,m1,m2,f[N],ans;int e=1,head[N];struct edge{
2017-08-24 16:47:56 335
原创 [Usaco2005 dec]Layout 排队布局 差分约束
填坑… 差分约束一般是搞一个不等式组,求xn-x1的最大最小值什么的,求最大值就转化成xa<=xb+w这样的,然后建图跑最短路(这才是最终约束的),举个例子 x1<=x0+2x2<=x0+7x3<=x0+8x2<=x1+3x3<=x2+2 \begin{matrix} x1<=x0+2 \\ x2<=x0+7 \\ x3<=x0+8
2017-08-23 15:34:01 524
原创 bzoj3631[JLOI2014 松鼠的新家 倍增lca+差分
裸的树上差分+倍增lca每次从起点到终点左闭右开,这就有一个小技巧,要找到右端点向左端点走的第一步,然后差分就好了#include#include#include#include#include#define N 300005using namespace std;int fa[N][20],dep[N],f[N],g[N],n,l[N];int e=1,head[N];
2017-08-22 16:37:45 348
原创 [HNOI2015]菜肴制作 拓扑序
逆序最大字典序拓扑序反向建边,逆序字典序最大。。#include#include#include#include#include#include#define N 1000005using namespace std;priority_queue q;int e=1,head[N],T,n,m,in[N],now,ans[N];struct edge{int v,nex
2017-08-21 17:12:59 353
原创 [POI2007]洪水pow bfs
发现:只在所有自己的城市建水泵一定是最优解。所以对自己的城市按高度排序,该城市不用建的前提是从他出发经过一条高度都小于等于他的路径能到达一个已经修建水泵的sort+bfs......#include#include#include#include#include#define N 1005using namespace std;int dx[4]={-1,1,0,0},d
2017-08-21 15:59:17 332
原创 bzoj1059 [ZJOI2007]矩阵游戏
二分图匹配。发现:无论怎么交换,同一行的还是同一行,同一列的还是同一列的。所以直接建图,跑匈牙利就好了#include#include#include#include#include#define N 205using namespace std;int pp[N],n,T,g[N][N],cnt;bool bo[N];bool find(int x){ fo
2017-08-20 19:36:38 342
原创 bzoj2730 [HNOI2012] 矿场搭建
tarjan跑出来所有的割点dfs搞每一个点双和几个割点相连,0个就要建两个,因为建一个的话,那个地方没了就死了,1个就要建一个,因为如果割点断了,需要内部供给,2个就不用建,任意一个断都可以从另一边过#include#include#include#include#include#define N 1500using namespace std;int n,m,cnt,nu
2017-08-20 18:08:30 400
原创 NOIP2013华容道 大爆搜
预处理出每个点周围四个点互相到达的最短路,再在整个图上跑SPFA,要记录路径#include#include#include#include#include#include#define N 32using namespace std;int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};int n,m,g[N][N],dis[N][N][5][5],f
2017-08-20 17:43:59 361
原创 便 加权并查集
题目 发现每一行,列的差都相等 ⎡⎣⎢124235346⎤⎦⎥ \begin{bmatrix} 1 & 2&3 \\ 2&3 & 4 \\ 4&5&6\\\end{bmatrix} 行 1-2=2-3=3-4 2-4=3-5=4-6 列 1-2=2-3=4-5 2-3=3-4=5-6 再发现了这个神奇的规律后,就可以用带权并查集维护了。#include <cstdio>#inc
2017-08-15 20:59:56 566
原创 bzoj 4565 状压区间dp
我还以为我状压很好。。。。。。 噗!!! 果然我区间很差。。。 f[i][j][s]表示i~j段,合并后的状态为s所得的最大收益 枚举i,j,k,s. f[i][j][s<<1]=max(f[i][j][s<<1],f[i][k−1][s]+f[k][j][0]) f[i][j][s<<1|1]=max(f[i][j][s<<1|1],f[i][k−1][s]+f[k][j][1])
2017-08-15 17:32:51 415
原创 bzoj 2242 [SDOI2011]计算器 快速幂+扩展欧几里得+BSGS
1:快速幂 2:exgcd 3:exbsgs,题里说是素数,但我打的普通bsgs就wa,exbsgs就A了......(map就是慢).....#include#include#include#include#include#include#define LL long longusing namespace std;map pp;map bo;LL a,b,c;
2017-08-15 06:30:22 503
原创 poj 3243 扩展BSGS
每次把gcd(a,c)提到前面,知道a,c互质,然后就是普通BSGS了#include#include#include#include#include#define LL long longusing namespace std;struct hashtable{ static const int N=577399; int tot,hash[N+10],key[N+5
2017-08-14 21:18:29 447
原创 bzoj 3239 poj 2417 BSGS
BSGS算法,预处理出ϕ(c)−−−−√\sqrt{\phi(c)}内的a的幂,每次再一块一块的往上找,转移时将b乘上逆元,哈希表里O(1)查询即可#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<map>#define LL long longlo
2017-08-14 10:42:52 287
原创 51nod 1135 原根 就是原根...
%%% dalao Orz ,筛素数到sqrt(n),分解ϕ(p)\phi(p),依次枚举判断就好了#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#define N 100000#define LL long longusing namespace std;LL
2017-08-14 08:44:13 355
原创 bzoj 2005 能量采集 莫比乌斯反演
我们要求的是∑ni=1∑mj=1(2×gcd(i,j)−1)\sum_{i=1}^{n}\sum_{j=1}^{m}{(2\times gcd(i,j)-1)} 化简得2×∑ni=1∑mj=1gcd(i,j)−n×m2\times\sum_{i=1}^{n}\sum_{j=1}^{m}{gcd(i,j)}-n\times m 所以我们现在只需要求出∑ni=1∑mj=1gcd(i,j)\sum_{
2017-08-13 15:15:04 342
原创 约会 倍增lca
题意:一棵树,给两个点,求树上有多少点到他俩距离相等倍增lca,分好多情况讨论。。#include#include#include#include#include#define N 100500using namespace std;int e=1,head[N];struct edge{ int u,v,next;}ed[2*N];void add(int u
2017-08-13 13:59:50 294
原创 bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
n>=m,所以就变成了求ϕ(m!)∗n!/m!\phi(m!)*n!/m! 而ϕ(m!)=m!∗(p−1)/p......\phi(m!)=m!*(p-1)/p......p为m!的素因子,即为m内的所有素数,问题就转化为了求n!∗(p−1)/p......n!*(p-1)/p...... 只需要预处理出素数,阶乘,逆元即可#include<cstdio>#include<cstring>#
2017-08-13 07:21:50 240
原创 bzoj 2822 [AHOI2012]树屋阶梯 卡特兰数
因为规定n层的阶梯只能用n块木板 那么就需要考虑,多出来的一块木板往哪里放 考虑往直角处放置新的木板 不管怎样,只有多的木板一直扩展到斜边表面,才会是合法的新状态,发现,这样之后,整个n层阶梯就被分成了i层和n-1-i层的阶梯,即 f(n)=∑i=0n−1f(i)×f(n−1−i)f(n)=\sum_{i=0}^{n-1}{f(i)\times f(n-1-i)} 就是卡特兰数!!!,需要
2017-08-12 20:38:49 375
原创 bzoj 1485 [HNOI2009]有趣的数列 卡特兰数
把排好序的序列看成一对对括号,要把他们往原数列里塞,所以就是括号序合法方案数 即为卡特兰数 f(n)=Cn2nn+1f(n)=\frac{C_{2n}^n}{n+1} 求的时候为避免除法,可以O(n)计算每个素数出现次数,最后乘起来,打完之后发现其实根本不用快速幂……#include<cstdio>#include<cstring>#include<iostream>#include<a
2017-08-12 20:31:08 300
原创 bzoj 4173 打表???
没有任何思路,打表发现ans=phi(n)*phi(m)*n*m %%% popoqqq Orz 然而并没有看懂……#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#define mod 998244353llusing namespace std;long
2017-08-12 17:11:10 346
原创 bzoj [Noi2002]Savage 扩展欧几里得
枚举m,n^2判断对于野人i,j,(H[i]+x*S[i])%m==(H[j]+x*S[j])%m,且x化简得:(S[i]-S[j])*x+y*m=C[j]-C[i],扩欧解x最小值,判断#include#include#include#include#include#define N 18using namespace std;int H[N],S[N],O[N],n,
2017-08-12 16:22:02 433
原创 bzoj 3505 [Cqoi2014]数三角形 组合
ans=所有的三点排列-共行的-共列的-斜着一条线的斜着的枚举每个点和原点的gcd,反过来也可以,还能左右,上下挪#include#include#include#include#includelong long ans,line,row,tot,n,m;int gcd(int x,int y){return y==0?x:gcd(y,x%y);}int main(){ s
2017-08-12 15:14:20 274
原创 bzoj 2820 莫比乌斯反演
搞了一整个晚自习,题解详见 hzwer Orz 目前感觉没有思路….还是要多切题#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=10000000;long long ans,f[N+5];int
2017-08-12 07:25:11 318
原创 Travel 并查集
题意:给一个图,若干询问,每次询问只经过边权并查集啊,对询问和边排序,直接合并,维护size,查询#include#include#include#include#include#define N 105000using namespace std;int fa[N],size[N],n,m,k;struct data{ int u,v,w;}d[4*N];bo
2017-08-11 18:51:51 281
原创 bzoj 2730 HNOI2012 矿场搭建 tarjan
tarjan求割点,每个点双如果不连割点,内部应建两个,连着一个割点,应建一个,连着多个,不用建#include#include#include#include#include#define N 1500using namespace std;int n,m,cnt,num,tot,ans1,cosmos,bo[N];long long ans2;int dfn[N],l
2017-08-10 21:47:57 327
原创 bzoj 2763 [JLOI2011]飞行路线 Dijikstra 分层
k每一个图按原图建边,相邻两图中建边权为0的边补一补dj,好像我以前觉得dj特别难,hhhhh#include#include#include#include#include#include#define N 500500using namespace std;int n,m,k,S,T;struct point{ int st,dis; bool o
2017-08-10 20:13:55 312
原创 Evensgn 剪树枝 树规
f[x][0]表示与其父边相连的连通块内没有黑苹果的方案数,f[x][1]则表示有黑苹果,如果父边被切断,相当于没有黑苹果初始化时,假设切掉父边,f[x][0]=1,f[x][1]=0;递归回时转移,每递归回一个子树,f[x][1]=f[x][1]*f[v][0]+f[x][0]*f[v][1],f[x][0]=f[x][0]*f[v][0];最后处理完每个子树时,若其为黑苹果
2017-08-10 15:54:27 707
原创 坑
3个月联赛不再着急往前去了,看一看自己需要去填的坑0 不会 1 会,不熟||难想2 熟&&好想1.数学:扩展欧几里得,这个前一阵复习了复习,不过好像又记不太清了,其实就是推式子,见题就打吧。(1(线筛、求单个)欧拉函数,线筛素数,欧拉定理,还是比较熟的,考场上也现推过几次,要更熟练(11Lucas,基本忘了,一定要补。(0斐波那契,矩阵乘优化,降到log,(2
2017-08-09 18:01:46 383 1
原创 大暑假集训 第二阶段
8.4T1打了个蠢蠢的莫队,又tm被块长卡了5分,woc,大众分225,老子220T2数学+dp??? Md又没想到dp,直接50分状压怼上T3,明明看过这种题好不好,想什么呢???75分暴力(真的奶死自己了,到现在还没有过...QAQ)今天暴力分给的还是很足的,要不就又爆零了,害怕8.5上午补了补主席树,觉得自己会了... 下午lgl dalao来讲了计算几
2017-08-09 17:03:04 407
原创 bzoj 2428 均分数据 模拟退火
模拟退火按照自己的思路打了,结果WA,发现退火最关键的就是初温,降温,和修改次数,这个题还在外层带了一个循环,骚气#include#include#include#include#include#define inf 0x3f3f3f3f3f3f3f3fllusing namespace std;double av,ans,minn=inf,sum[30];int n,
2017-08-09 16:44:31 354
原创 hdu 2899 Strange fuction 模拟退火
求 F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 模拟退火,每次根据温度随机下个状态,再根据温度转移#include#include#include#include#include#define inf (double)0x3f3f3f3f3f3f3f3fllusing namespace std;double y;double cal(
2017-08-09 06:38:15 316
原创 bzoj 3680 吊打xxx 模拟退火
第一道模拟退火重心嘛,就是要找到一个点,使其到所有点距离*该点权值和最小思路:初始化一个T,mint,当T大于mint时,每次随机一个解,如果解比当前解优,直接转移,否则,以某概率(与T正相关)转移,并不断降温,最后向四周爬山感觉思路比较清晰,但好多细节不太明白,比如初始化的T,mint,以及退火的速度,前后改了几十遍吧。还是要多做题,找感觉......#include#incl
2017-08-08 21:35:48 386
原创 bzoj 1210 [HNOI2004] 邮递员 插头dp
插头dp板子题??搞了我一晚上,还tm全是抄的标程。。还有高精,哈希混入,还是我比较弱,orz各种dalao有不明白的可以去看原论文。。#include#include#include#include#include#define base (int)1e9#define maxh 2650using namespace std;int n,m;int get(i
2017-08-08 17:38:16 308
原创 与非 乱搞233
题目大意: 初始时你有一个空序列,之后有N个操作。 操作分为一下两种: 1. x:在序列末尾插入一个元素x(x=0或1)。 2.LR:定义nand[L,R]为序列第L个元素到第R个元素的与非和,询问nand[L,L]^nand[L,L+1]^nand[L,L+2]^……^nand[L,R]。 Nand就是先与,再取反 f[n]=nand(1,i); sum[n]=∑ni=1f(i)\su
2017-08-08 17:22:47 278
原创 USACO JAN14 奶牛冰壶运动 凸包+判定
满足条件的一定是在凸包内的,直接判断恬不知耻的加了特判,2333#include#include#include#include#include#define N 50050using namespace std;int n,ss[N],top,topa,topb,ans1,ans2;bool bo=0;struct point{ double x,y;}a[N],b
2017-08-08 07:44:18 522
原创 bzoj 2829 计算几何
将每张卡四个角的圆心跑graham出正常凸包,再加上一个圆就好了。要注意先输入的是x,找点时三角函数瞎换就过了。。#include#include#include#include#include#define N 40050#define PI 3.1415926535898#define exp 1e-8using namespace std;int top,tot,n
2017-08-08 07:41:38 491
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人