<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FirstLucker]]></title><description><![CDATA[我的ACM之路]]></description><link>https://blog.youkuaiyun.com/FirstLucker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FirstLucker]]></copyright><item><title><![CDATA[HDU 5531 Rebuild 相切的圆们]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/49557517</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/49557517</guid><author>FirstLucker</author><pubDate>Sun, 01 Nov 2015 13:25:37 +0800</pubDate><description><![CDATA[终于迎来了长春的重现。赛场上太多的遗憾，比赛的时候唯一看都没看一眼的题就是这个题，太可惜了。连同B题一起，为了抢个FB对不住打重现赛的童鞋们了。。。。。求放过，也不知道这个时候写题解算不算违规呢哈哈。。。。。。








题意：按顺序给出一个多边形，以多边形的每个顶点为圆心作圆，使得任意两相邻点对应的圆相切，求所有圆面积总和的最小值。






画个图算两下]]></description><category></category></item><item><title><![CDATA[HDU 5528 Count a × b 纪念长春站的遗憾]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/49336427</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/49336427</guid><author>FirstLucker</author><pubDate>Thu, 22 Oct 2015 18:50:18 +0800</pubDate><description><![CDATA[18日的长春现场赛已经过去4天。虽然说拿到学校的首届银牌还是很值得高兴的，但B题作为这场比赛唯一的数论题，由于时间不够未能AC我实在是感到遗憾。最后半个小时我只推公式推到了sqrt分解log求约数再处理的复杂度，如果再多一点点时间，如果思维再更快点，也许能推出最简化的公式，也许就能6题，就能绝杀金牌。。。可惜没有如果，感觉自己能力还不够，就这样与金牌失之交臂。下午重整了一下大脑，回想起赛场上推题的]]></description><category></category></item><item><title><![CDATA[HDU 5321 Beautiful Set 美丽集合]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47128347</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47128347</guid><author>FirstLucker</author><pubDate>Wed, 29 Jul 2015 17:03:33 +0800</pubDate><description><![CDATA[题意：给定一个集合，含有n个数。浙理工先生和杭电先生各自有计算这个集合美丽值的方法。
浙理工先生的计算方法是：对于这个n个数的某个排列，此排列的美丽值为这个排列所有的区间最大公约数之和。然后这个集合的美丽值为n个数的所有排列的美丽值之和。
杭电先生的计算方法是：在这个n个数中选出k(1 ≤ k ≤ n)个数，对于某种选取方案，这种方案的美丽值为k个数的最大公约数乘上k。然后这个集合的美丽值为所]]></description><category></category></item><item><title><![CDATA[LA 4123 Glenbow Museum 葛伦堡博物馆]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47048405</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47048405</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 22:50:35 +0800</pubDate><description><![CDATA[题意：对于一个边平行于坐标轴的多边形，我们可以用一个由R和O组成的序列来描述它：从某个顶点开始按照逆时针顺序走，碰到一个90°的内角记R；碰到一个270°的内角记O。这样的序列称为角度序列。定义星型多边形为多边形中存在一个点可以看到多边形边界上每一个点。现在给定正整数n，求有多少个长度为L的角度序列至少可以对应一个星型多边形。其中多边形的每条边长任意。










]]></description><category></category></item><item><title><![CDATA[UVa 11361 Investigating Div-Sum Property 数字和与倍数]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47046547</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47046547</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 20:54:50 +0800</pubDate><description><![CDATA[题意：给定正整数A，B，K问区间[A，B]之间有多少个数满足它本身是k的倍数且它的各个十进制数位上的数之和也是K的倍数。














典型数位DP。对于区间计数问题，一般都是将区间先转化为左边界为1的，设区间[A，B]中满足条件的数的个数为cal(A，B)，则cal(A，B) = cal(1，B) - cal(1，A - 1)。首先int范围内数位和最]]></description><category></category></item><item><title><![CDATA[LA 3516 Exploring Pyramids 多叉树遍历]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47044619</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47044619</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 17:47:58 +0800</pubDate><description><![CDATA[题意：给出一棵多叉树，每个结点的孩子都有左右的顺序之分。定义该多叉树的遍历方式为根→从左往右遍历孩子→根。给出遍历的序列，求有多少种多叉树满足该遍历序列。












区间DP。设dp[i][j]为序列中i~j位置的子区间所对应的多叉树的个数。边界值为dp[i][i] = 1。然后对于一个子区间，若长度为偶数或者头尾字符不同，则该序列无法满足一颗多叉树。否则，]]></description><category></category></item><item><title><![CDATA[UVa 11806 Cheerleaders 拉拉队]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47041883</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47041883</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 15:35:16 +0800</pubDate><description><![CDATA[题意：在一个n行m列的网格内放k个石子，每个网格最多放一个，且保证第一行，第一列，最后一行，最后一列均要有石子。求有多少种不同放法。








容斥计数问题。我们考虑不符合要求的放法，即第一行r1、第一列c1、最后一行rn、最后一列cm中至少有一个没有石子。计某个事件这样的方案数为S，则答案为S(r1) U S(rn) U S(c1) U S(cm)，然后用容斥计算即可，答]]></description><category></category></item><item><title><![CDATA[UVa 11401 Triangle Counting 数三角形]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47041109</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47041109</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 14:55:05 +0800</pubDate><description><![CDATA[题意：求从1~n中选3个数构成三角形的三边有多少种方案。










枚举显然会TLE。n^2复杂度也不行。后来我提交发现就算是O(n)也会TLE。。。。。估计testcase很多吧。那只能打表了。用递推，设max_len[i]表示最长那条边为i的三角形个数，则有max_len[i] = max_len[i - 1] - ((i - 1)/2 - 1) + i - 3]]></description><category></category></item><item><title><![CDATA[UVa 11538 Chess Queen 象棋中的皇后]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47039977</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47039977</guid><author>FirstLucker</author><pubDate>Fri, 24 Jul 2015 13:47:51 +0800</pubDate><description><![CDATA[题意：在n行m列的棋盘上放置两个互相攻击的皇后（一白一黑），相互攻击是指两皇后在同行或同列或同斜线上。求放置的方案数。








若n > m则交换n和m不影响结果，于是假设n ≤ m。
分类讨论即可：
同行：选n行，每行m*(m - 1)种放法
同列：选m列，每列n*(n - 1)种放法
于是同行列共m*n*(m + n - 2)种放法。
同斜线：设斜线长度为i]]></description><category></category></item><item><title><![CDATA[Codeforces 560B Gerald is into Art 放矩形]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47014513</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47014513</guid><author>FirstLucker</author><pubDate>Thu, 23 Jul 2015 01:56:59 +0800</pubDate><description><![CDATA[题意：给定一个大矩形和两个小矩形，问两个小矩形是否可以同时放在这个大矩形中。条件是两个小矩形不能重叠（但可以共边）且不能超过大矩形边界。














想法很简单，将一个小矩形放在大矩形左上角，另一个小矩形放在大矩形右下角，看是否重叠即可。不过要注意，有4种放法。因为小矩形可以横着放也可以竖着放，另外就是不要忘了判断是否会超过大矩形边界！



]]></description><category></category></item><item><title><![CDATA[Codeforces 560A Currency System in Geraldion 货币组合]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47014507</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47014507</guid><author>FirstLucker</author><pubDate>Thu, 23 Jul 2015 01:52:18 +0800</pubDate><description><![CDATA[﻿﻿
题意：给出n种货币的面值，每种面值的货币都有无限多个，求不能表示出的货币面值的最小值。若所有面值都能表示则输出-1。












个人感觉吧。这样的题看起来很有趣，但是想出来了又觉得很没意思= =哈哈。看有没有面值为1的货币呗，如果有的话，那么任意面值都能用若干个1加起来表示。如果没有的话，那最小不能表示的面值不就是1么！






]]></description><category></category></item><item><title><![CDATA[Codeforces 559B Equivalent Strings 等价串]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47014257</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47014257</guid><author>FirstLucker</author><pubDate>Thu, 23 Jul 2015 01:43:15 +0800</pubDate><description><![CDATA[题意：给定两个等长串a，b，判断是否等价。等价的含义为：若长度为奇数，则必须是相同串。若长度是偶数，则将两串都均分成长度为原串一半的两个子串al，ar和bl，br，其中al和bl等价且ar和br等价，或者al和br等价且ar和bl等价。














实际上很水。直接按照题意模拟写个递归分治就可以求。比赛的时候总觉得这样暴力写会TLE，因为算了下大概是4]]></description><category></category></item><item><title><![CDATA[Codeforces 559A Gerald's Hexagon 数三角形]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/47014191</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/47014191</guid><author>FirstLucker</author><pubDate>Thu, 23 Jul 2015 01:24:20 +0800</pubDate><description><![CDATA[题意：按顺序给出一个各内角均为120°的六边形的六条边长，求该六边形能分解成多少个边长为1的单位三角形。










把单位三角形面积看做1，实际上就是求六边形面积。随便找六边形的三条互相不相邻的边，分别以这三条边为基础向外扩展一个等边三角形，即可将原六边形补成一个大等边三角形，然后用大等边三角形面积减去补上的3个小等边三角形面积就是原来六边形的面积。而等边三角形面积]]></description><category></category></item><item><title><![CDATA[HDU 5297 Y sequence Y数列]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46991885</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46991885</guid><author>FirstLucker</author><pubDate>Tue, 21 Jul 2015 20:50:35 +0800</pubDate><description><![CDATA[题意：给定正整数n和r，定义Y数列为从正整数序列中删除所有能表示成a^b(2 ≤ b ≤ r)的数后的数列，求Y数列的第n个数是多少。例如n = 10， r = 3，则Y数列为2 3 5 6 7 10 11 12 13 14，第10个数是14。










很有趣的一道数论题。题目给出的范围是long long范围的。所以显然不用去枚举每个数了，更不用说判断每个数是不]]></description><category></category></item><item><title><![CDATA[HDU 5288 OO’s Sequence 区间个数]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46991131</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46991131</guid><author>FirstLucker</author><pubDate>Tue, 21 Jul 2015 19:59:45 +0800</pubDate><description><![CDATA[题意：对一个给定的数列，定义一个函数f(l, r)，表示在[l, r]这个区间内，满足不是区间内任何其他数的倍数的数的个数。比如一个区间内的数为2,3,4，那么函数值为2。因为2和3都不是其他任何数的倍数，但4是2的倍数。现在要求所有的区间的函数值的和。










看似比较复杂，不过我们可以换一种思路。与其求区间的函数值之和，不如计算每个数被算了多少次。打个比方，第]]></description><category></category></item><item><title><![CDATA[Codeforces 558C Amr and Chemistry 全都变相等]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46888253</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46888253</guid><author>FirstLucker</author><pubDate>Wed, 15 Jul 2015 09:06:16 +0800</pubDate><description><![CDATA[题意：给定一个数列，每次操作只能将某个数乘以2或者除以2（向下取整）。求最小的操作次数使得所有的数都变为相同值。












比赛的时候最后没实现。唉，之后才A掉。开始一直在想二分次数，但是半天想不出怎么判断。后来发现其实每个数能变成的数很少很少（最多400个不到），于是想到用数学方法+一点暴力，可惜时间不够了。
也不能完全算是数论题。只是用到了一些]]></description><category></category></item><item><title><![CDATA[Codeforces 558B Amr and The Large Array 数组美丽值]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46887909</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46887909</guid><author>FirstLucker</author><pubDate>Wed, 15 Jul 2015 07:56:52 +0800</pubDate><description><![CDATA[题意：给一个数组，记数组中出现次数最多的元素出现的次数为这个数组的美丽值，求这个数组长度最短的子数组（要连续），使得该子数组的美丽值与原数组美丽值相等。要求输出子数组的起始和结束位置下标（从1开始）。










也是个水题。每个数最大才10^6，用hash存储每个数出现的次数即可。注意有可能有多个不同的元素出现的次数都相等且为最大，需要一一判断。遍历数组的时候可以用]]></description><category></category></item><item><title><![CDATA[Codeforces 558A Lala Land and Apple Trees 摘苹果]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46887521</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46887521</guid><author>FirstLucker</author><pubDate>Wed, 15 Jul 2015 04:45:42 +0800</pubDate><description><![CDATA[题意：n棵苹果树在x轴上排成一排，每棵苹果树有一个坐标值（均不为0）和苹果数量。现在某人从0开始任意选择一个方向走，每遇到一颗新的苹果树就摘下所有苹果，然后掉转方向直到遇到下一颗之前没遇到过的苹果树然后再摘下所有苹果，如此往复直到再也遇不到新的苹果树。问最多能摘下多少个苹果。








水题。以0为中心，对坐标排序后计算左右两边的苹果树个数。如果左边小于右边，就先从左边摘，]]></description><category></category></item><item><title><![CDATA[SPOJ 297 Aggressive cows 最小间隔]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46865243</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46865243</guid><author>FirstLucker</author><pubDate>Mon, 13 Jul 2015 17:22:11 +0800</pubDate><description><![CDATA[题意：给定n个从小到大排好序的数，要从中选出c个数，使得任意两个相邻数的间隔最小的值尽量的大。求最大的最小间隔。






最小值最大这样的问题嘛，当然还是首选二分吧，如果可行的话。显然这题二分是可以做的。首先我们这样想。如果取出某c个数中最小的数不是第一个数，那么我们将它换成第一个数，这样第一个数和第二个数的间隔不会变小，所以最小的间隔一定不会变小。因此我们选数的时候必选第一个（]]></description><category></category></item><item><title><![CDATA[HDU 5281 Senior's Gun 杀怪]]></title><link>https://blog.youkuaiyun.com/FirstLucker/article/details/46864271</link><guid>https://blog.youkuaiyun.com/FirstLucker/article/details/46864271</guid><author>FirstLucker</author><pubDate>Mon, 13 Jul 2015 16:33:24 +0800</pubDate><description><![CDATA[题意：给出n把枪和m个怪。每把枪有一个攻击力，每个怪有一个防御力。如果某把枪的攻击力不小于某个怪的防御力则能将怪秒杀，否则无法杀死。一把枪最多只能杀一个怪，不能用多把枪杀同一个怪。每杀一次怪可以得到枪的攻击力减去怪的防御力的的分数。求得分的最大值。










贪心。首先我们考虑这样一种情况：用攻击力为A的枪杀防御力为a的怪，攻击力为B的枪杀防御力为b的怪。则得分为A]]></description><category></category></item></channel></rss>