<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hotwolf---Forest]]></title><description><![CDATA[无论多没有胜算的游戏，既然已经开始，就理应全力以赴！]]></description><link>https://blog.youkuaiyun.com/hot_wolf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hot_wolf]]></copyright><item><title><![CDATA[poj 1379 Run Away]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/8617841</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/8617841</guid><author>hot_wolf</author><pubDate>Wed, 27 Feb 2013 15:28:41 +0800</pubDate><description><![CDATA[题意就是寻找最安全的点，也就是找到一点使得他在题目给的区域之内与所有点最短距离最大，很容易想到这题可以用不断趋近的模拟退火来做，先随机一部分点集，对每个点分别点的扩展，选取较优点来替代原来的点，然后不断缩小步长，点的扩展时试了几种方法，发现还是使用正余弦比较靠谱。
#include
#include
#include
#include
#include
#include
using namesp]]></description><category></category></item><item><title><![CDATA[poj 3449 Geometric Shapes]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/8610501</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/8610501</guid><author>hot_wolf</author><pubDate>Mon, 25 Feb 2013 18:20:10 +0800</pubDate><description><![CDATA[这是一道没有多少人做的水题，主要题目的要求比较多，对输入和输出的要求高，只要处理好输入输出，然后对每个多边形的每条边分别进行判断就能做出来了。
#include
#include
#include
#include
using namespace std;
int ch[26];
struct point{
	double x,y;
};
point polygon[26][22];
doubl]]></description><category></category></item><item><title><![CDATA[Project Euler Problem 47]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7884323</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7884323</guid><author>hot_wolf</author><pubDate>Sun, 19 Aug 2012 22:11:40 +0800</pubDate><description><![CDATA[这道题是完全暴力做的，跑了几十秒：
#include
bool dis(int nn)
{
	int i,top=0;
	for(i=2;i<=nn;i++)
	{
		if(nn%i==0)
		{
			top++;
			nn/=i;
		}
		while(nn%i==0)
			nn/=i;
	}
	if(top==4)			//有四个质因数才行
		return true;
	ret]]></description><category></category></item><item><title><![CDATA[Project Euler Problem 50]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7883561</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7883561</guid><author>hot_wolf</author><pubDate>Sun, 19 Aug 2012 17:02:20 +0800</pubDate><description><![CDATA[这是简单题，直接枚举每个起始的质数，然后连续质数相加，记录下能得到的最大的质数的项数，然后找到最大项数即可。
#include
bool isPrime(int n)			//判断质数
{
	int i;
	for(i=2;i*i<=n;i++)
		if(n%i==0)
			return false;
	return true;
}
int main()
{
	int xx,num,sum=]]></description><category></category></item><item><title><![CDATA[POJ 1835 宇航员]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7773151</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7773151</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 20:16:09 +0800</pubDate><description><![CDATA[题意是一个可以在三维空间任意行走的宇航员，告诉你他每次行走的方向，让求最后到达的地点和面对的方向。这题看上去比较简单，但仔细想想，其实就算是朝一个方向走也有4种不同的方式，所以很容易想到不仅记录前进的方向还要记录头所朝的方向，然后根据转弯判断之后的方向。
#include
#include
char tmp[20];
void next(int flag,int dir[],int head[]]]></description><category></category></item><item><title><![CDATA[POJ 1113 Wall]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7773083</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7773083</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 19:43:14 +0800</pubDate><description><![CDATA[最基础的凸包题，可以用来测模板。
凸包就是给定一些点，求包括这些点的边长最小的多边形，常用的有graham算法和melkman算法。
graham算法是先按y坐标再按x坐标排序，由凸包的性质可以发现最下面最左边的点一定是凸包上的点，然后按顺序扫
直到有一个点不满足与当前栈顶两点的左旋性质，然后退栈，直到他满足左旋或者堆栈里面还有一个元素，将它加入堆
栈，先从前往后遍历，再从后往前遍历，这样]]></description><category></category></item><item><title><![CDATA[POJ 1696 Space Ant]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772788</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772788</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 16:54:20 +0800</pubDate><description><![CDATA[简单题，题意就是从y坐标最低的点出发，每次只能向左转，并且不能与之前走过的路相交，问最多能经过多少个点。
	这其实就是一个对每个点，找求最小极角的问题首先判断当前的角与堆栈顶部的两个角的夹角是否成左旋，然后找与当前栈顶的点构成的直线角度最小的点入栈，然后重复上面的步骤，直到没有满足条件的点为止。代码如下：
#include
#include
#include
#include
using na]]></description><category></category></item><item><title><![CDATA[POJ 1434 Fill the Cisterns]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772613</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772613</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 15:38:45 +0800</pubDate><description><![CDATA[简单的二分，先判断给的水是否超过所有的盒子的容量，然后对最高的盒子的上界和最低的盒子的下界进行二分，直到h-l满足给定的条件跳出，只需要再加一个中间状态算总的水的体积的函数即可，代码如下：
include
double eps=0.000001;
int v,hmax,hmin;
int n;
struct box{
	int b,h,w,d;
}c[51000];
double vol(dou]]></description><category></category></item><item><title><![CDATA[POJ 1410  Intersection]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772568</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772568</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 15:18:47 +0800</pubDate><description><![CDATA[思路：先判断是否在矩形内部，再判断线段是否能和矩形的某条边相交，若满足其中一个条件则为真，否则为假。
discuss中有人说给的点不是按左上和右下的顺序，如果对每条边都判断的话就不用考虑左上角或者右下角了，代码如下：
#include
#include
using namespace std;
struct Point{
	int x,y;
};
int Mul(Point p1,Point]]></description><category></category></item><item><title><![CDATA[POJ 2194 2850 Stacking Cylinders]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772492</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772492</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 14:52:48 +0800</pubDate><description><![CDATA[很简单，直接用高中的解析几何知识，将两个与两个圆都想切的圆的圆心求出来就可以了，在加个两重循环找到最上面的点。
#include 
#include 
#include
using namespace std;
double num[20][20], numy[20][20];

int n;

void getpoint( double x1, double y1, double x2, do]]></description><category></category></item><item><title><![CDATA[POJ 2653 Pick-up sticks]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772419</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772419</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 14:25:02 +0800</pubDate><description><![CDATA[简单的判断线段相交问题，用滚动数组记录最上面的线段，如果与当前的线段相交则抛弃，否则加入滚动数组。
#include
#include
using namespace std;
double eps=1e-6;
int n;
struct Point{
	double x,y;
};
struct Line{
	Point s,e;
};
int que[2][100005];
int top[]]></description><category></category></item><item><title><![CDATA[POJ 4011 Automated Telephone Exchange]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772309</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772309</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 13:26:03 +0800</pubDate><description><![CDATA[很无聊的题目……第401道水题。
#include
int main()
{
	int n,i;
	while(scanf("%d",&n)!=EOF)
	{
		int cnt=0;
		for(i=0;i<100;i++)//直接判断范围
			if(n-i>=0 && n-i<100)
				cnt++;
		printf("%d\n",cnt);
	}
	return 0;
}]]></description><category></category></item><item><title><![CDATA[POJ 3727 Newton’s Method]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7772256</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7772256</guid><author>hot_wolf</author><pubDate>Sun, 22 Jul 2012 13:07:21 +0800</pubDate><description><![CDATA[这道题是我的第400道题，并不难，就是考虑的时候稍微有点繁琐，想想自己做的那400道题，几乎都是水题，很多都是在discuss的提醒下AC的，并没有什么技术含量，很多的时候都是为了刷足题数而做的，自己想的很少，收获的也很少，除了看到题目能初步地判断是什么类型的题之外几乎没有什么提高，一直在浑浑噩噩的刷题却没有去考虑一些本质性的东西。
额，扯远了，这道题就是在将字符串转化为多项式每一项的系数和指数]]></description><category></category></item><item><title><![CDATA[POJ 3304  Segments]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7771421</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7771421</guid><author>hot_wolf</author><pubDate>Sat, 21 Jul 2012 22:14:22 +0800</pubDate><description><![CDATA[题目大意是给一些线段，判断是否存在一条直线使得这条直线与所有的线段都有交点。
            对于这个题我有两个思路，第一是从无穷远处引一条射线，通过不断地旋转这条射线也就是枚举所有的线段的两个端点，让他们构成一条直线，然后看这条直线能否和所有的点相交。（没有去做，也不知道是否正确）
            另一个思路就是从所有的点中每次枚举两个不相同的点，看他们构成的直线能否与所有的]]></description><category></category></item><item><title><![CDATA[POJ 1269 Intersecting Lines]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7771354</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7771354</guid><author>hot_wolf</author><pubDate>Sat, 21 Jul 2012 21:44:05 +0800</pubDate><description><![CDATA[非常基础的判断直线关系题，用最直观的方式：写出直线的一般式，然后根据高中的解析几何判断两条直线是否相交，相同和平行。
#include
double eps=1e-6;
double abs(double a)
{
	if(a<0)
		return -a;
	return a;
}
struct Point{
	double x,y;
};
struct line{
	double a,b,c]]></description><category></category></item><item><title><![CDATA[POJ 1106  Transmitters]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7771248</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7771248</guid><author>hot_wolf</author><pubDate>Sat, 21 Jul 2012 20:55:25 +0800</pubDate><description><![CDATA[这是道计算几何的简单题，只要以每一个与圆心距离小于等于圆半径的点和圆心构成半圆的直径线，然后找在直径右侧且距圆心距离小于等于圆的半径的点的个数，记录最大值就行了。
#include
#include
double eps=1e-8;
double abs(double a)				//绝对值
{
	if(a<0)
		return -a;
	return a;
}
struct Point{]]></description><category></category></item><item><title><![CDATA[Poj 1265 Area]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7771147</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7771147</guid><author>hot_wolf</author><pubDate>Sat, 21 Jul 2012 20:13:31 +0800</pubDate><description><![CDATA[和POJ 1654类似，利用格点的性质和给的点的连续性即可。
多边形的面积：首先多边形不确定凹凸，其次多边形的点很多，所以这道题就不能用我们平常的想法去根据点计算多边形的面积。通过观察可以发现这道题有一个比较好的地方，那就是多边形的边已经按次序给出，并且保证没有任何相邻的两点和别的边构成相交的情况，而且最终一定会走回原点构成多边形，所以可以根据叉积的性质去求。|a×b|=|a|*|b|*sinθ]]></description><category></category></item><item><title><![CDATA[Poj 2074 Line of Sight]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7770842</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7770842</guid><author>hot_wolf</author><pubDate>Sat, 21 Jul 2012 17:35:11 +0800</pubDate><description><![CDATA[这题确实是道水题，第一，思路并不难想，就是根据房子的右端点和障碍物的左端点判断最左边能看到房子全貌的点，再根据房子的左端点和障碍物的右端点判断最右边能看到房子全貌的点，把这些点记录下来再扫描判重，根据每一个右端点，找到一个在他右边离他最近的左端点与他的距离，如果有线段覆盖这个右端点，那么该右端点就不能在某个可视区域里面，长度为零（记得将线段的左右端点加入数组中判断！）
要注意障碍物不在两条线段之]]></description><category></category></item><item><title><![CDATA[Poj 4001 Hdu 4121 Xiangqi]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7765358</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7765358</guid><author>hot_wolf</author><pubDate>Thu, 19 Jul 2012 23:32:13 +0800</pubDate><description><![CDATA[这题是道模拟题，题意很简单，现在黑棋只有一个“将”，红棋可能有“帅”，“车”，“炮”，“马”，走棋方式和我们平常下棋一样，现在是黑棋走，问黑棋是否能走到安全的位置上去，解题思路就是判断黑棋能走的四个方向是否安全，对车，炮，马分别判断，代码如下：
#include
int dir[4][2]={0,1,1,0,0,-1,-1,0};				//四个方向
int dir2[8][2]={1,2,2,]]></description><category></category></item><item><title><![CDATA[Project Euler Problem 36]]></title><link>https://blog.youkuaiyun.com/hot_wolf/article/details/7765227</link><guid>https://blog.youkuaiyun.com/hot_wolf/article/details/7765227</guid><author>hot_wolf</author><pubDate>Thu, 19 Jul 2012 22:56:52 +0800</pubDate><description><![CDATA[我是用了纯暴力枚举，枚举每个十进制回文数，并进行判断是否满足二进制回文，若满足则记录，方法很简单，代码如下：
#include
int bin[20];
int sum;
bool ispalindromic(int pali)			//判断一个数是否在2进制数上循环
{
	int j,n=pali;
	if(pali==0)
		return false;
	int top=0;
	while]]></description><category></category></item></channel></rss>