Particle

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

2012-01-01から1年間の記事一覧

SRM499 Div2

久々にpracticeしました。Easy 229.95/250 正の整数が沢山あって、X+YとX-Yが含まれている。X*Yの最大値を求めよ。全探索で良い。AとB(A>B)の偶奇が一致するとき、整数X,Yは存在して、X=(A+B)/2,Y=(A-B)/2となる。 加法定理を逆向きに使うときにこんな感じの…

AOJ 505: Questionnaire

AOJ

ソート。INFから引いていけば簡単になります。 int main(){ int n,m; while(cin>>n>>m,n||m){ pair<int,int> p[100]; for(int i = 0; i < m; i++){ p[i].first = 2000; p[i].second = i+1;//INF = 2000 } for(int i = 0 ; i < n; i++){ for(int j = 0; j < m; j++){ i</int,int>…

SRM537 Div2

Easy 子音が6個で母音が2個で、母音が両方とも同じであれば"YES"でそうじゃなければ"NO"を出力する。 数えるだけ class KingXNewBaby{ public: string isValid(string s) { int len = s.size(); if(len!=8) return "NO"; int a = 0; for(int i = 0; i < len;…

VK Cup 2012 Qualification Round 2

A. Friends or Not 古い情報を上書きして行けば解けそうだけど、何故か解けない。B. Matchmaker yとbが同じになるところだけ考えれば良いです。一応コード載せておくけど、説明できない… int y[1001],b[1001],yx[1001][1001]; vector<int> ba[1001]; int main(){ </int>…

SRM536 Div2

いつもより、読解が大変だった。あと、easyで中括弧忘れに気づくのに時間が掛かり過ぎたりしてたから、気を付けなければならないEasy 与えられた方程式にx=0,1を代入して、f(x)が偶数になるxの個数を求めます。 x=0の場合は、a[0]のみを考えればよく、x=1の…

VK Cup 2012 Qualification Round 1

A.Next Round 問題文読めてないけど、通ってた。 k番目の値以上で且つ0じゃないものの個数を出力する。数字が減っていくが、無視して普通に数えても良い。 int n,k,t,p[51],res; int main(){ cin>>n>>k; for(int i = 0; i < n; i++){ cin>>p[i]; if(i == k-1…

SRM535 Div2

Easy 連立方程式を解く問題。 解が存在すると仮定して、それが整数になるかを判定するだけの人がまあまあいました。どう解いても、検算すればだいたい大丈夫だから、検算しましょう。 私は検算してませんが、challengeしてくる方は流石に居ませんでした。 cl…

CTPC

A.Average "Yes","No"を"YES","NO"と書くと全部WAになる。 #include <iostream> #include <algorithm> using namespace std; int n,s,m; int main(){ for(int i = 0; i < 4; i++){ cin>>n; m = max(m,n); s += n; } s += m; if(s>=300)cout<<"Yes"<</algorithm></iostream>

AOJ 0574: Nails

AOJ

最大値の伝播です。正方形型にメモリを確保してしまうと、半分くらい無駄になってMLEしてしまうので、三角形にします。(こんな感じに) (-1, 0) ( 0, 0) ( 0, 1) ( 1, 0) ( 1, 1) ( 1, 2) ( 2, 0) ( 2, 1) ( 2, 2) ( 2, 3) ...この図で、輪ゴムにかかる可能性…

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通り見落と…

CodeForces #101 (Div. 2)

問題Aはhttp://codeforces.com/problemset/problem/141/A A. 文字を数えて、同じかどうか判定すればよい int memo[26]; string a,b,c; int r; int main(){ cin>>a>>b>>c; for(int i=0;i

AOJ 2332: Space-Time Sugoroku Road

AOJ

Problem 3: 時空のスゴロク・ロード全てのマスに対して、暫定の最短距離を求めるのを繰り返した。蟻本でこんな感じのアルゴリズムを見た記憶がある。たどり着く場所と、そこへの最短距離だけ分かればいい気がするけど、これでも通った。 int p[100000],d[100…

AOJ 0551: Icicles

AOJ

つらら汚いです。 やるだけで、実装が(自分にとっては)難しい問題だと思ったけど、考える問題らしい。余裕があるときに解きなおしたい。 long使う必要なかったかも。面倒臭いから全部longにしちゃったけど。 long n,l,ice[100002],ict[100002],icf[100002],i…

目標(2012)

難易度が低い順に 黄コーダーになる (100人以上参加するコンテストかテストで)5位以内 緑コーダーにならない 全教科偏差値75以上 beginner's luckで赤コーダーになる