摘要: 【题意】有N个城市,城市之间有N-1条路(其实就是一棵树),国王想把直接连在一起的两个城市组合成一个defending unit,一个城市只能属于一个defending unit,给定一个图,求最后是否能把所有的城市都两两配对。【思路】如果说算法的话,感觉像是贪心吧。若输入的城市数目为奇数,那当然是不能配对的,直接就“No”了。用一个队列存放输入的时候邻边数目为1的点,从队头开始判断,对于队列中每一个点,将该点和该点相邻的点(t2)标记为访问过,然后将t2相邻的点中每一个t3删去t2,若删去之后邻边数为1,则把它放到队列里面。如果删去以后没有邻边了,说明该点被孤立了,也是No,全部点都访问了, 阅读全文
posted @ 2012-07-15 20:52 mrlaker 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定两个点相对于Hansel and Grethel的横纵坐标,以及它们与北方向的夹角[0,360),求Hansel and Grethel所在位置的坐标。【思路】根据两个参考点坐标和方向角,求出两条直线的方程,两条直线的交点就是所求的坐标。求直线方程时分斜率存在和斜率不存在两种情况,斜率存在时分(0,90]υ(270,360)和(90,180)υ(180,270]两种情况。其实两种情况应该可以合并,我看有人写的代码很短。我写的代码比较长,但是思路是比较直接的,很多功能重复的地方也就多复制几次好了。值得注意的一点就是两个double型的值相比较是不能用等于号的。以后遇到这样的题最重要的 阅读全文
posted @ 2012-07-15 20:36 mrlaker 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 【题意】输入一个数字,把它反过来输出。 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 cin>>n; 7 int n2 = n; 8 n = n > 0 ? n : -n; 9 int ans=0;10 while(n!=0)11 {12 ans = n%10 + ans * 10;13 n /= 10;14 }15 if(n2>0)16 cout<<ans... 阅读全文
posted @ 2012-07-15 00:18 mrlaker 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 【题意】有个车站,车站有个中转的地方,车厢可以往里面开,其实就是个栈,A方向开来一列火车,车厢序号为1……N,给出一个车厢序列B,求能不能通过这个栈,把A序列变成B序列。 1 #include<iostream> 2 #include<queue> 3 #include<stack> 4 using namespace std; 5 int main() 6 { 7 int t; 8 while(cin>>t && t!=0) 9 {10 int x;11 while(cin>>x)12 {13 ... 阅读全文
posted @ 2012-07-15 00:03 mrlaker 阅读(305) 评论(0) 推荐(0) 编辑