06 2017 档案
摘要:链接:http://codeforces.com/contest/820/problem/D 分析:|p[i]-i|每次只会变化1,先不考虑端点情况,就只有p[i]==i的时候变化,每次k+1的时候,对于正项,答案-1,负向+1,因此可以预处理每次移动改变符号的个数,单独处理下端点,就可以更新答案,
阅读全文
摘要:链接:http://codeforces.com/contest/820/problem/B 分析:这算是平面几何题??由于是正多边形,任意四点共圆,同一条弦所对的圆周角都相等,不妨设v1=2,v2=1,记∠2 1 3为ang,则∠2 1 k (k<=n)为 (k-2)ang,枚举或者二分一下求最接
阅读全文
摘要:链接:http://codeforces.com/contest/820/problem/C 分析:A完一觉起来发现数据改了,WA掉了。。出题人觉得自己做法错了。。 首先把字符串记为A1 B1 A2 B2 A3 B3……,事实上,A3与A1完全一样,因此是个周期数列。为了方便,把a记做1,b记做2,
阅读全文
摘要:链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=594&problem=4669&mosmsg=Submission+received
阅读全文
摘要:链接:http://codeforces.com/problemset/problem/821/E 分析:由于有边界而且不同段边界还不同,直接算是不行的。。k是1e18,dp也不行。。用一个16维的向量表示某一列16个位置可能的种类数,到下一列的转移矩阵容易得到,而且在同一段里转移矩阵一样,直接用快
阅读全文
摘要:链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=326&problem=2290&mosmsg=Submission+received
阅读全文
摘要:链接:http://arc076.contest.atcoder.jp/tasks/arc076_b 题目大意:给定平面上n个点,任意两点距离定义为 min(|a−c|,|b−d|), 求最小生成树。 分析:可以用类似曼哈顿距离最小生成树的方法,如在y轴顺时针偏45°的区域,取x最小的点,其它区域类
阅读全文
摘要:链接:http://arc073.contest.atcoder.jp/tasks/arc073_c 题目大意:给定n对数,将每对中一个染红一个染蓝,求(Rmax-Rmin)*(Bmax-Bmin)。 分析:- -感觉没有太多的知识点,就是有点难想。。 考虑所有数中的MAX和MIN,如果在Rmax=
阅读全文
摘要:分析:首先去重排序,然后枚举a[i]的倍数,找到最大的a[j],使得a[j]小于a[i]的倍数,用二分法找,然后更新一下最大值。枚举a[i]和倍数复杂度为O(nlogn),二分O(logn),总的为O(n(logn)^2)。
阅读全文
摘要:分析:记dp[i][j]为从i到j合并的最小代价(顺时针,i可以大于j),sum[i][j]为从i到j的和,则dp[i][j]=min{dp[i][k-1]+dp[k][j]}+sum[i][j],(i<k<=j),直接求的话复杂度为O(n^3),会T。 四边形不等式优化:记s[i][j]为dp[i
阅读全文
摘要:一般的并查集是维护属于同一种类的元素,对于属于不同种类的元素之间的关系没有记录。种类并查集就是同一集合中的元素是已经确定关系的(是否属于同一种类),然后加一个group数组,记录一下孩子和父亲是否属于同一种类,递推稍稍改一下就可以了。 poj1703:http://poj.org/problem?i
阅读全文
摘要:分析:记数组中最长的连续子串长度为maxlen(数值上连续,位置不一定连续,如2134,最长为3).首先可以证明,n-maxlen次操作可以满足条件,如最长子串最后一个为x<n,则把x+1移到最后,如果是x=n,记子串的第一个为y,把y-1移到最前,每次操作后最长连续子串长度+1,故可以满足条件.接
阅读全文
摘要:A - Flip Game 总的情况数只有2^16次方种,显然直接bfs就可以了 1 #include<iostream> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 int W,B,start; 6 bool hav
阅读全文
摘要:分析:只要求出每个最大公约数出现的次数就可以了,而最大公约数必然是n的因子,考虑n的任意一个因子m,设t满足gcd(t,n)=m,等价于gcd(t/m,n/m)=1,由t<=n的t/m<=t/m,也就是说,这样的t的个数恰好是φ(n/m)个,故结果就是(m|n)∑m*φ(n/m).复杂度为O((lo
阅读全文
摘要:链接:http://codeforces.com/contest/816/problem/C 题目大意:给定一个n*m的矩阵,每次操作可以使其中一行或一列减1,求使得矩阵变为0的最少操作数及一个可行方案. 分析:注意到有解的充要条件是所有行的和mod n 余数相同,所有列的和mod m 余数相同,而
阅读全文
摘要:分析:记dp[n][k]为n个数,逆序数为k的个数,将dp[n][k]分为两部分,一部分有1~n-1的逆序构成,一类是有n的逆序,可以得到dp[n+1][k+1]=(max(0,k+1-n),min(k+1,n*(n-1)/2)∑dp[n][i],再用dp[n+1][k+1]与dp[n+1][k]做
阅读全文
摘要:分析:用Miller-Rabin算法,预处理一些质数,取一个质数x,若n为质数,必然有x^(n-1)=1modn,但是反之不一定,若通过了前面的检验,将n-1分解为2^d*r,r为奇数,接下来检验x^(d-1)*r mod n,以此类推除二检验,直到mod的结果为-1或不能被二整除,若其中出现mod
阅读全文
摘要:为了方便写,加了个符号变量neg...重载了各种比较符号,支持加减乘除取模以及模快速幂...快速幂不知道怎么用位运算,效率会偏低..
阅读全文

浙公网安备 33010602011771号