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

隨筆 - 87  文章 - 279  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220434
  • 排名 - 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 閱讀(557) 評論(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>
            日韩视频不卡中文| 精品99一区二区三区| 久久精品国产77777蜜臀| 国内偷自视频区视频综合| 免费视频一区| 久久激情视频久久| 亚洲视频高清| 国产精品99久久99久久久二8 | 久久久久在线观看| 99re亚洲国产精品| 亚洲啪啪91| 亚洲国产综合在线看不卡| 国产亚洲精品成人av久久ww| 国产精品99一区二区| 久久全球大尺度高清视频| 亚洲一区一卡| 欧美在线综合| 久热综合在线亚洲精品| 免费成人在线观看视频| 欧美本精品男人aⅴ天堂| 久久亚洲春色中文字幕| 久久女同互慰一区二区三区| 免费观看久久久4p| 亚洲精品一区中文| 午夜精品久久一牛影视| 欧美一区二区播放| 久久精品亚洲| 欧美日韩一区自拍| 国内成人精品一区| 夜夜嗨一区二区三区| 西西裸体人体做爰大胆久久久| 欧美一区三区三区高中清蜜桃 | 亚洲第一中文字幕| 在线亚洲免费| 欧美成人一区在线| 国产精品久久久久久超碰| 红桃视频欧美| 午夜宅男久久久| 亚洲精品在线观看免费| 久久精品99国产精品| 欧美午夜精品久久久久久浪潮 | 91久久精品国产91久久| 亚洲一区二区三区777| 免费成人黄色av| 欧美永久精品| 亚洲日韩欧美视频一区| 亚洲欧美在线一区二区| 欧美偷拍一区二区| 国产精品99久久99久久久二8 | 亚洲激情一区| 亚洲高清视频一区| 葵司免费一区二区三区四区五区| 国产精品色午夜在线观看| 亚洲电影成人| 久久综合亚州| 久久久激情视频| 亚洲国产欧美久久| 亚洲黄色性网站| 欧美日韩成人免费| 亚洲综合999| 久久综合色婷婷| 欧美日韩1区| 亚洲欧美清纯在线制服| 噜噜噜噜噜久久久久久91| 玖玖综合伊人| 亚洲综合99| 久久―日本道色综合久久| 日韩一级黄色av| 中日韩高清电影网| 亚洲第一综合天堂另类专| 亚洲电影有码| 国产在线不卡| 亚洲日本电影在线| 精品69视频一区二区三区| 亚洲精品在线观| 亚洲国产精品va在线看黑人动漫| 国产乱子伦一区二区三区国色天香| 欧美一区二区三区免费观看视频| 久久免费精品视频| 亚洲啪啪91| 在线观看国产欧美| 欧美国内亚洲| 亚洲色在线视频| 久久婷婷综合激情| 亚洲日本va午夜在线影院| 老司机精品视频网站| 亚洲国产精品一区在线观看不卡 | 国产精品久久久久7777婷婷| 欧美韩日一区二区| 亚洲精品资源| 国产精品久久久久久久浪潮网站| 一区二区三区日韩欧美| 亚洲主播在线观看| 国产一区在线播放| 欧美激情一区三区| 亚洲中午字幕| 亚洲国产成人久久综合一区| 亚洲视频每日更新| 国产一区二区三区奇米久涩| 欧美福利视频在线| 午夜日本精品| 亚洲精品乱码久久久久久黑人| 午夜精品福利电影| 亚洲人体一区| 国自产拍偷拍福利精品免费一| 久久久久欧美精品| 亚洲一级在线| 欧美影院午夜播放| 亚洲精品四区| 在线观看三级视频欧美| 国产精品久久久亚洲一区| 麻豆成人综合网| 性欧美18~19sex高清播放| 在线观看久久av| 国产一二精品视频| 国产午夜精品麻豆| 国产伦精品一区二区三区高清版| 久久综合99re88久久爱| 欧美呦呦网站| 美女福利精品视频| 噜噜噜91成人网| 久久夜色精品国产亚洲aⅴ | 亚洲欧美日韩爽爽影院| 亚洲精品三级| 一本色道久久88综合亚洲精品ⅰ| 亚洲第一在线| 99国内精品久久| 午夜精品免费在线| 久热国产精品视频| 亚洲国产精品va在线看黑人 | 亚洲第一页自拍| 亚洲高清一区二区三区| 亚洲精品视频一区| 亚洲一级在线观看| 久久噜噜噜精品国产亚洲综合| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美大片在线观看一区二区| 亚洲国产精品视频一区| 一本色道久久综合亚洲精品婷婷| 亚洲视频成人| 久久午夜色播影院免费高清| 欧美国产成人在线| 国产一区二区欧美日韩| 久久精品一区二区| 欧美日韩国产小视频| 黄色成人小视频| 亚洲欧美日韩一区二区| 欧美成年人视频网站| 亚洲欧美综合精品久久成人| 模特精品在线| 伊人久久男人天堂| 久久精品国产久精国产一老狼 | 国语自产精品视频在线看一大j8| 亚洲免费观看视频| 欧美xart系列高清| 久久久视频精品| 在线播放日韩专区| 久久人人97超碰精品888| 欧美一区91| 亚洲第一久久影院| 另类成人小视频在线| 亚洲欧美视频在线观看视频| 亚洲免费大片| 国产精品久久久久免费a∨| 亚洲视频在线看| 欧美一级二区| 欧美在线视频免费播放| 亚洲视频网在线直播| 欧美成va人片在线观看| 一本大道av伊人久久综合| 一区二区欧美在线观看| 国产视频久久网| 亚洲福利视频一区| 国产精品人成在线观看免费| 久久福利资源站| 欧美精品激情| 六月婷婷久久| 国产欧美韩国高清| 亚洲欧洲在线一区| 国产农村妇女毛片精品久久莱园子| 亚洲天堂免费观看| 久久久人成影片一区二区三区观看| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品一区二区三区樱花| 亚洲视频播放| 99国产精品99久久久久久粉嫩| 一区二区三区久久| 欧美日韩国产成人| 午夜一级久久| 国产日韩精品在线| 亚洲一级网站| 欧美在线免费观看亚洲| 国产欧美一区二区精品婷婷| 亚洲啪啪91| 一区二区精品国产| 欧美精品性视频| 999亚洲国产精| 欧美一区日本一区韩国一区| 欧美色图天堂网| 亚洲欧美成人网|