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

    今回もパス。コーナーケースとか考える余裕なかったので。。。



    tanitanin at 20:10│Comments(0)TrackBack(0)TopCoder | プログラミング

    トラックバックURL

    コメントする

    名前
    URL
     
      絵文字