自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 bzoj4402: Claris的剑

第一眼——DP,然而本质不同。。。若每种剑只取字典序最小的,可表示为:1 +  若干个(2 1)+ 2 + 若干个(3 2)+3 +……+k (+k-1)然后,设剑最大宽度为k,必有序列1……2……3…………k…用组合数将剩下的“锯齿”放入“盒子”,加一个“不作为剑的部分盒子”。然后线性求n!逆元,然后就没有然后了。#include #include#define ll lon

2016-03-28 19:54:26 730

原创 bzoj4238: 电压

依题意:对电阻X,若可以选择使X不流过电流,当且仅当所有奇环都包含X且所有偶环都不包含X。利用Dfs搜索树,如果点a搜到的边的端点b已经走过,说明点b为a的祖先,利用深度差可求得环上点的个数。#include#include#define N 100005#define M 400005using namespace std;int n,m,l=1,Ans,tot[2],

2016-03-25 18:11:13 613

原创 bzoj3240: [Noi2013]矩阵游戏

看题目名:矩阵乘法。。。有公式:x^a=x^(a%phi(p)+phi(p)) (mod p)因为np,mp互质,可令n=n%phi(p),m=m%(phi(p)).同一行内可构造矩阵A,设F[i][1]*A'=F[i][m]。行末到下一行首可构造矩阵B,F[i][1]*B'=F[i+1][1]。可求得Ans。#include#include#include

2016-03-19 16:45:58 691

原创 bzoj2152: 聪聪可可

这题显然点分治DP?我不会告诉你我还不会点分治)先O(n)求Dfs序,然后倒序dp[i][j]表示i及i的子树中的点到i距离%3为j的方案数。最后对每个点,O(1)计算经过它的路径为3的倍数的方案数,得到Ans。求Ans与n*n的Gcd,约分即可。//一开始写的有点乱,只好各种*2+n 。。。#include #include#define N 80000using name

2016-03-19 16:44:10 465

原创 bzoj4037: [HAOI2015]Str

#include#include#include#define mo 998244353#define ll long longusing namespace std;int n,m,s[1005];char c[1005];struct Matrix{ll M[7][7];}X,k[15][1005],dp[1005],t;Matrix operator*(Matrix a,Ma

2016-03-18 17:00:58 739

原创 bzoj2154: Crash的数字表格

依题意:Ans=∑ni=1∑mj=1Lcm(i,j)=∑ni=1∑mj=1id∗jd∗dAns=\sum_{i=1}^{n}\sum_{j=1}^{m}Lcm(i,j)=\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{i}{d}*\frac{j}{d}*d⇒Ans=∑min(n,m)d=1d∗∑⌊nd⌋i=1∑⌊md⌋j=1i∗j|gcd(i,j)=1\Rightarrow An

2016-03-15 19:56:02 634

原创 bzoj2671: Calc

设k=gcd(a,b),a=x*k,b=y*k。 x*k+y*k=(x+y)*k整除x*y*k*k。 因为gcd(x,y)=1,gcd(x+y,x)=gcd(x+y,y)=1,所以x+y整除k。  Ans=∑⌊n√−1⌋y=1∑y−1x=1[gcd(x,y)=1]⌊ny∗(x+y)⌋\ Ans=\sum_{y=1}^{\left \lfloor \sqrt{n}-1 \right \rfloo

2016-03-15 15:19:28 580

原创 bzoj3192: [JLOI2013]删除物品

听说树状数组又短又快,于是刷了一道。看完1~5,擦,神题呀!一看6.。。。首先把2堆顶和顶对起来,转换成数组,记录左堆顶,然后从最大的开始拿,每次用树状数组得到需要的步数。细节还是蛮多的。#include #include#includeusing namespace std;int a[100005],b[100005],c[100005],n1,n2,l;long lon

2016-03-14 19:11:56 581

原创 bzoj1875: [SDOI2009]HH去散步

又一道矩阵乘法加速的题目。看到N ≤ 20,M ≤ 60,t ≤ 2^30的数据范围,很容易想到用矩阵乘法。本题不能立刻走回头路,所以可以以边为状态,把无向边拆成2条有向边a[i]表示目前在第i条边终点,b[i][j]表示第i条边是否接着j,先把起点为A的a[1]=1,然后a*b^t。统计终点为B的a[i]值。别忘%。。。#include#include#define S 200usin

2016-03-14 17:41:03 690

原创 bzoj2326: [HNOI2011]数学作业

一开始一直不理解矩阵乘法是什么东西。。。现在有一点自己的想法。对于如f(i+1)=a*f(i)+b,可以构造一个矩阵b,使矩阵a[i]*矩阵b=矩阵a[i+1]。然后利用矩阵快速幂加速。这道题对于不同的位数有不同的递推式。设位数为k,f[i+1]=10^k*f[i]+i+1,可构造3*3的矩阵:10^k,1,1  0,1,1  0,0,1(好像不太对。。。)。#include

2016-03-14 11:17:44 431

原创 bzoj2565: 最长双回文串

回文串。。。Manachar!将Manachar的p数组转换为l[i](i为右端点往左最长的回文串),r[i](同理),然后O(n)搜一遍求最值即可。p.s.Manachar的核心是枚举中心,利用之前的回文串的对称性,将当前中心对称到之前的中心。#include #include#includeusing namespace std;char s[300000]

2016-03-11 20:55:42 574

原创 bzoj4034: [HAOI2015]T2

初学树剖。。。听说是裸题。。。然后就做了。。。注意某个节点和它的子树DFS序相连,只要记住它子树最大的DFS序即可进行子树修改。#include#include#define N 2000000#define ll long longusing namespace std;int n,m,x,y,l,p,q;ll s[N*5],up;struct edge{int to,ne

2016-03-10 07:22:20 450

原创 bzoj3875: [Ahoi2014]骑士游戏

一看这题,不是记忆化吗!?再看,有环很么办。。。SPFA!用SPFA动规,一开始用dp[i]存当前DP的状态,a[i]存答案。用dp[i]更新杀死后会出现i的点,更新完之后存入a[i]。a[i]与dp[i]的差就是更新减少的体力值。感觉没说清楚。。。#include #include#define N 300005#define S 10000005#define in

2016-03-10 07:01:36 756

原创 bzoj1043: [HAOI2008]下落的圆盘

这道题题目很短,看一下数据范围n对于圆盘i,枚举它上面的圆盘,计算圆盘i被它们覆盖的弧的起始位置与终止位置,然后线段覆盖可得圆盘i被覆盖的周长,就可得答案。注意圆外离与内含的情况。#include#include#include#include#include#define pi 3.1415926535897932384626433832795using namespac

2016-03-03 10:02:14 718

原创 bzoj3190: [JLOI2013]赛车

这道题A得太艰难了!WA了十多次。。。细节太多了。。。o(╯□╰)o(我不会告诉你是因为没开long long) 说好的赛车,还能有多个获奖,要是起跑线一样就全获奖?! 为了看懂题意,想了好久。原来并列最前,也算获奖,还有可能出现两辆车同地同速的情况! 考虑一般情况,就是求半平面交。但是看了黄学长的代码,发现可以简化。 先对赛车速度从小到大排序,用栈维护当前能拿奖的车。对于新来的车,如果追上

2016-03-02 17:00:21 1000 2

原创 bzoj1913: [Apio2010]signaling 信号覆盖

WA了好久,发现没开long long。n个房子选3个有n*(n-1)*(n-2)/6种方案。考虑枚举3个点,超时。考虑对于4个点,有2种位置关系:可构成凸四边形或凹四边形。对于每个凸四边形,过3点可以构成4种圆,有两种可以包围另一个点,对于每个凹四边形,有一种可以包围另一个点。答案就等于(凸四边形个数*2+凹四边形个数)/总方案数。显然凸四边形个数+凹四边形个数=四边形个数=n*(n

2016-03-02 08:21:54 1750

原创 bzoj2823: [AHOI2012]信号塔

正在计算几何入门中。。。。。。这道题就是求最小圆覆盖。题目讲了这么多,只有6个字对于1个点,它的最小覆盖圆是一个点。对于2个点,它们的最小覆盖圆是以它们为直径的圆。首先考虑已知i个点被最小的圆O覆盖,若第i+1个点在圆O内,显然这i+1个点的最小覆盖圆也是O。若第i+1个点不在圆O内,设圆O1是i+1个点的最小覆盖圆。可以证明这个点在圆O1上。然后对于点i+1,不断加入1~i的点,

2016-03-01 10:41:26 835

空空如也

空空如也

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

TA关注的人

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