SRM617 Div2 復習

xx-という不名誉な結果に終わったことだしきっちり復習。

参考 http://d.hatena.ne.jp/torus711/20140421

Easy

i=4 to n/2とし、どちらも合成数となる(i,n-i)を探せばよい。
ちょっと違うけどゴールドバッハの予想を思い出した*1

Medium

ただのシミュレーション。
参考どおりに実装しようとおもったけどqueueより配列(vector)の方が楽そうなのでvectorで実装。

class SlimeXSlimonadeTycoon {
public:
    int sell(vector<int> morning, vector<int> customers, int stale_limit) {
        int ret = 0;
        const int n = (int)morning.size();
        
        vint item(n);//day:number
        for (int i=0; i<n; i++) {
            //make
            item[i]=morning[i];
            
            int k=customers[i];
            
            //sell
            for (int j=0; j<=i; j++) {
                if (j+stale_limit<=i) {
                    item[j]=0;
                }else{
                    int sell = min(k,item[j]);
                    
                    item[j]-=sell;
                    k-=sell;
                    ret+=sell;
                }
            }
        }
        
        return ret;
    }
};
Hard

てにおえません。

*1:ゴールドバッハ予想を使う問題でミスった記憶も思い出しました。あれもDiv2Easy...