自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YihAN_Z

ただのあほです

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

原创 BZOJ 1004 [HNOI2008]Cards Burnside引理

题目大意:给出n张牌,分别染a张红色,b张蓝色,c张绿色(n=a+b+c),给出m个置换,问不同的染色方案。置换群中的染色方案问题可用Burnside引理解决。Burnside引理可以借助百度百科 中应用的例1理解,或者参考白书理解。现在要求出不动点的个数。每个置换中都有若干个循环,不动点在一个循环中的颜色必须相同。可以转化成背包问题,将每个循环看作是一个物品,物品的重量为循环元素个数。#inclu

2017-03-29 16:48:10 496

原创 为什么p为质数时在模p意义下(p-1)!的逆元等于p-1

证明:当p为质数时,(p-1)!的逆元为p-1。若(p-1)!的逆元为p-1,则有

2017-03-28 16:11:09 1704

原创 BZOJ 1005 [HNOI2008]明明的烦恼 Prufer序列 Python

题目大意:给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树?Prufer序列详见百度百科这样就可以将问题转化成组合问题度数为d的点会在序列中出现d-1次 记rest为数列中的剩余位置,剩余位置一定放不限制度数的点,暂时将不限制度数的点视为相同元素 全部方案为(n-2)!,将同一元素不同排列去重,即除以(d-1)! 记不限制度数的点的个数为cnt。不

2017-03-27 11:49:30 508

原创 BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化

设状态f(i)表示将前i个玩具装箱后的最小费用,sum(i)表示前i个玩具的长度(c值)和 易得状态转移方程 其中 0 < j < i 为了简化式子,记 将上式代入,开方1 则对于所有可能的 记2 将上式移项后代入,得到 现在要使b最小,k不变,若固定x,则y越小,b越小,所以维护一个下凸壳。 可以看出x与查询斜率k均单调递增,维护一个有关斜率的单调队列即可。#inclu

2017-03-23 21:52:27 633 1

原创 BZOJ 2618 [Cqoi2006]凸多边形 半平面交

#include #include #include #define N 1505using namespace std;const double eps=1e-6;int dcmp(double x) { return fabs(x)0 : x>-eps ? 1 : -1; }struct Point { double x,y; Point(double _x=0,

2017-03-22 21:25:40 418

原创 BZOJ 2342 [Shoi2011]双倍回文 Manacher

题目大意:给出一个串,求最长双回文串。其中定义s’为s的镜像串,则s+s’是一个回文串,当串ss=s+s’+s+s’时称ss为双回文串。首先想到用manacher处理出每个字符处的最长回文半径。由于不可能存在两个奇数长度的回文串拼在一起的双回文串,所以只有以’#’为中心的回文半径是有用的。记f(i)为以串s中的位置i的后面的位置为对称轴,最长的回文半径。对于一个对称轴x,我们要找到一个最长的串s用l

2017-03-22 15:54:50 487

原创 BZOJ 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘 凸包

题目大意:给出n个点,求包围所有点的多边形的最小周长。裸凸包,练手题。注意极角排序从下标为2的位置开始排…#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#define N 5005using namespace std;inline int sq(int x) { return x*x; }

2017-03-21 14:45:43 373

原创 BZOJ 1718 [Usaco2006 Jan] Redundant Paths 分离的路径 双联通分量

题目大意:给出n个点,m条边的图,问最少加入多少边可以使图中任意两点至少有两条不相交的路径。双联通分量缩点,将图变成一棵树,叶子之间互相连可以保证加的边最少,答案为(叶子节点+1)/2双联通分量和强连通分量写法很像,不会双联通分量的童鞋类比一下强连通分量即可。#include <cstdio>#include <cstring>#include <algorithm>#define N 500

2017-03-21 10:55:32 709

原创 BZOJ 2081 [Poi2010]Beads 哈希

题目大意:给出一个长为n的数字串,将串分块,块的大小可为[1,n]内的任意整数。每块中的串必须完整,块内的串可以翻转,求不同的串的个数枚举块大小哈希暴力就好。根据调和级数时间复杂度为O(nlogn) 这题卡模数,自己试了一些都不行 最后直接照alone_wolf抄了一波 BASE=2333,MOD=98754321 可以过#include <cstdio>#include <map>#d

2017-03-21 09:38:44 402

原创 BZOJ 3239 Discrete Logging BSGS

题目大意:对于,给定a,b,p,求x,其中p为质数。裸Baby-step-Giant-step这里写的还不错#include <cstdio>#include <algorithm>#include <cmath>#include <map>using namespace std;typedef long long LL;LL f_pow(LL x,LL y,LL MOD) {

2017-03-20 19:09:46 325

原创 BZOJ 1101 [POI2007]Zap 莫比乌斯反演

题目大意:求看到gcd(i,j)==d 首先想到把i,j同时除d,变成统计互质的数的个数。 令题目转化为求 想统计众多式子中等于1的个数,可以想到莫比乌斯函数的一个性质 (这里的d不同于题目中的d,题目中的d已经没用了)令上式中的,则代入原式有 将条件转换一下,得到 将式子由枚举i,j转换成枚举d,得到 而(a’/d)与(b’/d)的取值在一定区间内不会发生变化,分块预处理,

2017-03-20 16:51:52 357

原创 POJ 2187 Beauty Contest 旋转卡壳

题目大意:给定n个点,求距离最远的两个点之间的距离,输出最远距离的平方旋转卡壳模板题。#include <cstdio>#include <algorithm>#include <cstring>#define N 50005using namespace std;inline int sq(int x) { return x*x; }struct Point { int x,y

2017-03-19 22:17:55 327

原创 BZOJ 1297 [SCOI2009]迷路 递推 矩阵乘法

题目大意:有向图有 n(n<=10) 个节点,有若干条有向边,经过一条边需要花费一些时间。从节点 0 出发,必须恰好在 T(T<=1000000000) 时刻到达节点 N-1。 总共有多少种不同的路径? 注意:不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。若知道第i秒的方案,可以推出后面10秒内的部分方案。设第i秒的经过节点j的方案数为f(i,j),则f(i,j)=sigma{f(i-k

2017-03-17 16:46:12 373

原创 BZOJ 3832 [Poi2014] Rally 拓扑排序

题目大意:给出一个DAG,要求删掉一个点之后使最长路最小,求删掉的点和最长路长度。给出题人跪了orz先考虑不删点的情况。想求一个图的最长链,在DAG应尝试DP,但起点、终点都不能固定,怎么转化呢?既然会求固定起点与终点的最长链,就强制固定一个点让其在此开始或结束,因此想到设置一个超级源S与超级汇T,求S到T的最长链后减2即为答案。下面考虑删除点。枚举每一个点将其删除,求得图中最长链,就

2017-03-17 10:15:44 605

原创 BZOJ 3143 [Hnoi2013]游走 高斯消元

题目大意:给定一个n个点m条边的无向连通图。在该图上进行随机游走,起点为1号顶点,每一步以相等的概率随机选择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数,到达N号顶点时游走结束,总分为所有获得的分数之和。对这M条边进行编号,使获得的总分的期望值最小。每条边随意编号,自然是使走得多的边的编号尽量小。问题转为求每条边的期望次数,而边走的次数又是由点转移的,首先要求出每个点

2017-03-17 09:05:05 491

原创 BZOJ 2946 [Poi2000]公共串 后缀自动机

题目大意:给出几个由小写字母构成的单词,求它们最长的公共子串的长度。后缀自动机练手题。后缀自动机原理详见CLJ的课件将一个串建成后缀自动机,其他串放到自动机里去匹配,对于每一个串在每一个状态处记录一下此串在本状态下匹配的最长长度。对于每一个状态,将所有串匹配的最长长度取一个最小即所有串在当前状态下最长的公共子串,用这个长度更新答案即可。需要注意的地方是匹配到一个位置后要用其更新parent。#inc

2017-03-17 07:38:26 388

原创 BZOJ 1033 [ZJOI2008]杀蚂蚁antbuster 模拟

Warning!本题解与代码没有任何参考意义题目大意:杀蚂蚁。题目分析:小心别让蚂蚁杀了。 请欣赏我又长又屎的代码///Enter the Gamevoid Run_Game();main() {Run_Game();}///Dim Basic Object#include <cstdio>#include <cmath>using namespace std;inline int

2017-03-15 18:25:18 624

原创 BZOJ 2132 圈地计划 最小割

题目大意:有一个n*m的矩阵,在矩阵中填1或2会得到不同的权值。相邻的两个格子数字不相同会得到额外的权值,求最大权值最小割模型:同一事件两种选择获得不同收益,一定条件下有额外收益,求最大收益。在本题中,相邻格子填不同数字会获得额外收益,于是将矩阵黑白染色(i+j&1),每个黑色格子与S连边代表填1,与T连边代表填2,白色反过来。在相邻的两点之间连一条容量为收益的边。跑一边最大流求最小割用总和减去即为

2017-03-13 18:26:46 308

原创 BZOJ 2696 航班安排 费用流

题目大意:K架飞机,N个机场,以0..N-1编号,其中0号为基地机场,每天0时刻起飞机从该机场起飞,并不晚于T时刻回到该机场。M个包机请求,每个请求为在s时刻从a机场起飞,在恰好t时刻到达b机场,可以净获利c。机场之间来往有花费。求最大收益。将每一个请求拆成两个点,在两个点之间连一条费用为负的完成请求x的利润,流量为1的边,表示完成请求获得了利润且只能完成一次。在0时刻可以选择完成任意一个请求x,若

2017-03-13 14:12:48 457

原创 BZOJ 3931 [CQOI2015]网络吞吐量 最短路+最大流

题目大意:每个点有流量限制vi,只有在从起点到终点的最短路径上的边才可以走,求最大流量。将每个点分成入点与出点,入点与出点连一条vi的边(除起点与终点),最短路径上的边的流量为INF。1.网络流建图时若边不从0开始存一定要注意异或找反边有可能是错误的 2.数组又开小了QAQ#include <cstdio>#include <cstring>#include <queue>#include

2017-03-13 08:59:19 333

原创 BZOJ 2595 [Wc2008]游览计划 SPFA+斯坦纳树 or 插头DP

题目大意:有n*m的方格,每个格子有一个非负权值v(i,j),现要求选出若干个格子,使得权值为0的格子联通且选出格子的数字和尽量小。SPFA算法的优化及应用中的P20,3.2在一类状态转移阶段性不明显的动态规划中的应用。这里暂不介绍插头DP的做法。#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#d

2017-03-08 18:51:26 397

原创 BZOJ 1026 [SCOI2009]windy数 数位DP

题目大意:求在[l,r]中不含前导零且相邻两个数字之差至少为2的正整数的个数数位DP 我的代码写的这么有道理自己慢慢看吧#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int DP(int x) { if(!x) return 0; char s[50]; sprin

2017-03-08 14:35:37 343 1

原创 BZOJ 2226 [Spoj 5971] LCMSum 数论

题目大意:求 (lcm为最小公倍数) 将lcm转化一下,把常量提到循环外,变为 枚举gcd,将式子化为 这里对循环里面的i乘以d,但对于限制i的条件来说就是除以d 对于里层的sigma求和,可以利用欧拉函数的性质:小于n的质数的和为n*phi(n)/2 答案为 线性预处理O(n),询问O(1)#include <cstdio>#include <cmath>#define

2017-03-07 22:53:12 473

原创 BZOJ 2705 [SDOI2012]Longge的问题 数论

题目大意:求设d=gcd(i,n),将gcd相同的放在一起计算,将式子从枚举i转化成枚举d。当满足表达式exp时[exp]为1,否则为0,则原式转化为 不容易求出gcd等于d的数的个数,但是可以求出gcd等于1(也就是互质)的数的个数,将i除以d,变为 #include <cstdio>#include <cmath>using namespace std;typedef long l

2017-03-07 17:20:17 273

原创 BZOJ 1257 [CQOI2007]余数之和sum 数论

题目大意:求将取余变为除法 n*k直接计算,k/i至多有2*sqrt(k)种取值,对于每个值将i求和计算。时间复杂度O(sqrt(k))#include <cstdio>#include <algorithm>using namespace std;long long n,k,ans;int main() { scanf("%lld%lld",&n,&k); long lo

2017-03-07 16:18:17 422

原创 BZOJ 2724 [Violet 6]蒲公英 分块

题目大意:有n个数,给出m个询问,求[l,r]的众数,强制在线经典的区间众数问题。众数不满足区间加法,线段树这种数据结构就失去了作用。那么就暴力统计每一个区间的众数,时间复杂度O(mn),TLE于是采用分块的思想优化,将区间分成sqrt(n)块,预处理每个块的信息,包含一整块的直接利用预处理的信息;不在一整块的暴力统计。众数只可能产生在 区间内所有完整的块合在一起的大块的众数 与 不完整的块的数

2017-03-01 11:08:52 423 1

空空如也

空空如也

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

TA关注的人

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