আপনার কাজটি হ'ল স্বল্পতম সময়ে অনেকগুলি ভাসমান মাছের ট্র্যাকিং ডিভাইসে ব্যাটারি প্যাকগুলি প্রতিস্থাপন করা। আপনাকে অবশ্যই বেস হেলিকপ্টারটিতে আপনার বেসটি ছেড়ে যেতে হবে এবং প্রতিটি ট্র্যাকার একবার ঘুরে দেখতে হবে, তারপরে বেসে ফিরে যেতে হবে।
সর্বোত্তম রুট সন্ধান করা কঠিন বলে জানা গেছে, তবে অতিরিক্ত অসুবিধাও রয়েছে! প্রতিটি ট্র্যাকারের একটি প্রবাহের বেগ থাকে (যা দিনের জন্য স্থির হিসাবে ধরে নেওয়া হবে)।
এটি চলন্ত নোডগুলির অতিরিক্ত চ্যালেঞ্জের সাথে স্ট্যান্ডার্ড ট্র্যাভেল বিক্রয় ব্যবসায়ী। বৈধ ট্যুরটি খুঁজে পাওয়া সহজ হওয়া উচিত। প্রাথমিক চ্যালেঞ্জটি নিকটতম অনুকূল ভ্রমণ সন্ধানের জন্য অ্যালগরিদম বিকাশ। আমি পূর্বাভাস দিয়েছি যে বর্তমান এন = 300 এর সাথে নিখুঁত ভ্রমণ পাওয়া সম্ভব হবে না (তবে আমি ভুল প্রমাণিত হতে চাই)।
বিধি
আপনার প্রোগ্রামটি STDIN এ বা কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ট্র্যাকার ডেটার একটি স্ট্রিং সরবরাহ করা হবে। আপনার অবশ্যই এমন একটি রুট পাওয়া উচিত যা প্রতিটি ট্র্যাকারকে একবারে ঘুরে দেখে এবং বেসে ফিরে আসে। আউটপুটটি ট্র্যাকার আইডি: সময় জোড়ের একটি সাদা স্থান পৃথকীকরণ তালিকা হওয়া উচিত।
- অবস্থান সেন্টিমিটার (সেমি) দেওয়া হয়।
- সময়টি t = 0 দিয়ে শুরু করে সেকেন্ডে পরিমাপ করা হয়।
- वेगটি সেমি / সেকেন্ডে দেওয়া হয়।
- প্রতিটি ট্র্যাকার আইডি 1 থেকে 8 টি বড় হাতের অক্ষর।
- "বেস" আইডি সহ বেসটি অবস্থিত
(0,0)
। - ইনপুট এবং আউটপুট জন্য সমস্ত সংখ্যার মান স্বাক্ষরিত পূর্ণসংখ্যা ব্যবহার করে।
- ইনপুটটি এক বা একাধিক সাদা স্থান বা স্ল্যাশ পৃথক ট্র্যাকার।
- প্রতিটি ট্র্যাকারের
ID:x,y,vx,vy
ফর্ম্যাট থাকবে (যেমনA:566,-344,-5,11
:) - সময়ে, একটি ট্র্যাকার উপস্থিত হবে
(x+vx*t, y+vy*t)
। - হেলিকপ্টারটি কখনই 5000 সেমি / সেকেন্ড গতি (180 কিমি / ঘন্টা) অতিক্রম করতে হবে না।
- সময় অনুসারে আউটপুট সাদা স্থান দ্বারা পৃথক দর্শন করা উচিত।
- প্রতিটি ভিজিট আইডিতে হওয়া উচিত: সময় ফর্ম্যাট (যেমন
A:5723
:) - আপনার আউটপুটে শেষ ভিজিট অবশ্যই বেস হবে (যেমন
BASE:6120
:) - যদি একাধিক ট্র্যাকার একই অবস্থানে থাকে তবে তাদের মধ্যে সরানোর জন্য শূন্য সময় লাগে।
- স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
উদাহরণস্বরূপ ডেটাসেট
A:77000,88000,-120,80 B:52000,-12000,0,-230 C:-140000,-23000,-270,110
অপ-অনুকূল সমাধান উদাহরণ:
A:30 B:60 C:120 BASE:160
নোটটি A:30 B:60 C:120 BASE:130
অবৈধ হবে কারণ হেলিকপ্টারটি 10 সেকেন্ডে বেসে ফিরে যেতে 17268 সেমি / সেকেন্ডে উড়তে হবে।
পরীক্ষার ডেটাসেট
AA:-164247,-378265,182,113
AB:-1494514,-385520,-25,80
AC:-744551,832058,-13,-123
AD:-930133,1598806,97,177
AE:-280777,-904936,-48,305
AF:-855362,-10456,-21,-89
AG:880990,154342,175,-100
AH:-319708,-623098,172,-17
AI:620018,-626908,-19,-164
AJ:-990505,164998,18,-120
AK:379998,310955,191,59
AL:-977441,-130531,107,-234
AM:-766893,14659,162,-198
AN:-502564,-95651,261,306
AO:661306,-98839,231,263
AP:-788211,254598,24,-249
AQ:851834,-1004246,-45,75
AR:698289,-965536,-8,-134
AS:-128295,701701,180,-241
AT:1423336,1359408,-6,173
AU:445274,-527619,231,319
AV:358132,-781522,26,-132
AW:736129,807327,0,-137
AX:-174581,-337407,133,180
AY:-1533760,-215500,144,-111
AZ:-383050,82658,221,-14
BA:-1650492,548674,89,-63
BB:54477,-906358,440,181
BC:891003,623700,326,102
BD:-393270,1732108,155,-97
BE:411090,-859170,93,163
BF:554962,-298575,480,-100
BG:-695530,475438,244,283
BH:93622,-958266,153,-127
BI:-403222,389691,323,329
BJ:1585132,98244,-156,71
BK:713912,484912,158,97
BL:-1612876,317391,-5,-131
BM:-725126,-320766,30,-105
BN:-76091,-381451,-172,95
BO:-483752,970905,16,-170
BP:1585890,91873,-173,-19
BQ:-815696,-342359,-64,-121
BR:-129530,-606673,-66,-94
BS:-339974,-561442,-35,271
BT:1277427,1258031,13,-5
BU:1246036,-743826,144,-200
BV:494745,-522944,211,309
BW:776786,586255,6,-146
BX:-847071,-792238,-142,-199
BY:748038,863976,6,-109
BZ:-667112,634959,221,-174
CA:888093,900097,-107,-56
CB:113938,-1031815,-167,134
CC:-626804,504649,2,-151
CD:866724,941177,311,221
CE:-1632084,-1957347,38,116
CF:774874,804277,-4,-152
CG:468675,-239063,437,-141
CH:-1352217,-388519,-86,70
CI:-1006,921538,-6,-179
CJ:-1866469,68979,-1,133
CK:-1036883,1962287,124,-62
CL:760226,858123,478,56
CM:764838,493113,-27,-155
CN:-642231,-387271,48,198
CO:430643,646456,8,-138
CP:268900,-82440,294,-114
CQ:-1518402,-1782748,123,62
CR:5487,980492,-30,-151
CS:-749712,494682,-1,-113
CT:-1144956,124994,84,120
CU:-1855045,-612779,30,-35
CV:416593,-57062,-67,-140
CW:-1970914,-1984034,-27,153
CX:-606767,629298,-49,-144
CY:-792900,-696850,0,-123
CZ:1561820,-450390,37,21
DA:579688,355017,-186,-153
DB:1178674,1247470,-86,-54
DC:483389,-837780,321,27
DD:468021,-992185,20,253
DE:-38126,-386917,270,250
DF:707678,189200,-59,-179
DG:-1428781,1326135,-29,-148
DH:-1943667,1645387,22,140
DI:-399820,626361,29,-132
DJ:-2657,170549,94,-169
DK:-331601,917405,104,157
DL:1965031,350999,158,-114
DM:902640,986090,-66,-140
DN:540679,-544126,15,-121
DO:-524120,411839,-48,-120
DP:-134995,-876166,191,-128
DQ:359872,-991469,-164,-186
DR:-186713,-309507,14,-86
DS:1846879,-585704,133,64
DT:169904,945363,298,70
DU:-218003,-1001110,-70,109
DV:316261,266341,-63,-89
DW:551059,55754,-4,-94
DX:-514965,305796,304,-100
DY:162176,485230,-90,83
DZ:675592,-1508331,119,-20
EA:656886,38516,257,-111
EB:-201090,678936,5,-161
EC:-920170,-503904,-8,158
ED:-728819,-401134,-83,154
EE:-611398,-320235,-5,-102
EF:-612522,-259240,14,-154
EG:662225,-808256,478,165
EH:-468284,-720421,234,316
EI:-958544,-161691,-12,-97
EJ:839898,-631917,-25,-159
EK:745130,598504,-72,132
EL:412250,-456628,13,-104
EM:-737096,374111,172,35
EN:726052,-385153,-45,31
EO:-888906,-495174,24,-170
EP:-518672,-685753,-14,-102
EQ:440153,-211801,-46,-180
ER:464493,-1637507,-3,154
ES:701248,-512422,-33,-83
ET:-795959,426838,-29,-117
EU:307451,978526,445,124
EV:800833,66796,15,-176
EW:-623452,299065,-30,-117
EX:15142,-363812,445,245
EY:-701669,-556515,-8,-136
EZ:-1772225,890097,-140,-104
FA:-948887,-882723,-11,-157
FB:387256,-128751,151,7
FC:1066595,-641933,31,-23
FD:-823274,-812209,-67,-172
FE:923612,536985,21,-123
FF:-886616,-808114,-26,-153
FG:411924,-518931,-7,-138
FH:945677,-1038311,174,-59
FI:913968,81871,-5,-139
FJ:625167,708120,-44,-90
FK:-405348,893926,-10,-93
FL:-58670,415334,170,-155
FM:326285,671439,426,-237
FN:-775332,-81583,4,-164
FO:280520,360899,2,-150
FP:-406095,133747,26,170
FQ:-990214,-342198,30,-112
FR:938869,801354,397,198
FS:-7527,36870,-23,-111
FT:999332,-956212,143,16
FU:-86215,792355,-49,-87
FV:144427,378536,-4,-136
FW:-786438,638084,28,-77
FX:903809,903424,-102,-132
FY:-36812,-126503,16,-159
FZ:-1083903,1001142,-29,-110
GA:857943,-120746,135,-3
GB:545227,-151166,239,127
GC:-356823,674293,106,90
GD:977846,1003667,-53,106
GE:-866551,180253,-1,-170
GF:-688577,289359,-24,-161
GG:-256928,-481626,169,109
GH:590910,829914,25,-170
GI:568114,735446,-34,-172
GJ:1756516,-655660,140,138
GK:-1683894,-1417741,-163,-84
GL:-201976,-703352,201,217
GM:-271187,-836075,-24,-141
GN:809929,793308,70,324
GO:-403617,58364,432,-191
GP:-94316,227063,148,28
GQ:-930345,1587220,-129,-142
GR:-433897,58058,-75,255
GS:-780984,114024,-12,-160
GT:-403102,-1425166,158,-84
GU:-449829,-414404,-27,-125
GV:556480,72387,-34,306
GW:-959629,326929,327,-91
GX:250741,-992373,94,-121
GY:702250,1612852,-41,38
GZ:853191,857773,-62,-105
HA:674500,-225890,7,-152
HB:-1890026,-179534,-23,49
HC:398363,681200,31,-26
HD:-1896372,113239,-51,25
HE:599213,137473,10,-31
HF:-34537,750768,-18,-179
HG:-959544,-430584,-33,-117
HH:1283773,1606578,-8,-80
HI:-866804,108513,180,-74
HJ:765654,115993,23,-22
HK:554000,130015,18,-32
HL:-470089,-407430,38,191
HM:366977,556677,18,-134
HN:175829,545309,29,-146
HO:-263163,-235953,3,-169
HP:727495,567716,6,-135
HQ:121304,-9150,81,-157
HR:-1789095,-471348,-73,-9
HS:-799974,819873,51,-64
HT:-985175,1774422,70,-10
HU:516368,-227142,-33,-117
HV:655503,350605,-6,-92
HW:733506,-1967066,197,-62
HX:1339705,-1227657,-195,44
HY:-384466,-1932882,7,-93
HZ:-394466,-459287,132,95
IA:120512,-1673367,28,-167
IB:1294647,-1112204,35,133
IC:883230,734086,144,54
ID:-95269,435577,30,148
IE:-378105,-1147004,-6,190
IF:366040,-132989,339,-61
IG:-397775,-410802,-1,-84
IH:849353,-181194,-98,45
II:774834,-56456,-177,21
IJ:-441667,576716,-51,-82
IK:-309799,-673582,-34,-99
IL:605784,-903045,-179,103
IM:-379218,-958590,-6,262
IN:982984,947942,212,-28
IO:-477749,-472771,474,44
IP:-1381284,-1273520,131,139
IQ:672901,1298275,-116,150
IR:-816582,-693425,121,-265
IS:809060,-66216,-45,-165
IT:655913,723612,6,-102
IU:70578,-546308,496,219
IV:558122,41452,-20,-103
IW:237612,-1605017,154,170
IX:-1120980,-471873,-181,-134
IY:-1385384,36137,-14,15
IZ:1401932,-1692315,103,115
JA:1339559,1534224,123,46
JB:-963572,-554932,-13,-153
JC:1422496,-213462,-97,-63
JD:-74743,-909157,277,273
JE:-1364398,911720,185,-19
JF:831273,-645419,-61,-147
JG:-308025,-297948,-59,-107
JH:-737466,-424236,419,219
JI:234767,971704,375,89
JJ:-715682,-871436,395,-54
JK:-296198,-466457,11,227
JL:277311,-661418,27,-124
JM:113477,-763303,-61,-142
JN:198929,881316,358,67
JO:864028,-1735917,-168,-162
JP:193352,-46636,12,-171
JQ:-374301,967915,-27,-98
JR:-900576,1585161,-14,-154
JS:-855414,-201048,24,-150
JT:473630,412948,-80,68
JU:-358039,-730839,-18,47
JV:677652,-670825,-63,-146
JW:536063,-734897,-86,57
JX:344532,-594945,143,230
JY:218390,42085,406,-154
JZ:222495,-933383,440,-29
KA:993576,490730,448,13
KB:1383947,-1637102,-146,-175
KC:181730,-314093,-20,47
KD:1400934,502742,-77,-126
KE:1239862,1152873,144,102
KF:-156867,290487,5,-92
KG:947301,958346,-12,-124
KH:-1873578,815339,194,167
KI:1181091,882850,89,-122
KJ:-825910,-452543,369,9
KK:548963,-358292,390,117
KL:-940596,-200000,125,296
KM:463530,905548,-70,-95
KN:-7507,263613,-7,-145
KO:172069,-457358,-40,-113
KP:-206484,-214043,172,-4
KQ:620049,1844897,-158,192
KR:-988657,612294,452,-125
KS:-802234,611144,-34,-178
KT:231136,-858200,123,129
KU:1557166,943150,105,114
KV:-229389,-440910,-71,123
KW:-135216,1346978,15,136
KX:-43852,521638,-38,279
KY:112655,441642,-8,-105
KZ:525746,-216262,8,-124
LA:-985825,-345745,33,187
LB:-839408,-319328,-6,-136
LC:-12208,1899312,-168,149
LD:156476,-902318,69,325
LE:976731,-427696,310,165
LF:-809002,-255961,312,235
LG:-899084,484167,5,57
LH:-748701,426117,256,-21
LI:-711992,148901,-49,24
LJ:-519051,-440262,22,-105
LK:-310550,283589,88,151
LL:244046,-1751273,5,29
LM:1350149,-1524193,-96,-158
LN:-706211,-585853,-63,-122
যাচাইকারী
উত্তরগুলি যাচাইয়ের জন্য অনুরূপ একটি প্রোগ্রাম ব্যবহার করা হবে। পোস্ট করার আগে আপনার উত্তরগুলি পরীক্ষা করতে আপনি এই প্রোগ্রামটি ব্যবহার করতে পারেন।
# PPCG: Visiting each drifting tracker
# Answer verifier for Python 2.7
# Usage: python verify.py infile outfile [-v]
# Infile has the given input string. Outfile has the solution string.
# v1.0 First release.
import sys, re
VERBOSE = ('-v' in sys.argv)
fi, fo = sys.argv[1:3]
def error(*msg):
print ' '.join(str(m) for m in ('ERROR at:',) + msg)
sys.exit()
indata = open(fi).read().strip()
trackdata = [re.split('[:,]', node) for node in re.split('[ /]', indata)]
trackers = dict((node.pop(0), map(int, node)) for node in trackdata)
shouldvisit = set(trackers.keys() + ['BASE'])
visittexts = open(fo).read().split()
visitpairs = [node.split(':') for node in visittexts]
visits = [(label, int(time)) for label,time in visitpairs]
fmt = '%10s '*5
if VERBOSE:
print fmt % tuple('ID Time Dist Tdiff Speed'.split())
prevpos = (0, 0)
prevtime = 0
visited = set()
for ID, time in visits:
if ID in visited:
error(ID, 'Already visited!')
tdiff = time - prevtime
if tdiff < 0:
error(ID, 'Time should move forward!')
if ID == 'BASE':
newpos = (0, 0)
else:
if ID not in trackers:
error(ID, 'No such tracker')
x, y, vx, vy = trackers[ID]
newpos = (x+vx*time, y+vy*time)
if newpos == prevpos:
dist = speed = 0
else:
dist = ((newpos[0]-prevpos[0])**2 + (newpos[1]-prevpos[1])**2) ** 0.5
if tdiff == 0:
error(ID, 'Helicopters shouldn\'t teleport')
speed = dist / tdiff
if speed > 5000:
error(ID, 'Helicopter can\'t fly at', speed)
if VERBOSE:
print fmt % (ID, time, int(dist), tdiff, int(speed))
visited.add(ID)
prevpos = newpos
prevtime = time
if ID != 'BASE':
error(ID, 'Must finish at the BASE')
if visited != shouldvisit:
error((shouldvisit - visited), 'Not visited')
print 'Successful tour in %u seconds.' % time
স্কোরিং
আপনার স্কোর সেকেন্ডে আপনার শেষ সময় হবে। স্বল্পতা ভালো. বিজয়ী বেসে ফিরে আসার পরে টেস্ট ডেটাসেটের দ্রুততম সময়ের সাথে উত্তর হবে। টাইয়ের ফলস্বরূপ, প্রথমতম এন্ট্রি জিতবে।
দয়া করে একটি "ভাষা, স্কোর: এনএনএন" শিরোনাম, কোড এবং আউটপুট সমাধান স্ট্রিং (প্রতি লাইনে বেশ কয়েকটি ভিজিট সহ অগ্রাধিকার সহ) পোস্ট করুন।