07 2016 档案
摘要:水题。比赛的时候用txt删了数字还有-,然后WA了。。。然后发现Philadelphia 76ers,这个队名中有数字......
阅读全文
摘要:比赛时候想了好久,不会。看了官方题解才会...... Bond是极小割边集合,去掉一个Bond之后,只会将原图分成两个连通块。 假设某些点构成的集合为 s(点集中的点进行状压后得到的一个十进制数),那么剩下的点构成的集合为 t=(1<<n)-1-s 如果s是连通的,t也是连通的,那么跨越s、t集合的
阅读全文
摘要:对于一个数,可以记录3个位置:初始位置,终点位置,最右边的位置。 初始位置和终点位置容易计算。最多边的位置即为初始状态下该数的位置+该数之后还有多少数比该数小。 三个位置中的min即为leftpos,max即为rightpos
阅读全文
摘要:简单dp+KMP。记dp[i]为以0--i能表达的意义种类。 如果以s[i]为结尾的后缀不匹配,那么dp[i]=dp[i-1]。 如果以s[i]为结尾的后缀匹配,那么dp[i]=dp[i-1]+dp[i-len]; (即表达第一种意思的种类数+表达第二种意思的种类数)
阅读全文
摘要:这题想了1个多小时想不出来...方法真是精妙... 官方题解:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,对剩下 的做O(nlogn)的LIS,统计结果的时候再算上0的数量。为了保证严格递增,我们可以将每个权值S[i]减去i前面0的个 数,再做
阅读全文
摘要:后缀数组。 然后按照排序完成之后的顺序,每个后缀统计贡献量。 统计第i个后缀的贡献的时候,如果这个后缀中没有X,贡献度为0。 有贡献的分3种情况考虑: 1.如果这个后缀height部分等于0(即与前一个后缀没有公共前缀),那么在height之后的部分中找到第一个X的位置pos,n-pos为贡献度。
阅读全文
摘要:后缀数组。按照排序完的后缀一个一个统计。每一个后缀对答案做出的贡献为:n-SA[i]-height[i]。
阅读全文
摘要:后缀数组。求不可重叠最长重复子串。 二分答案+验证。每一次二分,将排序完序的后缀按顺序进行分组。每组内任意两个的最长公共前缀要>=二分值。如果有一组内存在两个后缀的SA值相差大于等于二分值,那么这个二分值可行。
阅读全文
摘要:最长公共上升子序列。 O(n*n*n) 优化后O(n*n)
阅读全文
摘要:可以设n*m个未知量,建立n*m个方程。位置i,j可以建立方程 (2*x[i*m+j]+x[(i-1)*m+j]+x[(i+1)*m+j]+x[i*m+j-1]+x[i*m+j+1])%3=3-b[i][j]; 套了个高斯消元的板子过了。
阅读全文
摘要:因为m最多只有100000,也就是说曼哈顿距离最多只有200000种,所以找200000对必然能找到。这和367人里面必然有人生日重复一样的道理。
阅读全文
摘要:公式:a*v1/(v1*v1-v2*v2),注意a==0的时候,直接输出0.
阅读全文
摘要:四种棋子实质上都是一样的思路: 如果某位置的棋子,它下一步可以走到的位置中 能找到有后手胜的位置,那么该位置先手必胜。 如果某位置的棋子,它下一步可以走到的位置中 全是先手胜,那么该位置后手必胜。 其余三种都用如上思路打表即可,但要注意马的情况(因为马可能有些位置走不到终点): 如果该位置走过去的两
阅读全文
摘要:计算每个c[i]对答案做出的贡献,累加即可。手算一下会发现是:c[1]/2+(c[2]+....c[n-1])/3+c[n]/2。注意:一个数的时候直接输出那个数。
阅读全文
摘要:可以先尝试一下longlong范围内哪个数已经不可能在5步之内得到1. 剩下的模拟算一下即可。
阅读全文
摘要:可以暴力预处理出每一种小于3000000的乘积有几种。询问的时候可以用总的方案减去比p小的有几种o(1)输出。
阅读全文
摘要:矩阵快速幂。递推式:dp[k][i]=sum(dp[k-1][j]*f[i][j]),dp[k][i]表示的意义是序列中有k个元素,最后一个元素是i的方案数,f[i][j]=1表示i与j能放在一起,反之表示不能放在一起。因为k较大,所以可以构造矩阵进行加速。
阅读全文
摘要:把可以置换的关系建边,形成一张无向图,每一个连通块内的位置可以任意交换。
阅读全文
摘要:离线处理+扫描线。题意很容易转化:若干个矩形形成并集,询问一些点是否在并集中? 官方题解不是这样做的....那种做法效率更高,暂时还不会。我这样是4500ms G++过的,C++TLE...... 区间加上某值,询问单点值,可以用树状数组。用线段树可能常数较大导致TLE。
阅读全文
摘要:看官方题解很详细了: 总结一下:递推式不难想到,但是每次求dp[x]需要枚举祖先,复杂度太高,需要优化。 题解的方法,可以使得复杂度降低到1<<24.
阅读全文
摘要:可以将这个图转换成森林来进行树形dp求解。看了这篇具体教学才会的:http://www.cnblogs.com/WABoss/p/5696926.html 大致思路:求解一下点双连通分量(Tarjan),新构造一个节点连向这个分量中每一个节点。每个点双连通分量都这样构造好之后,原本连通的一张图就形成
阅读全文
摘要:时限卡的好紧,G++ 3400ms过的,C++超时了。 双关键字排序,然后从左一个一个点看过去,假设第i个点必选,然后对i之后的点按照i这个点为原点进行极角排序,极角相同的排在一起(可以除gcd之后排序),然后统计一下即可。重点需要注意一下。
阅读全文
摘要:化简之后发现会是一个一元二次方程,对称轴大于0,所以把对称轴代入计算即可。
阅读全文
摘要:简单题。a[1],a[2]尽量大,其余尽量小。
阅读全文
摘要:简单题。首先统计有多少奇数,记为sz个。如果sz=0,那么答案就是sum(a[i]);否则,答案为(sum(a[i])-sz)/(2*sz)*2+1。
阅读全文
摘要:具体推导过程可以看这篇博客..我是看这个看懂的,其余的人都是直接给的结果.. http://blog.csdn.net/wust_zzwh/article/details/51966450 分两步:1.求k,2.求答案。 对于第二步:即bzoj 3884,http://blog.csdn.net/s
阅读全文
摘要:目前还是不能彻底理解这题...... 将题意转化成求左边n个点,右边m个点的二分图有几种不同的连边方式将它连通。每条边可以有三种状态(即不选,选红,选蓝,选红选蓝都可以连通,但算两种状态)。 看着这博客学的....http://blog.csdn.net/dpppbr/article/details
阅读全文
摘要:计算几何。先判四点是否共面,共面则无解。然后计算出圆心坐标,然后计算圆心到任意一面的距离。
阅读全文
摘要:矩形面积并。 需要转化一下思路:记录每一个位置的数以及位置。 对数字进行从小到大排序,数字一样的按位置从小到大排。 这样,一样的数就在一起了。连续的相同的x个数就可以构成很多解,这些解对应于二维平面上某矩形内整点个数(包括边界)。 这样就处理出很多很多的矩形,因为重复只能计算一次,所以可以采用矩形面
阅读全文
摘要:枚举环排列+二分图匹配计算答案。 可以枚举一下yin的排列方式,因为是环,所以可以固定一个,剩下的8个进行全排列。 对于每一个全排列,会产生n个位置供yang放置,如果某位置放置某yang不会使该yang褪色,则该位置向该yang连边。 然后跑一次二分图最大匹配,即可得到在yin这样的排列方式下,最
阅读全文
摘要:因为一行最多只有20个数,也就是说只有(1<<20)种状态,向右移动表示小的数推向了大的数。可以用SG函数预处理出所有情况。然后把每一行的SG函数值异或一下,非零则必胜,否则输。
阅读全文
摘要:对于第一问:无修改的查询区间GCD,可以采用RMQ倍增的思想。 第二问:可以预处理。暴力枚举左端点L。GCD从左到右是递减的,并且肯定是有一些段是一样的值,值的种类最多只有log(1000, 000, 000)种,因此可以二分确定每一段的范围。然后用map统计一下即可。
阅读全文
摘要:题目说每条边权值都不一样,说明最小生成树是唯一的,不存在最小期望这一说。 然后就是先求出最小生成树,随便确定一个根节点,计算出每个点的子树有多少节点,记为c[x]。 指向x的这条边被统计的次数为c[x]*(n-c[x])。然后基本就可以算出答案了。
阅读全文
摘要:根据条件,某些位置的数字就可以确定了。确定过程中如果有冲突,则无解。 如果B中出现了递增,C中出现了递减,则无解。 对于每一个未确定的a[i],ans需要更新,ans=ans*((c[i]-b[i]+1)-(i-1))%MOD; 如果计算ans过程中,出现了(c[i]-b[i]+1)-(i-1)<=
阅读全文
摘要:如果非零的数小于等于1个,则无解。否则有解。 取出一个最小的非零的数作为一个数,剩下的作为一个数,相加即可。
阅读全文
摘要:a[1],a[2],a[3],a[4],a[5]。。。。。a[n]。 可以先计算不符合要求的有几种,然后总数-不符合的=符合的。 不符合的就是能构成三角形的有几种。 看一个例子: a[1]与a[5]能写出构成三角形的条件。 a[2]与a[5]能写出构成三角形的条件。 a[3]与a[5]能写出构成三角
阅读全文
摘要:简单矩阵快速幂。
阅读全文
摘要:暴力。一年一年判断过去。如果某一年与输入的年份闰年性质相同,并且1月1日是星期几相同,那么输出。
阅读全文
摘要:从最后一天开始往前加边。 同一天的边同时加到图上,加完之后检查集合数量是否和没加之前有变化。 有变化的话,答案就+1.
阅读全文
摘要:根据给出的条件建边,然后进行dfs 对于某个点x,当x的后继都遍历完毕后,再输出x节点。 这样能保证所有约束条件。
阅读全文
摘要:广搜。看了官方题解才会的..... 定义2*2的小矩阵,有三个是点,一个是星,这样的小矩阵被称为元素块。 首先把所有元素块压入队列,每次取出对头,检查是否还是元素块,如果是 那么将那个*改为点,否则跳过 改完之后,检查周围8个点是否是元素块,如果有新产生的元素块,那么压入队列。 这样操作完之后就是答
阅读全文
摘要:线性DP。 dp[i][j]表示以第i个数字为结尾的,字串和为j的有几种。
阅读全文
摘要:看了这篇博客的讲解,挺不错的。http://www.cnblogs.com/goodness/archive/2010/05/04/1727141.html 判断无解的情况(写完七种境界才发现有直接判断无解的方法): 一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和,也就是每个数字前面比它
阅读全文
摘要:最短路+DP 先预处理从(n,n)到每一格的最短路。 然后对每个点距离从大到小进行排序,然后就可以线性DP递推了。
阅读全文
摘要:简单题。统计一下即可。
阅读全文
摘要:简单DFS。
阅读全文
摘要:简单题。
阅读全文
摘要:找出一定没问题的字符(即一连串的额字符x个数能被k整除的),剩下的字符都是可能有问题的。
阅读全文
摘要:预处理出最短路再进行暴力dfs求答案会比较好。直接dfs效率太低。
阅读全文
摘要:判断一棵二叉树是否完全二叉树。
阅读全文
摘要:简单模拟。
阅读全文
摘要:简单模拟。
阅读全文
摘要:简单并查集。
阅读全文
摘要:简单dfs
阅读全文
摘要:简单模拟。
阅读全文
摘要:简单题。
阅读全文
摘要:暴力搜索。
阅读全文
摘要:简单题。
阅读全文
摘要:树状数组+离散化
阅读全文
摘要:简单题。
阅读全文
摘要:预处理每个节点左子树有多少个点。 然后确定值得时候递归下去就可以了。
阅读全文
摘要:简单题。判断一下是插排还是堆排。
阅读全文
摘要:简单题。
阅读全文
摘要:如果是素数直接输出1与素数,否则枚举长度和起始数即可。
阅读全文
摘要:模拟题。仔细一些即可。
阅读全文
摘要:简单DFS。
阅读全文
摘要:预处理每个位置之前有多少个P,每个位置之后有多少个T。 对于每个A,贡献的答案是这个A之前的P个数*这个A之后T个数。
阅读全文
摘要:简单题。
阅读全文
摘要:BFS求连通块。递归会爆栈。
阅读全文
摘要:简单dfs。
阅读全文
摘要:简单题。模拟一下即可。
阅读全文
摘要:简单题。 注意:读入的分数可能不是最简的。输出时也需要转换成最简。
阅读全文
摘要:暴力DFS。
阅读全文
摘要:入栈顺序为先序遍历,出栈顺序为中序遍历。
阅读全文
摘要:可以用双指针(尺取法),也可以枚举起点,二分终点。
阅读全文
摘要:简单题。
阅读全文
摘要:模拟题。
阅读全文
摘要:简单排序。
阅读全文
摘要:简单模拟题。
阅读全文
摘要:树的遍历。
阅读全文
摘要:简单题。
阅读全文
摘要:二次探测法。表示第一次听说这东西。。。
阅读全文
摘要:最长公共后缀。暴力。
阅读全文
摘要:最短路。 每次询问的点当做起点,然后算一下点到其余点的最短路。然后统计一下最短路小于等于L的点有几个。
阅读全文
摘要:简单模拟题。 注意一点:如果一个人所有提交的代码都没编译通过,那么这个人不计排名。 如果一个人提交过的代码中有编译不通过的,也有通过的,那么那份编译不通过的记为0分。
阅读全文
摘要:简单题。
阅读全文
摘要:简单模拟题。
阅读全文
摘要:枚举一下选的位置,每次算一下就可以了。
阅读全文
摘要:简单题。
阅读全文
摘要:简单贪心。先买性价比高的。
阅读全文
摘要:简单题。
阅读全文
摘要:01背包路径输出。 保证字典序最小:从大到小做背包。
阅读全文
摘要:只对没有归位的数进行交换。 分两种情况: 如果0在最前面,那么随便拿一个没有归位的数和0交换位置。 如果0不在最前面,那么必然可以归位一个数字,将那个数字归位。 这样模拟一下即可。
阅读全文
摘要:AVL树的旋转。居然1A了.... 了解旋转方式之后,数据较小可以当做模拟写。
阅读全文