Particle

競技プログラミングについての雑記

2012-02-01から1ヶ月間の記事一覧

AOJ 0093: Leap Year

AOJ

出力に気をつけるのと、前計算するだけ。少しだけ短く書く場合は、 if(!(i%400) || i%100 && !(i%4)) leap[i]++; とする。 int leap[3000]; int main(){ for(int i = 1; i < 3000; i++){ if(i%400 == 0) leap[i] = 1; if(i%100 == 0) leap[i] -= 1; if(i%4 =…

AOJ 0089: The Shortest Path on A Rhombic Path

AOJ

入力してDPをします。上・下から真ん中までそれぞれ計算していって、上下の和が最大になるものを出力します。分からない場合は、まずは上半分だけについて考えてみましょう。(Project Euler に上半分だけの問題があったと思います。) int data[110][60],dp1[…

SRM533 Div2

Easy (入力の)最後の1文字まで考えないと、「pikapipip」みたいなので落ちます。 class PikachuEasy{ public: string check(string s) { for(int i = 0,l = s.size(); i < l; i+=2){ int f = 0; if(s[i] == 'p'){ if(i+1

AOJ 0070: Combination of Number Sequences

AOJ

next_permutation()使って、DP。 重複して数えてるから、重複した回数((10-n)!回)で割ってあげる。本当は重複しないで数えたいところだが、これでもそんなに遅くないので妥協した。 int num[10]; long fact[10],dp[10][331];//和が331以上になることはない。…

昨日のコードの修正

流石に遅すぎるので書き直した。採点したいけど、データが多すぎてどうすればちょっと困惑してる。スクリプトとか書けません。採点が終わったら、下の方に書いておきます本選 2. Bのi番目のカードから考えて得点が最大になるようにする。バグは取ったつもり…

JOI予選解き直し+本選不参加記

JOI

予選落ちしたから、復習してみました。 本選はボーダー超えられるか試してみたかったけど、5を解きたくなったから断念しました。2ヶ月前と比べるとだいぶ強くなったような気がしますが、まだまだですね。 予選 4.パスタ 結構バグが怖い。本番では2時間掛かっ…

CodeForces #106 (Div. 2)

A. ソートして、大きいのから使っていけばよい。 int main(){ int t,w[12]; cin>>t; for(int i = 0; i < 12; i++){ cin>>w[i]; } sort(w,w+12,greater<int>()); for(int i = 0; i <= 12; i++){ if(t<=0){ cout<</int>

AOJ 0056: Goldbach's Conjecture

AOJ

できるだけ、実行時間を短くしてみようとしました。コードも少しだけ短めにしました。 偶数を除いて普通にエラトステネスの篩を使って、(素数+素数)を全部計算しただけですが、可読性のことは全く考えていません。ごめんなさい。あと、if文って結構時間が掛…

AOJ 0054: Sum of Nth decimal places

AOJ

愚直に(10倍するだけで剰余を取らなかったり、double型を使ったりして)解こうとすると、精度が足りなかったり、オーバーフローするから、10倍しながら関係無い部分(整数部)を捨てていく。 int main(){ int a,b,n; while(cin>>a>>b>>n){ int ans = 0; a %= b;…

AOJ 0041: Expression

AOJ

適当にコードを短くしましょう。数字の並べ方:4!通り 演算子のつけ方:3(種類) ^ 3(場所) 通り 括弧のつけ方:5(4)通りで全部で9720(7776)通りなので、無駄が多いけど一瞬です。書くのは一瞬ではないですが、これで妥協しました。括弧のつけ方を1通り見落と…