<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[最光阴的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u013621213</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u013621213]]></copyright><item><title><![CDATA[POJ 1579 Function Run Fun]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/44181511</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/44181511</guid><author>u013621213</author><pubDate>Tue, 10 Mar 2015 21:47:02 +0800</pubDate><description><![CDATA[这题时简单的dp题，不过我也就能写写这样简单的题了，不过注意一点。
没什么说的，直接按照题目顺序就可以了。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int dp[21][21][21];
int recursion(int a,int b,int c)
{
    i]]></description><category></category></item><item><title><![CDATA[POJ 1410 Intersection]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/44067191</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/44067191</guid><author>u013621213</author><pubDate>Wed, 04 Mar 2015 22:21:53 +0800</pubDate><description><![CDATA[这题我就是用最原始的思考方法，其中有许多细节要注意。主体思想就是四条边分别和线段比较。
线段在矩形内要考虑。
我的代码有点乱有点长，其中有的部分可以写成函数。
#include
#include
#include
#include
using namespace std;
int x_s,y_s,x_e,y_e,x_l,y_t,x_r,y_b;
bool f1(int x)
{
    re]]></description><category></category></item><item><title><![CDATA[POJ 1269 Intersecting Lines]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/44043137</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/44043137</guid><author>u013621213</author><pubDate>Tue, 03 Mar 2015 20:50:29 +0800</pubDate><description><![CDATA[本题就是判断直线之间的关系，我的思想就是先判断是否共线，然后判断是否平行，剩下的肯定相交，直接求交点就可以了。在判断平行的时候只要看两者的斜率是否相等就可以了，因为在判断平行之前已经判断是否共线，所以只要斜率相等，肯定就是平行了。求交点的时候就是用的数学方法，注意斜率不存在的情况就可以了。
#include
#include
#include
#include
using namespace s]]></description><category></category></item><item><title><![CDATA[POJ 2318 TOYS]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/44025281</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/44025281</guid><author>u013621213</author><pubDate>Mon, 02 Mar 2015 22:21:15 +0800</pubDate><description><![CDATA[这题计算几何的部分还是比较简单的，重点是那个二分有点麻烦（大牛忽略），每次写二分自己都得用笔模拟一番，然后才能确定。
因为y1,y2是公共的，所以存储的时候线段的时候只要存储x的坐标就可以了。然后就是判断是在右边还是在左边。
#include
#include
#include
#include
using namespace std;
const int N=5005;
struct Lin]]></description><category></category></item><item><title><![CDATA[POJ 1861 Network]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43899149</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43899149</guid><author>u013621213</author><pubDate>Sat, 21 Feb 2015 19:49:58 +0800</pubDate><description><![CDATA[这题就是用最小生成树中的kruskal算法的模板题。
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=1002;
const int M=15002;
const int inf=1<<28;
struct edge
{
    int u,v,cost;
}es[M];
int]]></description><category></category></item><item><title><![CDATA[HDU 1009 今年暑假不AC]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43898033</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43898033</guid><author>u013621213</author><pubDate>Sat, 21 Feb 2015 10:50:48 +0800</pubDate><description><![CDATA[本题算是贪心中的基础题。
#include 
#include 
#include 
#include 
using namespace std;
const int N=102;
struct time
{
    int s,e;
}data[N];
int n;
bool cmp(time a,time b)
{
    if(a.e==b.e)
        return a.s<b.]]></description><category></category></item><item><title><![CDATA[POJ 2485 Highways]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43835969</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43835969</guid><author>u013621213</author><pubDate>Sun, 15 Feb 2015 16:30:03 +0800</pubDate><description><![CDATA[只要把prim算法稍微改一下就可以了。
#include 
#include 
#include 
#include 
using namespace std;
const int N=505;
const int inf=1<<28;
int cost[N][N],mincost[N];
bool used[N];
int n;
int prim()
{
    int _max=0;]]></description><category></category></item><item><title><![CDATA[ZOJ 1586 QS Network]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43835357</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43835357</guid><author>u013621213</author><pubDate>Sun, 15 Feb 2015 15:13:04 +0800</pubDate><description><![CDATA[这题还是用最小生成树的模板就可以解决，不过在边的值上面要稍微处理一下。
#include 
#include 
#include 
#include 
using namespace std;
const int N=1000;
const int inf=1<<28;
int cost[N][N],mincost[N],brand[N];
bool used[N];
int n;
int pr]]></description><category></category></item><item><title><![CDATA[HDU 1087 Super Jumping! Jumping! Jumping!]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43496743</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43496743</guid><author>u013621213</author><pubDate>Wed, 04 Feb 2015 22:17:11 +0800</pubDate><description><![CDATA[动态规划题目做的真的很少，自己也不太熟练，这题也是连蒙带猜才弄出来。
dp[i]表示以data[i]结尾的最大分数，那么状态转移方程为：dp[i]=max(dp[j]+data[i],data[i])(0
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int N]]></description><category></category></item><item><title><![CDATA[HDU 1097 A hard puzzle]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43489455</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43489455</guid><author>u013621213</author><pubDate>Wed, 04 Feb 2015 17:48:34 +0800</pubDate><description><![CDATA[这道题其实挺简单的，因为只看最后一位，所以就讨论最后一位的情况就可以了。而最后一位显然是有周期性的。
#include
#include
#include
#include
#include
using namespace std;
int main()
{
    int a,b,mode[12];
    while(scanf("%d%d",&a,&b)!=EOF)
    {
     ]]></description><category></category></item><item><title><![CDATA[HDU 1098 Ignatius's puzzle]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43488009</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43488009</guid><author>u013621213</author><pubDate>Wed, 04 Feb 2015 16:35:57 +0800</pubDate><description><![CDATA[这题刚开始看的时候，的确被吓了一跳，13次方，这也太大了，而且还是任意的x，有点麻烦，但是仔细分析之后，发现有点窍门：
65|f(x)，不妨设5*x^13+13*x^5+k*a*x=m*65，于是可以得到：
x*(5*x^12+13*x^4+k*a)=m*65，继续得到：
x*(5*x^12+13*x^4+k*a)/65=m，因为是对于任意的x均成立，所以(5*x^12+13*x^4+k*a]]></description><category></category></item><item><title><![CDATA[ZOJ 1409 Communication System]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43459877</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43459877</guid><author>u013621213</author><pubDate>Tue, 03 Feb 2015 22:43:41 +0800</pubDate><description><![CDATA[这题用的是贪心算法，不过在贪心之前还是要进行部分处理的。
首先就是题目要求B/P尽可能的大，所以P应该尽可能的小，B应该尽可能的大。但是B和P的处理方式是不一样的，B是所有带宽中最小的那一个，P是所有设备的总价钱，所以我能想到一个方法就是一个一个的枚举B，本来我是不敢这样想的，可是题目给的时间比较长，我觉得应该问题不大，当我运行之后，竟然只是0ms，让我吃了一惊。然后再选择设备，这时候就要用到贪]]></description><category></category></item><item><title><![CDATA[HDU 1338 Game Prediction]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43457917</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43457917</guid><author>u013621213</author><pubDate>Tue, 03 Feb 2015 21:25:52 +0800</pubDate><description><![CDATA[这题我用的是贪心算法，我的理解是这样的：
要求我最少能赢的次数，就是求别人最多能赢的次数。首先把我的牌先升序排序，然后我从小开始出，对于我出的牌，别人应该尽可能的压，而且用他们比我大的最小的那张牌；如果他们不压，那么他们后面这张牌就很有可能用不上，就少赢一次。
#include
#include
#include
#include
#include
#include
using namespa]]></description><category></category></item><item><title><![CDATA[HDU 1102 Constructing Roads]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43456861</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43456861</guid><author>u013621213</author><pubDate>Tue, 03 Feb 2015 20:50:31 +0800</pubDate><description><![CDATA[这题很显然用最小生成树来做。不过要稍微变化一下，一开始我打算用一个布尔数组来标记哪些村庄之间已经用道路连接，可是我发现写起来有点费劲，于是突然想到如果把已经修建的道路想象成0是不是就可以呢，仔细想了一下，貌似真的可以，提交之后果然过了。
#include
#include
#include
#include
#include
#include
using namespace std;
const]]></description><category></category></item><item><title><![CDATA[POJ 2231 Moo Volume]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43417507</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43417507</guid><author>u013621213</author><pubDate>Mon, 02 Feb 2015 22:01:29 +0800</pubDate><description><![CDATA[这题用的是贪心算法来算的，贪心策略如下：
dist数组表示各个牛的位置距第一个牛的距离，当然之前要对牛的位置进行升序排序。
设a为第一头牛距各头牛的距离的总和，然后从第二头牛开始遍历，假设遍历到第i头牛时，那么标准为：
t=t-(n-i)*d+i*d，
各变量的含义为：t一开始为a，然后每次就是该表达式运算之后的值；
n为牛的总数；
d为第i头牛和第i-1头牛之间的距离。这个公式画图其]]></description><category></category></item><item><title><![CDATA[HDU 1051 Wooden Sticks]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43415843</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43415843</guid><author>u013621213</author><pubDate>Mon, 02 Feb 2015 21:14:28 +0800</pubDate><description><![CDATA[这题就是贪心算法，先对length升序排列，如果length相等，再按weight升序排列；反之亦可。然后根据题目要求进行选择即可。
不过我在写排序函数的时候出了一点问题，害得我还一度以为我的贪心策略是错的。
#include
#include
#include
#include
#include
#include
using namespace std;
const int N=5005;
]]></description><category></category></item><item><title><![CDATA[HDU 1031 Jungle Roads]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43380603</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43380603</guid><author>u013621213</author><pubDate>Sun, 01 Feb 2015 23:41:48 +0800</pubDate><description><![CDATA[这题就是最小生成树的模板题，可是这题的数据给的有点坑。
首先我不清楚给出的村庄是否就是按照从A开始的字母顺序排列，所以我就用一个exist布尔数组来标记这个村庄是否存在；
在者就是两个村庄之间可能有多条路，所以存储的时候应该存储最小的，可是题目没有这样的例子，哎！
#include
#include
#include
#include
#include
#include
using name]]></description><category></category></item><item><title><![CDATA[POJ 3080 Blue Jeans]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43374039</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43374039</guid><author>u013621213</author><pubDate>Sun, 01 Feb 2015 20:03:59 +0800</pubDate><description><![CDATA[这题绝对是被坑的滴血，我真想对网上某某人说，去你大爷的。
这题的思路挺简单，本来我以为要用的什么高深的算法，可是听别人说，直接暴力就可以解决，于是就做了。本来很快写好代码，可是语句代码坑了我好长好长时间。
#include
#include
#include
#include
#include
#include
using namespace std;
char dna[11][65];
ch]]></description><category></category></item><item><title><![CDATA[POJ 3463 Sightseeing]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43371979</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43371979</guid><author>u013621213</author><pubDate>Sun, 01 Feb 2015 15:33:47 +0800</pubDate><description><![CDATA[最短路和次短路的结合，之前没有碰到过次短路。为此自己特地把最短路知识又复习了一遍，然后看了其他人的想法，最后才写了出来，具体来说，其实不太难，重点是理解思想。存储的时候采用邻接表。


解法：

用到的数组：dist[i][0]:i到起点的最短路，dist[i][1]:i到起点的严格次短路

visited[i][0],visited[i][1]:同一维的visited数组，标记距离]]></description><category></category></item><item><title><![CDATA[UVa 10285 Longest Run on a Snowboard]]></title><link>https://blog.youkuaiyun.com/u013621213/article/details/43346643</link><guid>https://blog.youkuaiyun.com/u013621213/article/details/43346643</guid><author>u013621213</author><pubDate>Sat, 31 Jan 2015 21:44:23 +0800</pubDate><description><![CDATA[这题我的第一感觉就是用DFS。自己写的貌似不够完美，因为我看见别人的时间都特别的短，而我的有点长。
#include
#include
#include
#include
#include
#include
using namespace std;
const int N=102;
int height[N][N];
bool visited[N][N];
int dx[]={1,0,-1,0}]]></description><category></category></item></channel></rss>