<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[已注销的博客]]></title><description><![CDATA[嘿你在看我博客！]]></description><link>https://blog.youkuaiyun.com/lab103</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lab103]]></copyright><item><title><![CDATA[UVA 12097 Pie]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/48222609</link><guid>https://blog.youkuaiyun.com/lab103/article/details/48222609</guid><author>lab103</author><pubDate>Sat, 05 Sep 2015 09:44:16 +0800</pubDate><description><![CDATA[思路给定N块半径分别为ri(i=1,2,..,N)的派，问若分给包括自己在内的F+1个人，每个人能分到的派最大是多少？错误的思路是以整数的形式考察r，这将得不到所有的结果，以浮点数的形式考察的思路也是不明晰的，每次的增减标准量应该设为多少？那么直接考察派的大小，可以尝试使用二分法去撞出合理的值。这里，简要的描述二分法。当左边的值相离右边的值的时候
    取左右的中间值尝试
    如果派不够分]]></description><category></category></item><item><title><![CDATA[UVA 10085 The most distant state]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47950307</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47950307</guid><author>lab103</author><pubDate>Mon, 24 Aug 2015 14:10:27 +0800</pubDate><description><![CDATA[分析八数码，规则只能在3×3的棋盘里移动棋子，棋子只能移到空位。 
本题需要求的是在移动的棋盘不重复的情况下可以移动的方式以及棋面。这是一题隐式图搜索。 
给定一个棋面状态，向空白处移动，可以视为空白处向四个方向移动。这样以空白处为研究对象，搜路，直到搜遍整个棋盘。可以发现，相对这题更合适bfs，广度优先搜索而不是深度优先搜索，因为题目所需要的只是最后一个可达状态。下面简要的提出思路。从队列中取出一]]></description><category></category></item><item><title><![CDATA[UVA 10422 Knights in FEN]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47857277</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47857277</guid><author>lab103</author><pubDate>Sat, 22 Aug 2015 10:19:14 +0800</pubDate><description><![CDATA[分析dfs 回溯可解。为什么不剪枝？因为暂时没有什么剪枝的思路。代码#include <cstdio>int G[5][5], startx, starty, min;
int A[5][5] = {1,1,1,1,1, 0,1,1,1,1, 0,0,-1,1,1, 0,0,0,0,1, 0,0,0,0,0};
int next[8][2] = {-2,-1, -2,1, -1,-2, -1,2,]]></description><category></category></item><item><title><![CDATA[UVA 10603 Fill]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47836851</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47836851</guid><author>lab103</author><pubDate>Fri, 21 Aug 2015 16:47:55 +0800</pubDate><description><![CDATA[分析题目给出了三个只知道容量a、b、c 但不知道刻度的空杯子，现将容量为c 的杯子倒满水，问如何移动最小量的水 量出容量d 的水。输出d和最小量，如果不能量出，则输出尽可能接近d的d’和d’的最小量。如何倒水呢？a->b，a->c，b->a，b->c，c->a，c->b，总共六种方式。代码#include <cstdio>
#include <cstring>
#include <queue>
#d]]></description><category></category></item><item><title><![CDATA[UVA 529 Addition Chains]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47810891</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47810891</guid><author>lab103</author><pubDate>Thu, 20 Aug 2015 17:16:55 +0800</pubDate><description><![CDATA[分析给定一个数，尝试构造一个最短的数列，每一个数字由其之前的数字相加得，使得最后一个数字为所给数字。每一次尝试相加其实应该是前一个值尝试加上自它向前的所有值。例如5，尝试1，2，…，下一位应该先尝试4，再尝试3。这里注意需要剪枝！如何判断能否构造成功呢？ 
考虑一下上面的尝试方法，最大值是不是它的2倍呢？如果这个值在有限次数的翻倍也不能到达这个数，那么可以不用尝试了。至于最大长度16个数，还是一个m]]></description><category></category></item><item><title><![CDATA[UVA 317 Hexagon]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47779055</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47779055</guid><author>lab103</author><pubDate>Wed, 19 Aug 2015 13:03:20 +0800</pubDate><description><![CDATA[分析六边形有六条边，三个方向（自顶向下，自左上向右下，自右上向左下）。 
那么现给三组数据，每组数据有三个数值，分别对应三个方向的各自可选的三个值，另要求一个六边形任一方向上的两边的值相等，所以总共可以得到33=273^3=27个互异的六边形。现在需要你从这27个中选出19个拼成如题的形状，给定规则，如果某一方向上的值均相同，那么这个方向上的收益为该值乘以该方向上的六边形个数，综合15个收益，问总收]]></description><category></category></item><item><title><![CDATA[UVA 307 Sticks]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47731883</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47731883</guid><author>lab103</author><pubDate>Mon, 17 Aug 2015 20:57:45 +0800</pubDate><description><![CDATA[分析将一些相同长度的木棍切成多段不超过50的小木棍，现在给出n条小木棍的长度。问原本木棍最短的长度。这里易知，木棍最短的长度理想是所给小木棍最长的长度，可以尝试性遍历所有的可能长度（木棍最多n条，长度最短max(s/n,m)）。用这样一个长度尝试性地拼木棍，如果长度不够，那么继续下钻，如果长度合适，从头继续拼。如果遍历所有木棍都不能拼起，那么尝试下一个长度。代码#include <cstdio>
#]]></description><category></category></item><item><title><![CDATA[UVA 10160 Servicing Stations]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47728737</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47728737</guid><author>lab103</author><pubDate>Mon, 17 Aug 2015 18:14:37 +0800</pubDate><description><![CDATA[分析给定一些城镇和相邻关系，如果要建造服务站，服务站只能服务建造地所在的城镇和其相邻的城镇，问最少要建几个服务站？对每一个城镇，判断是否需要在此处建造服务站，即相邻的城镇是否还需要建站。如果不需要则此处不建站（如该镇自身未建站则需建站）。继续判断下一个城镇。这里进行了一定剪枝，如果当前城镇之前的城镇未能享受服务，并且其相邻的最大城镇小于当前城镇，即不可能再使之前那个城镇享受到服务，所以这种安排是不可]]></description><category></category></item><item><title><![CDATA[UVA 10123 No Tipping]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47722849</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47722849</guid><author>lab103</author><pubDate>Mon, 17 Aug 2015 11:31:34 +0800</pubDate><description><![CDATA[分析这是一双支点的杠杆的题目，问初始时，依次有选择地拿去杠杆上的有质量的物块后，杠杆是否平衡。给出选择。杠杆如何平衡？ 
因为有两个支点，对于任一支点，如果左右两侧物块的力矩和相等，则杠杆平衡，若两支点均不能满足则杠杆失衡。 
需要注意的是，因为杠杆本身具有重量，比如以右侧支点研究对象，那么杠杆可以视为距该支点1.5单位的一个质量为W的物块，会影响平衡。这里可以使用逆向思维，仅作思路简化。如何拿，不]]></description><category></category></item><item><title><![CDATA[UVA 193 Graph Coloring]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47703201</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47703201</guid><author>lab103</author><pubDate>Sun, 16 Aug 2015 16:15:35 +0800</pubDate><description><![CDATA[分析复健，一题回溯。 
与其他的二染色不同，本题需要穷尽所有可能，求其最多可染黑多少个点。思路对第i个点
    如果i>V，是一个虚点，表示所有点已经探测完毕
        比较染点个数，保存结果
    如果i<V，是一个实点
        遍历该点的所有路
            如果相邻的点未染色，则染色并进入第i+1个点
        将第i个点不染色（如过相邻的点染色也表示不染色）]]></description><category></category></item><item><title><![CDATA[UVA 1149 Bin Packing]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47397365</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47397365</guid><author>lab103</author><pubDate>Mon, 10 Aug 2015 13:23:44 +0800</pubDate><description><![CDATA[分析至多俩，大小配。代码#include <cstdio>
#include <algorithm>
#define MAX_N 100005
using std::sort;int N, L, A[MAX_N];void solve()
{
    sort(A, A+N);
    int l = 0, r = N-1, a = 0;
    while (l <= r)
        if]]></description><category></category></item><item><title><![CDATA[UVALive 3266 Tian Ji -- The Horse Racing]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47394991</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47394991</guid><author>lab103</author><pubDate>Mon, 10 Aug 2015 10:31:14 +0800</pubDate><description><![CDATA[分析贪心，以最大的收益（最小的费用，即两匹马速度的差）与齐王赛马。思路如果 当田忌最慢的马比齐王最慢的马快，赢。
否则 如果 当田忌最快的马比齐王最快的马快，赢。
    否则 如果 当田忌最慢的马比齐王最快的马慢，输。
        否则 平。
代码#include <cstdio>
#include <algorithm>
#define MAX_N 1005
using std::sort;]]></description><category></category></item><item><title><![CDATA[ACdream 1073 雷霆战机]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47381585</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47381585</guid><author>lab103</author><pubDate>Sun, 09 Aug 2015 22:54:46 +0800</pubDate><description><![CDATA[分析题目长，理一理。Lv1 ---A---> Lv25 ---B---> Lv30 ---C---> Lv60 ---D---> Lv75
需要完成的是从Lv1走向Lv75。这里选取A、B、C、D为主体，选取足够的经验球填充（或者选取当前经验为主体，每进一阶，将经验置为该阶的最低值，因为经验禁止溢出，也是因为这样所以放弃了这种考虑方式）。也就是说，需要挑选经验球来填A、B、C、D这四个经验池。 
如]]></description><category></category></item><item><title><![CDATA[UVA 11292 Dragon of Loowater]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47381357</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47381357</guid><author>lab103</author><pubDate>Sun, 09 Aug 2015 22:41:13 +0800</pubDate><description><![CDATA[分析虽然屠龙的勇士极其勇敢，但是这题难度并不高。斩杀n头龙并没有指定从哪一个头开始，也没有指定从哪一个勇士开始。那么斩头的策略应该是由小及大，这样，可以让勇士由小及大的斩杀，遍历所有的勇士，斩尽其能斩之头，终得如下代码。代码#include <cstdio>
#include <algorithm>
#define MAX 20005
using std::sort;int H[MAX], C[MA]]></description><category></category></item><item><title><![CDATA[UVA 639 Don't Get Rooked]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47319873</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47319873</guid><author>lab103</author><pubDate>Thu, 06 Aug 2015 17:08:19 +0800</pubDate><description><![CDATA[分析摆棋盘，但是只需要判断横纵有阻隔或者不能多个。所以只需要回溯法，先摆上再检查，如果不能这么摆再拿掉继续尝试。每完成一次棋盘取最大值即得到答案。代码#include <cstdio>
#define MAX_N 5char G[MAX_N][MAX_N];
int N, max;bool check(int x, int y)
{
    int next[4][2] = {{0,1}, {0,-]]></description><category></category></item><item><title><![CDATA[UVA 216 Getting in Line]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47318579</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47318579</guid><author>lab103</author><pubDate>Thu, 06 Aug 2015 16:09:50 +0800</pubDate><description><![CDATA[分析一题普通的题目。需要你选择最短的一条路连接多台计算机。 
问题在于选哪两台连接？暴力求解。假设把计算机标号，求其全排列。 
对于每一个排列，两两求路径，累加求总长，如果累加过程中已经大于等于最小值，可以直接返回，无需再计算（不过这么做好像并没有什么卵用..）。如果小于，则更新要输出的答案，简单粗暴。思路对于{0,1,2,...,n−1}\{0,1,2,...,n-1\}如何全排列？int per]]></description><category></category></item><item><title><![CDATA[UVA 10054 The Necklace]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47311927</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47311927</guid><author>lab103</author><pubDate>Thu, 06 Aug 2015 09:53:14 +0800</pubDate><description><![CDATA[分析以颜色为点，线为边，判断是否有欧拉回路（偶数结点度数），输出这条通路（dfs）。代码#include <cstdio>
#include <cstring>
#define MAX_V 55
#define MAX_E 1005int G[MAX_V][MAX_V], E, node[MAX_E][2], top;void dfs(int u)
{
    for (int v = 1; v <]]></description><category></category></item><item><title><![CDATA[HDU 2553 N皇后问题]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47303187</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47303187</guid><author>lab103</author><pubDate>Wed, 05 Aug 2015 20:45:48 +0800</pubDate><description><![CDATA[分析一题经典的回溯法，需要打表。代码#include <cstdio>
#define MAX_N 11int n, res;
int c[MAX_N], ans[MAX_N];void dfs(int cur)
{
    if (cur == n+1) res++;
    else for (int i = 1; i <= n; i++) {
        c[cur] = i;]]></description><category></category></item><item><title><![CDATA[UVA 729 The Hamming Distance Problem]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47302031</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47302031</guid><author>lab103</author><pubDate>Wed, 05 Aug 2015 19:22:45 +0800</pubDate><description><![CDATA[分析Hamming distance，汉明距离，举一些栗子。"karolin" and "kathrin" is 3.
"karolin" and "kerstin" is 3.
1011101 and 1001001 is 2.
2173896 and 2233796 is 3.题目给定字符串的长度NN和汉明距离HH，按字典序输出长度为NN且与all 0的汉明距离为HH的字符串。 
其实只需要填充]]></description><category></category></item><item><title><![CDATA[UVA 10098 Generating Fast]]></title><link>https://blog.youkuaiyun.com/lab103/article/details/47299287</link><guid>https://blog.youkuaiyun.com/lab103/article/details/47299287</guid><author>lab103</author><pubDate>Wed, 05 Aug 2015 16:23:18 +0800</pubDate><description><![CDATA[分析给一串，要求输出其字典序全排列。 
相对需要注意的是，该串可能有重复数字，并且不应输出重复的排列。这里可以在填充每一格的时候，检查一下当前已经填充的格子里和这格相同的有几个，判断有没有超过给定串里头的限定个数，如果没有可以填充。另外不能重复，可以考虑使用这一格前，检查上一次使用的格是不是和这格内容一致，如果一致那么因为只考虑内容重复，会导致再输出一组重复排列。当然，使用next_permutat]]></description><category></category></item></channel></rss>