2010年09月10日
SRM481 Div2
今回はSystemTestがゴタゴタで大変なことに。何回もシステムテストやりなおしてたけど何があったんだろう。
レーティングはちょっとだけ上がったけど、イマイチな感じ。
250p CircleMarket 172.52p
円形の市場を時計回りにまわって開店時間内にどれだけのアイテムを買うことができるかという問題。
問題のとおりにやったけど時間かけすぎた。
200p以上はとりたかったなぁ。。。実装力を身につけたいところ。
#include <iostream> #include <string> #include <vector> using namespace std; class CircleMarket { public: int makePurchases(vector <int> openTime, vector <int> closeTime, int travelTime) { int res=0,total=0; int n = openTime.size(); vector<bool> vis(n,false); while(1){ bool f=true; for(int i=0;i<n;++i){ if(total>=openTime[i]&&total<=closeTime[i]&&!vis[i]){ res++; vis[i]=true; } if(total>closeTime[i]&&f) f=true; else f=false; total+=travelTime; } if(res>=n) break; if(f) break; } return res; } };
500p ChickenOracle (Compiled)
預言者が鶏と卵問題の答えをn人に教え、そのn人からの答えを元に預言を当てる問題。全体数、「卵」と答えた人の数、預言者が嘘を教えた人数、嘘をついた人数が与えられてるっと。
とりあえずlieCountとliarCountが0のときを分岐させてみて、それからliarがいるときとか考えようとしたけど結局うまくいかず。紙にベン図とか描いていろいろ考えて、lieCountとliarCoutとその共通部分で3重ループの作ったけどテストケース通せなくてオワタ。
やりなおして後で載せるっぽ。
900p BatchSystem Unopened
解いていません。
challenge
今回もパス。コーナーケースとか考える余裕なかったので。。。