2010-07-05から1日間の記事一覧

PKU 3175 Finding Bovine Roots

二分探索 整数部分を固定すると、小数部分は単調増加になる 整数部分をループで回して二分探索をすると通る long double TENS = 1.0; int saturate(long double value) { value -= (int)value; value *= TENS; return (int)value; } int main() { int L; cin…

PKU 3173 Parkside's Triangle

やるだけ パターンは空気を読めばおk int main() { int N, S; cin >> N >> S; --S; REP(i, N) { int value = S++; REP(j, N) { if (j) { cout << " "; } if (i > j) { cout << " "; } else { cout << value + 1; } value += j + 1; value %= 9; } cout << e…

PKU 3172 Scales

枝刈り探索 計算量は不明 int N, C; ll weights[1024]; ll sumWeights[1024]; ll bestAnswer = 0; void dfs(int i, ll value) { if (value + sumWeights[i] <= bestAnswer) { return; } bestAnswer = max(bestAnswer, value); if (i == N) { return; } if (v…

PKU 3171 Cleaning Shifts

動的計画法 時間->コスト の表をmapでsparseに持たせている 牛で2重ループを回しても間に合うらしい struct Cow { int T1, T2, S; bool operator < (const Cow& rh) const { return T1 != rh.T1 ? T1 < rh.T1 : T2 != rh.T2 ? T2 < rh.T2 : S < rh.S; } }; i…