青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 87  文章 - 279  trackbacks - 0
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 221652
  • 排名 - 118

最新評論

閱讀排行榜

評論排行榜

Space Ant
Time Limit:1000MS? Memory Limit:10000K
Total Submit:113 Accepted:84

Description
The most exciting space discovery occurred at the end of the 20th century. In 1999, scientists traced down an ant-like creature in the planet Y1999 and called it M11. It has only one eye on the left side of its head and just three feet all on the right side of its body and suffers from three walking limitations:

  1. It can not turn right due to its special body structure.
  2. It leaves a red path while walking.
  3. It hates to pass over a previously red colored path, and never does that.

The pictures transmitted by the Discovery space ship depicts that plants in the Y1999 grow in special points on the planet. Analysis of several thousands of the pictures have resulted in discovering a magic coordinate system governing the grow points of the plants. In this coordinate system with x and y axes, no two plants share the same x or y.
An M11 needs to eat exactly one plant in each day to stay alive. When it eats one plant, it remains there for the rest of the day with no move. Next day, it looks for another plant to go there and eat it. If it can not reach any other plant it dies by the end of the day. Notice that it can reach a plant in any distance.
The problem is to find a path for an M11 to let it live longest.
Input is a set of (x, y) coordinates of plants. Suppose A with the coordinates (xA, yA) is the plant with the least y-coordinate. M11 starts from point (0,yA) heading towards plant A. Notice that the solution path should not cross itself and all of the turns should be counter-clockwise. Also note that the solution may visit more than two plants located on a same straight line.

Input
The first line of the input is M, the number of test cases to be solved (1 <= M <= 10). For each test case, the first line is N, the number of plants in that test case (1 <= N <= 50), followed by N lines for each plant data. Each plant data consists of three integers: the first number is the unique plant index (1..N), followed by two positive integers x and y representing the coordinates of the plant. Plants are sorted by the increasing order on their indices in the input file. Suppose that the values of coordinates are at most 100.

Output
Output should have one separate line for the solution of each test case. A solution is the number of plants on the solution path, followed by the indices of visiting plants in the path in the order of their visits.

Sample Input

2
10
1 4 5
2 9 8
3 5 9
4 1 7
5 3 2
6 6 3
7 10 10
8 8 1
9 2 4
10 7 6
14
1 6 11
2 11 9
3 8 7
4 12 8
5 9 20
6 3 2
7 1 6
8 2 13
9 15 1
10 14 17
11 13 19
12 5 18
13 7 3
14 10 16

Sample Output

10 8 7 3 4 9 5 6 2 1 10
14 9 10 11 5 12 8 7 6 13 4 14 1 3 2

Source
Tehran 1999

?

#include? < iostream >
#include?
< cmath >
#include?
< algorithm >
using ? namespace ?std;

const ? int ?MAXN? = ? 1000 ;
const ? int ?INF? = ? 2000000000 ;

struct ?XYDATA
{
????
int ?x,?y,?index;
}
;

int ?inorder(XYDATA?a,?XYDATA?b)
{
????
return ?a.y? < ?b.y? || ?(a.y? == ?b.y? && ?a.x? < ?b.x);
}


int ?cross(XYDATA?a,?XYDATA?b)
{
????
return ?a.x? * ?b.y? - ?a.y? * ?b.x;
}


double ?Cos(XYDATA?a,?XYDATA?b)
{
????
return ?(a.x * b.x + a.y * b.y)? / ?(sqrt(a.x * a.x + a.y * a.y)? * ?sqrt(b.x * b.x + b.y * b.y));
}

void ?Solve()
{
????
int ?n;
????
int ?i,?j;
????
int ? out [MAXN];
????
int ?outSize? = ? 0 ?;
????
bool ?mp[ 101 ][ 101 ];
????
int ?t;
????
double ?tmp;
????XYDATA?a[MAXN];
????XYDATA?v,?u;
????
int ?beg;

????scanf(
" %d " ,? & n);
????
for ?(i = 0 ;?i < n;?i ++ )
????????scanf(
" %d%d%d " ,? & a[i].index,? & a[i].x,? & a[i].y);
????
????sort(a,?a
+ n,?inorder);
????
????
for ?(i = 0 ;?i < 101 ;?i ++ )
????????
for ?(j = 0 ;?j < 101 ;?j ++ )
????????????mp[i][j]?
= ? false ;

????v.x?
= ?a[ 0 ].x;
????v.y?
= ? 0 ;
????mp[a[
0 ].x][a[ 0 ].y]? = ? true ;
????beg?
= ? 0 ;
????
out [outSize ++ ]? = ?a[ 0 ].index;
????
for ?(i = 1 ;?i < n;?i ++ )
????
{
????????
bool ?isFind? = ? false ;
????????tmp?
= ? - 2 ;
????????
for ?(j = 0 ;?j < n;?j ++ )
????????????
if ?(beg? != ?j? && ? ! mp[a[j].x][a[j].y])
????????????
{
????????????????u.x?
= ?a[j].x? - ?a[beg].x;
????????????????u.y?
= ?a[j].y? - ?a[beg].y;
????????????????
int ?cro? = ?cross(v,?u);
????????????????
if ?(cro? >= ? 0 )????
????????????????
{
????????????????????isFind?
= ? true ;
????????????????????
if ?(Cos(v,?u)? > ?tmp)?
????????????????????
{
????????????????????????tmp?
= ?Cos(v,?u);
????????????????????????t?
= ?j;
????????????????????}

????????????????}

????????????}

????????
if ?(isFind)
????????
{
????????????v.x?
= ?a[t].x? - ?a[beg].x;
????????????v.y?
= ?a[t].y? - ?a[beg].y;
????????????mp[a[t].x][a[t].y]?
= ? true ;
????????????beg?
= ?t;
????????????
out [outSize ++ ]? = ?a[t].index;
????????}

????????
else ?
????????
{
????????????
break ;
????????}

????}

????printf(
" %d " ,?outSize);
????
for ?(i = 0 ;?i < outSize;?i ++ )
????????printf(
" ?%d " ,? out [i]);
????printf(
" \n " );
}



int ?main()
{
????
int ?n;

????scanf(
" %d " ,? & n);

????
while ?(n -- ? != ? 0 )
????
{
????????Solve();
????}

????
return ? 0 ;
}
posted on 2006-09-27 13:54 閱讀(561) 評論(0)  編輯 收藏 引用 所屬分類: ACM題目
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产黄色片| 国产精品夜夜嗨| 久久精品论坛| 久久综合九色综合欧美就去吻| 亚洲一区日韩在线| 亚洲三级网站| 亚洲一区二区三区激情| 国产精品入口日韩视频大尺度| 国产香蕉97碰碰久久人人| 国内免费精品永久在线视频| 国产一区免费视频| 久久久久久夜精品精品免费| 99在线热播精品免费| 亚洲欧美在线观看| 欧美国产一区二区三区激情无套| 亚洲欧美日韩国产成人精品影院| 欧美一区二区日韩| 欧美大胆成人| 国产亚洲一区在线| 99精品久久久| 毛片一区二区| 午夜亚洲精品| 国产精品久久久久久久午夜| 亚洲欧洲在线免费| 久久免费精品视频| 欧美精品国产精品| 亚洲国产人成综合网站| 久久久女女女女999久久| 奶水喷射视频一区| 亚洲国产成人一区| 欧美电影在线观看完整版| 亚洲女与黑人做爰| 国产欧美精品日韩| 欧美一区日韩一区| 亚洲欧美激情精品一区二区| 在线日韩av永久免费观看| 久久午夜视频| 国产精品爱啪在线线免费观看| 国产精品久久久久一区二区三区| 136国产福利精品导航| 亚洲级视频在线观看免费1级| 亚洲精品国产拍免费91在线| 国产精品永久入口久久久| 亚洲视频一区在线| 亚洲最新在线| 亚洲福利视频一区| 小嫩嫩精品导航| 亚洲一区在线视频| 亚洲在线视频观看| 一本色道久久综合狠狠躁篇的优点| 欧美一区观看| 牛牛影视久久网| 久久久综合网| 国产日韩欧美在线| 亚洲免费在线看| 亚洲欧美日韩国产中文| 亚洲一二区在线| 国产日韩欧美三级| 亚洲视屏一区| 西瓜成人精品人成网站| 久久久7777| 亚洲国产一区视频| 久久久国产精彩视频美女艺术照福利 | 亚洲国产天堂久久综合| 欧美在线免费| 亚洲国产精品久久久久婷婷老年| 欧美成人影音| 亚洲高清在线| 久久综合网hezyo| 亚洲人www| 欧美黑人多人双交| 亚洲高清不卡在线| 99re在线精品| 欧美日韩国产综合新一区| 亚洲欧美色一区| 久久久久久久综合狠狠综合| 一本久道久久久| 欧美人与性禽动交情品| 久久久久久久久久久成人| 欧美韩日亚洲| 亚洲精品日韩在线观看| 国产一区二区三区精品久久久 | 日韩视频免费观看| 日韩视频在线你懂得| 国产亚洲欧洲一区高清在线观看| 牛夜精品久久久久久久99黑人 | 亚洲精品一区二区在线观看| 亚洲激情在线| 欧美日韩一区二区三区高清| 久久精品99| 在线播放中文字幕一区| 亚洲最新在线视频| 欧美中文在线观看国产| 欧美日韩免费在线| 亚洲综合视频网| 男女视频一区二区| 中文在线资源观看网站视频免费不卡| 性一交一乱一区二区洋洋av| 久久综合九色九九| 国产精品99久久久久久久vr| 国产午夜精品全部视频播放| 巨乳诱惑日韩免费av| 99视频精品在线| 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品亚洲综合一区在线观看 | 一区二区激情| 久久琪琪电影院| 久久午夜电影网| 中文一区二区在线观看| 狠狠色狠色综合曰曰| 欧美亚洲自偷自偷| 欧美黄色影院| 亚洲精品小视频| 久久久久久噜噜噜久久久精品| 欧美一区二区免费视频| 亚洲国产婷婷| 国产日韩欧美视频| 欧美日韩三级在线| 麻豆精品视频在线观看| 欧美激情片在线观看| 欧美一级专区| 一区二区久久| 亚洲欧洲日产国产网站| 黄色亚洲精品| 国产欧美精品xxxx另类| 欧美人与禽性xxxxx杂性| 久久久欧美一区二区| 亚洲欧美欧美一区二区三区| 亚洲精品一区二区在线| 亚洲高清不卡| 欧美99在线视频观看| 久久免费高清视频| 性欧美大战久久久久久久久| 日韩一区二区免费看| 亚洲国产精品黑人久久久| 国产一区再线| 国产自产在线视频一区| 国产老女人精品毛片久久| 国产精品黄页免费高清在线观看| 亚洲福利视频三区| 久久噜噜亚洲综合| 久久久久9999亚洲精品| 欧美中文字幕在线| 亚洲欧美变态国产另类| 亚洲午夜精品久久| 黄色一区三区| 欧美日本一区二区视频在线观看| 9久re热视频在线精品| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美一区二区福利在线| 亚洲欧美久久久| 午夜精品久久久久久久男人的天堂 | 亚洲性人人天天夜夜摸| 亚洲午夜av电影| 亚洲在线中文字幕| 欧美一区1区三区3区公司| 午夜日韩av| 久久久久9999亚洲精品| 麻豆av一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲卡通欧美制服中文| 亚洲精品国产系列| 亚洲最新色图| 午夜精品久久久久久久久久久| 经典三级久久| 亚洲精品孕妇| 亚洲一区二区免费看| 性色一区二区三区| 狼人天天伊人久久| 亚洲激情电影在线| 亚洲午夜高清视频| 久久久久免费视频| 欧美日韩国产综合网| 国产日产欧产精品推荐色 | 性做久久久久久| 久久九九全国免费精品观看| 乱码第一页成人| 欧美日韩亚洲综合一区| 国产一区二区三区无遮挡| 亚洲国内精品在线| 亚洲综合欧美日韩| 免费观看欧美在线视频的网站| 在线欧美不卡| 夜夜嗨av一区二区三区四季av| 狠狠色狠狠色综合日日91app| 欧美三级欧美一级| 欧美精品在线免费观看| 国产精品嫩草影院av蜜臀| 精品动漫一区二区| 亚洲一区二区三区四区五区午夜| 亚洲激情在线激情| 新片速递亚洲合集欧美合集| 女仆av观看一区| 亚洲欧美日韩中文视频| 免费亚洲网站| 国产香蕉97碰碰久久人人| 亚洲性图久久| 亚洲精品久久久久久久久久久久 | 亚洲一区精品在线| 欧美不卡在线视频|