08 2015 档案

摘要:自己封装的FastIO类,效率虽有所损失,不过实用性提高很多。测试,写10000000个整数(86M):printf 2.7scout 27sFastIO 1s测试,读10000000个整数(86M):scanf 1.8scin 15sFastIO 1s 利用c++的可变参数模板(c++1... 阅读全文
posted @ 2015-08-31 20:45 jklongint 阅读(2145) 评论(0) 推荐(0)
摘要:题意:给一个字符串,求它的最小子串,使得原串是通过它重复得到的字符串的一个子串。思路:先求最小长度,最小循环长度可以利用kmp的next数组快速得到,求出长度后然后利用字符串最小表示法求循环节的最小表示即可。#pragma comment(linker, "/STACK:10240000")#inc... 阅读全文
posted @ 2015-08-27 00:09 jklongint 阅读(210) 评论(0) 推荐(0)
摘要:题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金。求总共最多可以产生多少的奖金流动思路:每次选择没有下级并且有上级的员工a,令它的上级为b,那么让b给a发奖金,之后把a和b从树中删掉,这样处理直到不存在这样的员工a。也就是说每次让叶子员工接... 阅读全文
posted @ 2015-08-26 17:15 jklongint 阅读(152) 评论(0) 推荐(0)
摘要:大致题意:在二维平面上,给一些圆形岛屿的坐标和半径,以及圆形船的位置和半径,问能否划到无穷远的地方去思路:考虑任意两点,如果a和b之间船不能通过,则连一条边,则问题转化为判断点是否在多边形中。先进行坐标变换,将船变到原点,以从起点到每个点的有向角作为状态,每条边的边权为这条边对有向角的改变量,那么点... 阅读全文
posted @ 2015-08-26 06:52 jklongint 阅读(204) 评论(0) 推荐(0)
摘要:题意:无源无汇有上下界的可行流 模型思路:首先将所有边的容量设为上界减去下界,然后对一个点i,设i的所有入边的下界和为to[i],所有出边的下界和为from[i],令它们的差为dif[i]=to[i]-from[i],根据流量平衡原理,让出边和入边的下界相抵消,如果dif[i]>0,说明入边把出边的... 阅读全文
posted @ 2015-08-26 03:10 jklongint 阅读(179) 评论(0) 推荐(0)
摘要:题意:给一些字符串的集合S和整数n,求满足长度为n只含charset = {'A'、'T‘、'G'、'C'}包含的字符不包含S中任一字符串的字符串的种类数。思路:首先对S建立ac自动机,考虑向ac自动机中的每种状态后加charset中的字符,如果终态不为“接受状态”,也就是不与S中的任一字符串匹配,... 阅读全文
posted @ 2015-08-25 03:22 jklongint 阅读(286) 评论(0) 推荐(0)
摘要:题意:给n个点,m条边,每次只能沿边走,花费为边权值,求从1出发经过所有其它点≥1次最后回到1的最小花费。思路:状压DP。先用Floyd得到任意两点间的最短距离,转移时沿两个点的最短路转移。此时的状态表示为dp[i][j]:“落脚点集合为i,最后停在j”的方案数;而不是“访问过的点的集合为i,最后停... 阅读全文
posted @ 2015-08-23 05:00 jklongint 阅读(266) 评论(0) 推荐(0)
摘要:抽象后的题意:给一个不超过30个点的图,A从中选不超过5个点涂红绿两种颜色,B用黑白两种颜色把剩下的涂完,任意一条边两端的颜色不同,求每种颜色至少用涂一次的方案数思路:枚举A涂的点的集合,将原图分成两个子图P和Q,P和Q互相不影响,因为涂的颜色不同。考虑A在P中涂颜色,由于一条边的两端的颜色不能相同... 阅读全文
posted @ 2015-08-23 04:32 jklongint 阅读(484) 评论(0) 推荐(0)
摘要:思路:枚举3个点,计算第4个点并判断是否存在,复杂度为O(N3logN)或O(N3α)考虑矩形的对角线,两条对角线可以构成一个矩形,它们的长度和中点必须完全一样,于是将所有线段按长度和中点排序,那么所有可能构成矩形的线段(对角线)一定在连续的区间内,顺序枚举即可,复杂度O(N2logN)。 1 ... 阅读全文
posted @ 2015-08-22 00:01 jklongint 阅读(193) 评论(0) 推荐(0)
摘要:裸的区间第k大问题,划分树搞起。#pragma comment(linker, "/STACK:10240000")#include #include #include #include #include #include #include #include #include #include #i... 阅读全文
posted @ 2015-08-21 22:32 jklongint 阅读(195) 评论(0) 推荐(0)
摘要:题意:给一棵树,每条边有一个权值,求满足u到v的路径上的异或和为s的(u,v)点对数思路:计a到b的异或和为f(a,b),则f(a,b)=f(a,root)^f(b,root)。考虑dfs,一边计算当前点到根的f值,用一个数组记录当前遍历过的点中到根的异或值为i的点的个数,那么答案可以O(1)算出来... 阅读全文
posted @ 2015-08-21 11:16 jklongint 阅读(487) 评论(0) 推荐(0)
摘要:题意:编号1-n的小朋友依次围成一圈,给定目标状态每个小朋友左右两边的小朋友编号,每次可以选择编号为[b1,b2,...,bm]的小朋友,作1次轮换,bi是任意编号,代价为m。求变成目标状态所需的最小代价。思路:有置换的知识,任意一个置换可以写成若干循环的乘积,那么每次选择一个大小大于1的循环,把这... 阅读全文
posted @ 2015-08-21 11:02 jklongint 阅读(222) 评论(0) 推荐(0)
摘要:题意:给一个有向图,从任意点开始,最多走m步,求形成的图案总数。思路:令dp[i][j]表示走j步最后到达i的方法数,则dp[i][j]=∑dp[k][j-1],其中k表示可以直接到达i的点,答案=∑dp[i][j]。关键在于如何减少状态转移的时间,考虑用矩阵加速。构造矩阵:D =,其中a[i][j... 阅读全文
posted @ 2015-08-21 01:36 jklongint 阅读(512) 评论(0) 推荐(1)
摘要:题意:将一个数拆成若干数的和使得它们的最小公倍数最大思路:一个数x可以拆成p1k1+ p2k2 +... +pnkn形式,其中pi是质数或1。对于最小公倍数最大的情况,一定可以表示成这种形式。令dp[i][j]表示考虑前j个质数来构成i的最大公倍数,那么可以得到如下转移方程:dp[i][j]=max... 阅读全文
posted @ 2015-08-20 12:02 jklongint 阅读(166) 评论(0) 推荐(0)
摘要:题意:求∑|i%a-i%b|,0≤i#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace... 阅读全文
posted @ 2015-08-20 01:33 jklongint 阅读(188) 评论(0) 推荐(0)
摘要:题意:给一棵树,删边和加边的代价都为1,求把树变成一个圈所花的最小代价。思路:对原树进行删边操作,直到将原树分成若干条链,然后通过在链之间添加边形成圈,由于删边和加边一一对应,且最后需要额外一条边连成圈,所以有:最小代价=(最小链数-1)*2+1=最小链数*2-1。令dp[i][0]表示i不和i的父... 阅读全文
posted @ 2015-08-20 00:20 jklongint 阅读(310) 评论(0) 推荐(0)
摘要:题意:求方程x2-Dy2=1的最小正整数解思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节。具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8871535当d为完全平方数时无解将√d表示成连分数的形式,例如:当d不为完全平方数时,√d为无理数,... 阅读全文
posted @ 2015-08-19 23:07 jklongint 阅读(430) 评论(0) 推荐(0)
摘要:经常看到别人的论文里各种优美的图,没想过它们是怎么来的,前两天也是在看论文的时候被推荐了一款画图软件graphviz,稍微了解了一下这个画图软件,据说是贝尔实验室的几位牛人开发出来的,试了一下觉得很不错。只要输入对象间的关系,定义它们的属性,便可以用软件自带的画图引擎画出一副漂亮的图。另外这个软件还... 阅读全文
posted @ 2015-08-19 01:44 jklongint 阅读(629) 评论(0) 推荐(0)
摘要:题意:给一个n*m的矩形,每个格子有一个非负数,求一条从(1,1)到(n,m)的路径(不能经过重复的格子),使得经过的数的和最大,输出具体的方案思路:对于row为奇数的情况,一行行扫下来即可全部走完得到最大和,对于col为奇数的情况一列列扫即可。对于行和列全部为偶数的情况,将所有格子进行黑白染色,起... 阅读全文
posted @ 2015-08-19 01:08 jklongint 阅读(168) 评论(0) 推荐(0)
摘要:题意:http://acm.hdu.edu.cn/showproblem.php?pid=5400思路:预处理出每个点向左和向右的最远边界,从左向右枚举中间点,把区间答案加到总答案里面。由与可能与前面的区间重叠,需要减去重复的答案,由于左边界非降,所以重叠的区间长度很容易得到。#pragma com... 阅读全文
posted @ 2015-08-18 23:00 jklongint 阅读(251) 评论(0) 推荐(0)
摘要:题意:m个{1,2...n}→{1,2...,n}的函数,有些已知有些未知,求对任意i∈{1,2,...,n},f1(f2(...(fm(i)))=i的方案总数,为了方便简记为F(i)思路:如果存在一个f,当i!=j时,有f(i)=f(j),那么方案数为0,因为由里到外进行f运算,两个不同的数到这里... 阅读全文
posted @ 2015-08-18 22:52 jklongint 阅读(405) 评论(0) 推荐(0)
摘要:题意:给一个表达式,求所有的计算顺序产生的结果总和思路:比较明显的区间dp,令dp[l][r]为闭区间[l,r]的所有可能的结果和,考虑最后一个符号的位置k,k必须在l,r之间,则l≤k#include #include #include #include #include #include #in... 阅读全文
posted @ 2015-08-18 22:32 jklongint 阅读(285) 评论(0) 推荐(0)
摘要:题意:给一个置换,求最小循环长度对p取模的结果思路:一个置换可以写成若干循环的乘积,最小循环长度为每个循环长度的最小公倍数。求最小公倍数对p取模的结果可以对每个数因式分解,将最小公倍数表示成质数幂的乘积形式,然后用快速幂取模,而不能一边求LCM一边取模。由于这题数据量太大,需要用到输入挂,原理是把文... 阅读全文
posted @ 2015-08-16 13:46 jklongint 阅读(401) 评论(0) 推荐(0)
摘要:题意:Q个询问,每个询问给定区间[L,R],求从里面任选两个数相同的概率。思路:莫队算法。用一个cnt数组记录当前区间每种数的个数,区间变化为1时O(1)的维护cnt数组,并可以O(1)的得到当前区间中与当前数相同的数的个数。 1 2 3 4 5 6 7 8 9 10 11 12 ... 阅读全文
posted @ 2015-08-15 21:50 jklongint 阅读(188) 评论(0) 推荐(0)
摘要:题意:http://acm.hdu.edu.cn/showproblem.php?pid=1506 如图,求最大的矩形面积思路:笛卡尔树:笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key,一个为value。光看key的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的key都比它小,右子树都比... 阅读全文
posted @ 2015-08-15 17:33 jklongint 阅读(282) 评论(0) 推荐(0)
摘要:题意:http://acm.hdu.edu.cn/showproblem.php?pid=5381思路:这个题属于没有修改的区间查询问题,可以用莫队算法来做。首先预处理出每个点以它为起点向左和向右连续一段的gcd发生变化的每个位置,不难发现对每个点A[i],这样的位置最多logA[i]个,这可以利用... 阅读全文
posted @ 2015-08-15 11:05 jklongint 阅读(304) 评论(0) 推荐(0)
摘要:题意:把n个数(1-9)放到A集合和B集合里面去,使得A集合里面的数的数根为a,B集合里面的数的数根为b,也可以只放在A或B任一个集合里面。求方法总数。比如A={2,4,5},则A的数根为[2+4+5]=[11]=[2]=2思路:一个数为a,则它的数根b=(a-1)%9+1=(digit-1)%9+... 阅读全文
posted @ 2015-08-13 18:24 jklongint 阅读(231) 评论(0) 推荐(0)
摘要:题意:给一个时刻,求时针、分钟、秒针三者之间的夹角思路:确定参照点,求出三者的绝对夹角,然后用差来得到它们之间的夹角,钝角情况用360。减去就行了。#include #include #include #include #include #include #include #include #inc... 阅读全文
posted @ 2015-08-13 17:57 jklongint 阅读(394) 评论(0) 推荐(0)
摘要:http://codeforces.com/problemset/problem/300/D题意:每一次操作可以选一个正方形,令边长为n,如果n为奇数那么可以从中间画一个十字,分成4个大小相等的边长为(n-1)/2的正方形。给一个正方形,求操作k次后能得到的不同图案的个数思路:令f(s,k)表示边长... 阅读全文
posted @ 2015-08-13 09:55 jklongint 阅读(352) 评论(0) 推荐(0)
摘要:题意:十进制的每一位仅由a和b组成的数是“X数”,求长度为n,各数位上的数的和是X数的X数的个数思路:由于总的位数为n,每一位只能是a或b,令a有p个,则b有(n-p)个,如果 a*p+b*(n-p) 为X数,则这种情况的答案就是C(n,p),将所有情况累加起来即可。#include #includ... 阅读全文
posted @ 2015-08-13 09:13 jklongint 阅读(272) 评论(0) 推荐(0)
摘要:题意:两根导线绕在一起,问能不能拉成两条平行线,只能向两端拉不能绕思路:从左至右,对+-号分别进行配对,遇到连续的两个“+”或连续的两个“-”即可消掉,最后如果全部能消掉则能拉成平行线。拿两根线绕一下就理解了,也可以一根拉成直线,另一根围着它绕,然后观察能拉成直线的条件。用栈实现就行。 1 2 3 ... 阅读全文
posted @ 2015-08-12 19:01 jklongint 阅读(286) 评论(0) 推荐(0)
摘要:题意:给若干个阻值为1的电阻,要得到阻值为a/b的电阻最少需要多少个。思路:令a=mb+n,则a/b=m+n/b=m+1/(b/n),令f(a,b)表示得到a/b的电阻的答案,由f(a,b)=f(b,a),有:f(a,b)=a/b + f(a%b,b)=a/b+f(b,a%b)(1)由于将所有的电阻... 阅读全文
posted @ 2015-08-12 16:59 jklongint 阅读(287) 评论(0) 推荐(0)
摘要:题意:S是平面内点的集合,初始为空,每次向集合里面加入一个点P(x,y),询问S内最近点对的距离的平方和思路:设当前集合的答案为D,则找到集合里面横坐标在(x-√D,x+√D)内的数,用它们来更新答案,一边更新答案一边还要更新右边界x+√D,此时的更新注意不要用浮点数开平方算具体右边界,改用判断即可... 阅读全文
posted @ 2015-08-12 15:52 jklongint 阅读(236) 评论(0) 推荐(0)
摘要:题意:给n个三角形,分别求覆盖1次~n次的总面积思路: 对每个y坐标作一条平行于x轴的直线,按直线从下往上处理,每两条直线之间为若干梯形(也可以是三角形)首尾相连的情况,从左扫到右时,用一个变量cnt记录当前区域被覆盖的次数,遇到入边cnt++,遇到出边cnt--,边扫边更新答案。入边表示这条边的右... 阅读全文
posted @ 2015-08-12 15:38 jklongint 阅读(261) 评论(0) 推荐(0)
摘要:题意:给一个长度为16的字符串,每次从里面删掉一个回文序列,求最少需要几次才能删掉所有字符思路:二进制表示每个字符的状态,那么从1个状态到另一个状态有两种转移方式,一是枚举所有合法的回文子序列,判断是否是当前状态的子状态,再转移,二是枚举当前状态的所有子状态来转移。前者最坏复杂度O(2^16*2^1... 阅读全文
posted @ 2015-08-12 15:21 jklongint 阅读(275) 评论(0) 推荐(0)
摘要:题意:给一个数n,找一个正整数x#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace s... 阅读全文
posted @ 2015-08-12 15:06 jklongint 阅读(241) 评论(0) 推荐(0)
摘要:题意:给一个长度为2000的字符串,10000次询问区间[L,R]内的不同子串的个数思路:对原串的每个前缀求一边后缀数组,询问[L,R]就变成了询问[L,n]了,即求一个后缀里面出现了多少个不同子串。于是对所有大于等于L的后缀统计一遍即可。 1 2 3 4 5 6 7 8 9 10... 阅读全文
posted @ 2015-08-12 14:39 jklongint 阅读(396) 评论(0) 推荐(0)
摘要:题意:给n个节点的树编号1-n,一个节点唯一对应一种编号,要求编完号的树满足如下性质:所有节点的儿子的编号是连续的,对一棵子树,它包含的所有节点的编号也是连续的。连续的意思是把所有数排序后是一段连续的区间。思路:由于所有子树是连续的,所以可以用区间来表示子树,设要给当前子树编号为[1,n],如果当前... 阅读全文
posted @ 2015-08-12 14:28 jklongint 阅读(231) 评论(0) 推荐(0)
摘要:题意:给一个二进制码,其中有一些位上为'?',对每个问号确定是'0'还是'1',最后以它对应的格雷码来取数,第i位为1则取第i个数,求取得的数的和的最大值。思路:二进制码B转换成格雷码G的方法是,Gi=Bi^Bi+1,Gn=Bn。所以第i位如果为'?',那么选'1'还是'0'只会影响邻位,于是用dp... 阅读全文
posted @ 2015-08-12 14:07 jklongint 阅读(160) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5373思路:按题意来即可。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647... 阅读全文
posted @ 2015-08-12 13:50 jklongint 阅读(161) 评论(0) 推荐(0)
摘要:题意:在一个字符串里面找最长的[A][B][A]子串,其中[A][B]是回文串,[A]和[B]的长度相等思路:[A][B]是回文串,所以[B][A]也是回文串。先预处理出每个点的最大回文半径Ri,枚举[A][B]的对称轴位置p,那么就是要找最大的一个[B][A]的对称轴位置i,满足i#include... 阅读全文
posted @ 2015-08-12 13:41 jklongint 阅读(281) 评论(0) 推荐(0)
摘要:题意:有两种操作:(1)插入线段,第i次插入的线段左边界为Li,长度为i (2)删除线段,删除第x次插入的线段。每次插入线段之前询问有多少条线段被它覆盖。思路:由于插入的线段长度是递增的,所以第i次插入的线段的长度比以前插入的所有线段都要长,从以前插入的线段里面任取一条,考虑其与当前线段的位置关系,... 阅读全文
posted @ 2015-08-12 13:23 jklongint 阅读(189) 评论(0) 推荐(0)
摘要:题意:给一个长度不超过100000的原串S(只包含数字0-9),令T为将S重复若干次首尾连接后得到的新串,有两种操作:(1)修改原串S某个位置的值(2)给定L,R,询问T中LR)ΣG(i,j),则有:f(i)=G(i,i)+G(i,i+1)+...+G(i,R) (a)将 (a)的每一项展开,不难得... 阅读全文
posted @ 2015-08-09 06:51 jklongint 阅读(264) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5348题意:给一个无向图,现在要将其变成有向图,使得每一个顶点的|出度-入度|#include#include#include#include#include#include#include#include#inc... 阅读全文
posted @ 2015-08-07 13:33 jklongint 阅读(480) 评论(0) 推荐(0)
摘要:题意:一个人想邀请n个人出去玩,假设当前同意和他一起去的人数为cnt,那么他去邀请i的时候,i同意的条件是L[i]cnt的,对于第一种已经不可能同意了,因为cnt是递增的,对于第三种现在根本不用考虑,而对于第二种,那么都可以被邀请,且被邀请了一定会同意。明显应该邀请R[i]最小的,因为他们总是比其他... 阅读全文
posted @ 2015-08-07 05:24 jklongint 阅读(297) 评论(0) 推荐(0)
摘要:题意:有n个小朋友,每个小朋友手上有一些糖,考虑每两个相邻的小朋友a、b,可以选择执行3种操作中的任一种:(1)a给b一粒糖(2)b给a一粒糖(3)不进行任何动作,问能否通过确定每两个相邻的小朋友的操作使得最终每个人的糖果数量相等。思路:如果只有1个小朋友,那么肯定是可行的,如果糖果数总和取模小朋友... 阅读全文
posted @ 2015-08-07 05:10 jklongint 阅读(234) 评论(0) 推荐(0)
摘要:题意:给一个有向图,每个点有一个权值,从1个点出发,初始能量有100,每到达新的点,能量就会加上那个点的权值,当能量大于0时才能继续走,可以多次进入同一点。问能否到达目标点思路:如果没正权环,则直接优先队列bfs模拟走的过程即可,因为先到不会比后到的能量少,那过程其实就和dijkstra差不多,但根... 阅读全文
posted @ 2015-08-07 04:49 jklongint 阅读(249) 评论(0) 推荐(0)
摘要:题意:直接来链接吧http://acm.hdu.edu.cn/showproblem.php?pid=5358思路:注意S(i,j)具有区间连续性且单调,而⌊log2x⌋具有区间不变性,于是考虑枚举⌊log2S(i,j)⌋的值,然后枚举i,从而能得到j的区间范围,然后统计答案即可。另外这题比较坑,先... 阅读全文
posted @ 2015-08-07 04:26 jklongint 阅读(338) 评论(0) 推荐(0)
摘要:题意:f(1)="a",f(2)="b",f(i)=f(i-1)+f(i-2),"+"表示连接符。给定n,m,求f(n)的前m个字符的“next值”。思路:并不知道如何一步步推出结论,只能打个表找找规律了:找到最小的i使得f(i)>m+1,则答案就是m-f(i-2)。然后就是大整数模板了123456... 阅读全文
posted @ 2015-08-05 00:13 jklongint 阅读(421) 评论(0) 推荐(0)
摘要:题意:给一个正整数n,求n的拆分方法数(不考虑顺序)思路:不妨考虑用1~n来构成n。用多项式表示单个数所有能构成的数,用多项式表示,就相当于卷积运算了。12345678910111213141516171819202122232425262728293031323334353637383940414... 阅读全文
posted @ 2015-08-04 10:58 jklongint 阅读(316) 评论(0) 推荐(0)
摘要:题意:给a个1、b个2、c个5,求不能构成最小的数思路: 先求1能构成的所有数,2能构成的所有数,5能构成的所有数,它们的方法数显然都是1,现在考虑把3者结合在一起,由于结果为和的形式,而又是循环加的,所以考虑用多项式来表示状态,然后进行两次卷积运算就行了。123456789101112131415... 阅读全文
posted @ 2015-08-04 10:42 jklongint 阅读(261) 评论(0) 推荐(0)
摘要:题目出自Codeforces Round #126 (Div. 2)的E。题意大致如下:给定a,b,c,s,求三个非负整数x,y,z,满足0=即可,另外函数值在一段范围内不发生变化可能导致结果出错):1234567intL=...,R=...;while(L//#include//#include/... 阅读全文
posted @ 2015-08-04 06:51 jklongint 阅读(367) 评论(0) 推荐(0)
摘要:题意大致是这样的:有一个有n行、每行m个格子的矩形,每次往指定格子里填石子,如果指定格子里已经填过了,则找到与其曼哈顿距离最小的格子,然后填进去,有多个的时候依次按x、y从小到大排序然后取最小的。输出每次填的格子的坐标。思路:这道题出自Codeforces Round #126 (Div. 2)是个... 阅读全文
posted @ 2015-08-04 06:11 jklongint 阅读(301) 评论(0) 推荐(0)
摘要:题意:一堆石子,有n个,两个人轮流取,每次都只能取2的幂次方个数,不能取的人输思路:首先0是必败态,2的所有幂次都是必胜态。由于选的数模3只能是1或2,恰好又都是2的幂次,0,、3都为必败态,猜想3的所有倍数也为必败态,证明如下:设状态为x=3k,先手任选一个t,那么(x-t)%3不是1就是2,后手... 阅读全文
posted @ 2015-08-03 22:58 jklongint 阅读(299) 评论(0) 推荐(0)
摘要:题意:两个人玩游戏,给定一个日期,他们轮流选择日期,可以选择当前日期的下一天,如果下一个月也有这一天的话则也可以选择下一个月的这一天。超过某一日期的人输。思路:以天为状态,则一共有300多万个左右的状态,然后用dp预处理每个状态是必胜态还是必败态。一个状态是必胜态当且仅存在它的一个后继是必败态,一个... 阅读全文
posted @ 2015-08-03 20:31 jklongint 阅读(207) 评论(0) 推荐(0)
摘要:题意:小明有2个账号,rating都是0分,每打一场赢的概率为P,假设当前分为x,赢了分数变为min(1000,x+50),输了则分数变为max(0,x-100),小明每次都选rating小的账号打,求打到有一个账号为1000所需的场数的期望值思路:很明显需要把分数离散化,50分为1个单位。利用期望... 阅读全文
posted @ 2015-08-03 04:26 jklongint 阅读(207) 评论(0) 推荐(0)
摘要:题意:n个灯,m个开关,给定每个开关控制的灯,全部的灯初始时全部熄灭,开关按一下其所控制的灯的状态全部反转,开关最多只能按一下。问达到目标状态的方案数。思路:xor方程组的模型。1234567891011121314151617181920212223242526272829303132333435... 阅读全文
posted @ 2015-08-03 01:05 jklongint 阅读(435) 评论(0) 推荐(0)
摘要:题意:判断一个字符串能否划成三段非空回文串。思路:先用二分+hash在nlogn的时间内求出以每条对称轴为中心的回文串的最大半径r[i](可以用对称的两个下标之和来表示 ),然后利用r[i]求出pre[i]和suf[i],其中pre[i]表示0~i能否形成回文串,suf[i]表示i~n-1能否形成回... 阅读全文
posted @ 2015-08-02 08:27 jklongint 阅读(500) 评论(0) 推荐(0)
摘要:题意:给一个01矩阵,每次可以选一行或一列,打掉上面所有的1,求打掉所有的1所需的最小次数。思路:经典的模型了,二分图最小覆盖=最大匹配。所谓最小覆盖是指选最少的点关联所有的边。容易得到将行和列看成点,1看成边,那么就是选尽量少的行和列来关联所有的1,最小覆盖模型,用最大匹配做。可以选择匈牙利算法,... 阅读全文
posted @ 2015-08-02 01:57 jklongint 阅读(302) 评论(0) 推荐(0)
摘要:题意:给一个n*m的地图,'m'表示人,'H'表示房子,求所有人都回到房子所走的距离之和的最小值(距离为曼哈顿距离)。 思路:比较明显的二分图最大权匹配模型,将每个人向房子连一条边,边权为曼哈顿距离的相反数(由于是求最小,所以先取反后求最大,最后再取反回来即可),然后用KM算法跑一遍然后取反就是答案 阅读全文
posted @ 2015-08-02 00:56 jklongint 阅读(1336) 评论(0) 推荐(0)
摘要:题目:给一个数组a,从里面任选三个数,求以这三个数为三条边能构成三角形的概率。思路:由于每个数只能用一次,所以考虑枚举三边中的最大边。先将a数组排序,然后枚举它的每个数x作为最大边,那么问题就是要求在数组a剩余的数里面“找小于等于x”且“和大于x”的数对个数,答案显然不能直接得到。不妨先计算这样一个... 阅读全文
posted @ 2015-08-01 02:35 jklongint 阅读(866) 评论(0) 推荐(0)