08 2017 档案
摘要:大神博客:http://www.matrix67.com/blog/archives/108 例题1:VOJ 1056 图形面积 代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #includ
阅读全文
摘要:832C - Strange Radiation 思路:二分最短时间。 代码:
阅读全文
摘要:595D - Max and Bike 思路:开始和结束时的计时器的高度相同时(也就是关于圆竖着直径对称)时间最少。 证明: 总距离为d. 圆周长为s=2*π*r. 设len=d-floor(d/s)*s. len=θ1*r+θ2*r+sin(θ1)*r+sin(θ2)*r. 要使sin(θ1)*r
阅读全文
摘要:757D - Felicity's Big Secret Revealed 思路:状态压缩dp。 因为1到20的二进制长度相加正好为74,所以MAX最大为20。 num[i][k]表示i到k这段二进制的十进制形式。 状态:dp[i][j]表示第i位前面有一个划分且之前的划分中有状态j(j是一个集合,
阅读全文
摘要:712D - Memory and Scores 思路:dp。 状态:dp[i][j]表示到第i轮得分为j的方案数。 状态转移:dp[i][j]=∑dp[i-1][j-l](-k≤l≤k),这是一段连续的和,可以用前缀和优化。 代码:
阅读全文
摘要:595C - Warrior and Archer 思路:设最后答案的区间为[l,r],那么r-l等于n/2,因为在(l,r)中的点都是其中一个人挖掉的,[0,l)和(r,n]中的点是另一个人挖掉的,两者相等。 代码:
阅读全文
摘要:100012. 技能树 思路:区间dp。 状态:dp[i][j]表示节点为i,高度小于等于j的方案数。 状态转移:dp[i][j]=∑dp[k][j-1]*dp[i-1-k][j-1]。 节点为i,高度等于j的方案数等于dp[i][j]-dp[i][j-1]。 代码:
阅读全文
摘要:51nod 1682 中位数计数 思路: sum[i]表示到i为止的前缀和(比a[i]小的记为-1,相等的记为0,比a[i]大的记为1,然后求这些-1,0,1的前缀和); hash[sum[i]+N](由于sum[i]会小于0,所以要加N)记录在j<i的情况下sum[i]是否出现过,如果在j>=i的
阅读全文
摘要:610C - Harmony Analysis 思路: 代码:
阅读全文
摘要:算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置。 模板: 例题1:HDU 2089 不要62 代码: #include<bits/stdc++.h> using n
阅读全文
摘要:820B - Mister B and Angle in Polygon 思路: 由于正多边形以某个顶点分成的三角形后以这个点为顶点的角都相等,所以可以确定两个点为相邻点,只要再找一个点就够了。 证明如下 以正八边形为例,正多边形可推广。 如图所示:∠1=∠2=∠3=∠4=∠5=∠6=∠7=∠8。
阅读全文
摘要:757C - Felicity is Coming! 思路:对于不同种类的宝可梦,如果他们所在的gym完全一样那么他们就可以互相进化成对方的种类。还有宝可梦可以进化后种类不变。设有n种所在gym完全一样的宝可梦,那么对于这种gym组合来说,有n!种可供选择的进化方案。 代码:
阅读全文
摘要:385D - Bear and Floodlight 思路:状态压缩dp+计算几何。 i表示亮灯的集合,i的二进制中1表示亮灯,0表示不亮灯。 dp[i]表示在i的亮灯情况下最大的可以照亮的长度。 状态转移方程:dp[i^(1<<j)]=max(dp[i^(1<<j)],cal(dp[i],j))。
阅读全文
摘要:496D - Tennis Game 思路:枚举每个t,求出对应的满足条件的s。 代码:
阅读全文
摘要:680D - Bear and Tower of Cubes 思路:dfs+贪心,设剩余的体积为res,存在a,使得a3 ≤ res,每次取边长为a的立方体或者边长为a-1的立方体(这时体积上限变成a3 -1)。 代码:
阅读全文
摘要:Kolakoski 思路: 从前往后扩展,前后构成映射关系。 代码:
阅读全文
摘要:Euler theorem 思路:找规律 a 余数 个数 1 0 1 2 2 0 2 2 3 0 1 3 3 4 0 1 4 3 5 0 1 2 5 4 6 0 1 2 6 4 7 0 1 2 3 7 5 8 0 1 2 3 8 5 。。。。。。 对于每个a,所有小于ceil(a/2)的自然数都是b
阅读全文
摘要:535D - Tavas and Malekas 思路:先把字符串填充好(后面填充的把前面覆盖掉),然后用KMP查找有多少个子串,如果比填充的少,说明有些覆盖矛盾,输出0;否则,设不确定的点的个数为k,答案为(26^k)%(1e9+7)。 代码:
阅读全文
摘要:1.KMP算法 这个博客写的不错:http://www.cnblogs.com/SYCstudio/p/7194315.html 模板: next数组的求解,那个循环本质就是如果相同前后缀不能加上该位置成就该位置的next数组就一直找相同前后缀的相同前后缀。 求解前缀数组F(也叫next数组): 利
阅读全文
摘要:545D - Queue 思路:忍耐时间短的排在前面,从小到大排序,贪心模拟,记录当前等待时间,如过等待时间大于当前的这个人得忍耐时间,那么就把这个人扔到最后面,不要管他了(哼╭(╯^╰)╮,谁叫你那么没耐心呢),所以也就不用记录为他服务的时间。 代码:
阅读全文
摘要:535C - Tavas and Karafs 思路:对于满足条件的r,max(hl ,hl+1 ,hl+2 ,......,hr )<=t(也就是hr<=t)且∑hi<=t*m。所以通过这个条件二分找出最大的r。 二分的下界为1,上界为使得hi等于t的i(hi=t ==> a+(i-1)*b=t
阅读全文
摘要:385C - Bear and Prime Numbers 思路:记录数组中1-1e7中每个数出现的次数,然后用素数筛看哪些能被素数整除,并加到记录该素数的数组中,然后1-1e7求一遍前缀和。 代码:
阅读全文
摘要:496C - Removing Columns 思路:暴力,用vis标记数组实时记录一下之前的行i+1和上一行i否全相等,false表示全相等。 代码:
阅读全文
摘要:Chess 思路:求C(n,m),除法取余用乘法逆元算。 代码:
阅读全文
摘要:839B - Game of the Rows 思路:先放4个的,然后再放2个的,最后再放1个的。 代码:
阅读全文
摘要:483B - Friends and Presents 思路:这个博客写的不错:http://www.cnblogs.com/windysai/p/4058235.html 代码:
阅读全文
摘要:352B - Jeff and Periods 思路:水题,考验实现(implementation)能力,来一波vector[允悲]。 代码:
阅读全文
摘要:768B - Code For 1 思路:类似于线段树的区间查询。 代码:
阅读全文
摘要:38B - Chess 思路:懂点象棋的规则就可以,看看哪些点可以放马。 代码:
阅读全文
摘要:735B - Urbanization 思路:贪心。人数少的城市住钱最多的那几个人。 不证明了,举个例子吧:a1<a2<a3<a4<a5 (a1+a2+a3)/3+(a4+a5)/2==(2*a1+2*a2+2*a3+3*a4+3*a5)/6① (a1+a2)/2+(a3+a4+a5)/3==(3*
阅读全文
摘要:534B - Covered Path 思路:贪心,每一秒取尽可能大并且可以达到的速度。 画张图吧,不解释了: 代码:
阅读全文
摘要:Classes 思路:a中包含的元素:只参加a的,只参加a且b的,只参加a且c的,只参加a且b且c的; b中包含的元素:只参加b的,只参加a且b的,只参加b且c的,只参加a且b且c的; c中包含的元素:只参加c的,只参加b且c的,只参加a且c的,只参加a且b且c的; ab中包含的元素:只参加a且b的
阅读全文
摘要:Inversion 思路:从大到小排序后,每次找到第一个下标不整出i的输出。 代码:
阅读全文
摘要:595B - Pasha and Phone 代码:
阅读全文
摘要:805D - Minimum number of steps 思路:简单模拟,a每穿过后面一个b,b的个数+1,当这个a穿到最后,相当于把它后面的b的个数翻倍。每个a到达最后的步数相当于这个a与它后面已经到达最后的a之间的b的个数,只要从后面往前扫,记录b的个数,每遇到一个a,把b的个数加入答案,并
阅读全文
摘要:610B - Vika and Squares 思路:注意对环状结构的理解。找到所有值的最小值minn,然后所有值减去这个最小值,再在环状结构里找一个最长连续正数的长度maxl,答案就是minn*n+maxl。 代码:
阅读全文
摘要:757B - Bash's Big Day 思路:筛法。将所有因子个数求出,答案就是最大的因子个数,注意全为1的特殊情况。 代码:
阅读全文
摘要:535B - Tavas and SaDDas 方法一:打表大法。 代码1: 方法二:用了一种类似于二进制的方法,把4映射成1,把7映射成2,那么幸运数就变成了由1和2组成的类似二进制的结构了,再转换成十进制就是答案了。 代码2:
阅读全文
摘要:Rikka with Graph 思路: 官方题解: 代码:
阅读全文
摘要:A - Bear and Prime 100 思路:任何一个合数都可以写成2个以上质数的乘积。在2-100中,除了4,9,25,49外都可以写成两个以上不同质数的乘积。 所以打一个质数加这四个数的表:{2,3,4,5,7,9,11,13,17,19,23,25,29,31,37,41,43,47,4
阅读全文
摘要:Maya Calendar 思路:日历转换,仔细一点。 代码:
阅读全文
摘要:487-3279 思路:用map映射。我的代码用g++TLE,用c++由于没分清cstring和string一直CE。
阅读全文
摘要:彼岸 思路:动态规划。因为不能有连续三个不同的颜色,所以只要看最后三个就可以了。 设dp[n]为长度为n到达彼岸的方案数。 ①当第n-2个颜色和第n-1个颜色相同时,第n个位置可以取任意一种颜色,dp[n-1]==dp[n-2],dp[n] = dp[n-2]*3; ②当第n-2个颜色和第n-1个颜
阅读全文
摘要:838A - Binary Blocks 思路:求一下前缀和,然后就能很快算出每一小正方块中1的个数了,0的个数等于k*k减去1的个数,两个的最小值就是要加进答案的值。 代码:
阅读全文
摘要:N对数的排列问题 思路:设ai为第i个宝宝第一次出现的位置,bi是他第二次出现的位置,则bi-ai=i+1; ∑(bi-ai) = 2+3+4+...+n+1=(n+3)*n/2;① ∑(ai+bi) = 1+2+3+...+2*n=(2*n+1)*n;② ②-①得: 2∑ai = (3*n2 -n
阅读全文
摘要:三足鼎立 思路:arctan(1/s) = arctan(1/u)+arctan(1/v) 1/s = tan(arctan(1/u)+arctan(1/v)) = (tan(arctan(1/u))+tan(arctan(1/v)))/(1-tan(arctan(1/u))*tan(arctan(
阅读全文
摘要:Skip the Class 代码:
阅读全文
摘要:1.单源最短路问题 ①Bellman-ford算法: 例题:poj 1860 Currency Exchange 思路:判断是否存在正权环。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #incl
阅读全文
摘要:算法笔记 1.利用dfs对DAG拓扑排序 当从某顶点v出发的DFS搜索完成时,v的所有后继顶点必定均已被访问过(想像它们均已被删除),此时的v相当于是无后继的顶点,因此在DFS算法返回之前输出顶点v即可得到 DAG的逆拓扑序列。 模板(算法竞赛入门经典): 2.队列实现拓扑排序,明显好理解 以下是判
阅读全文
摘要:435B - Pasha Maximizes 思路:贪心。从高位开始,找到比这一位大的且能在k次交换之内交换到这一位的最大一位数,那这个数交换到这一位,k减去相应的交换次数。这样就保证了高位尽可能大,也就保证了交换后的数尽可能大。 代码:
阅读全文
摘要:度度熊与邪恶大魔王 思路:由于防御和血量的范围很小,所以暴力枚举出对于每种防御造成的每种伤害所需的最小花费,最后只需在伤害大于等于血量的情况下再找到最小花费(这个只需要后缀最小值预处理一下就可以了) 状态:dp[i][j]表示对防御为i的怪兽造成伤害为j的所需最小晶石花费。 状态转移方程:dp[i]
阅读全文
摘要:URAL - 1353 思路:dp。 dp[i][j]表示位数为i的各位相加为j的方案数。 状态转移:dp[i][j]=∑dp[i-1][j-k](k从0到min(9,j))。 代码:
阅读全文
摘要:837E - Vasya's Function 题意:定义函数f(x,y):f(x,0)=0,f(x,y)=1+f(x,y-gcd(x,y)),给你x,y,求f(x,y)。 思路:x=X*gcd(x,y),y=Y*gcd(x,y),X与Y互质。y-gcd(x,y)=(Y-1)*gcd(x,y),如果
阅读全文
摘要:837D - Round Subset 思路:dp。0是由2*5产生的。 ①dp[i][j]表示选i个数,因子2的个数为j时因子5的个数。 状态转移方程:dp[i][j]=max(dp[i][j],dp[i-1][j-c2]+c5)。 初始化:dp[0][0]=0,dp[i][j]=-INF(i!=
阅读全文
摘要:FZU - 2150 思路:bfs。注意初始化啊,忘了清空vector,TLE一个下午。 代码:
阅读全文
摘要:369C - Valera and Elections 思路:dfs,对于搜索到的每个节点,看他后面有没有需要修的路,如果没有,那么这个节点就是答案。 代码:
阅读全文
摘要:UVA - 11853 思路:dfs,从最上面超过上边界的圆开始搜索,看能不能搜到最下面超过下边界的圆。 代码:
阅读全文
摘要:834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值。 dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1,j)表示x+1到j的不同的值。 用线段树维护一下最大值。 上图最后一个点取不到,不解释,不明白请评
阅读全文
摘要:POJ - 2528 Mayor's posters 思路:分治思想。 代码:
阅读全文
摘要:算法笔记 模板: POJ - 3468A Simple Problem with Integers 代码: #include<iostream> #include<cstdio> using namespace std; #define ll long long #define ls rt<<1,l
阅读全文
摘要:835C-Star sky 思路:dp,预处理一下c+1层前缀和。 代码:
阅读全文

浙公网安备 33010602011771号