intさわだんのBlack History

刹那的レジェンドになりたい。

やるだけ

第6回日本情報オリンピック 春合宿 1日目 問題1 「得点」 (Score)

priority_queueやsortを使い、大きいほうから順に並べてその得点の順位を決めます。計算量はO(n log n)だけどこの問題はそこまで計算量気にしなくてよさそう。 #include <bits/stdc++.h> using namespace std; int d[100005]; int jun[120]; int main(){ priority_queue<int> que</int></bits/stdc++.h>…

POJ 2394 Checking an Alibi

http://poj.org/problem?id=2394解法:ダイクストラやるだけ。JOI予選近いですね・・・ #include <cstdio> #include <queue> #include <vector> using namespace std; int f,p,c,m; const int INF = 100000000; const int MAX_V = 510; struct edge{ int to,cost;}; typedef pair<int,int> P;</int,int></vector></queue></cstdio>…

POJ 3620 Avoid The Lakes (C++)

問題文 http://poj.org/problem?id=3620 解法:深さ優先探索やるだけ。 #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int n,m,k,tmp,ans=0,d[110][110]; int da[] = {0,1,0,-1}; int db[] = {1,0,-1,0}; void dfs(int a,int b){ tmp++; d[a][b] = 0;</algorithm></cstdio></iostream>…

POJ(PKU) 1050 To the Max

解法:ナイーブな実装.O(N^4).O(N^4)になるのでダメ、といっているものを拝見しましたが、実はO(N^4)でいけます。(ちょっと工夫が必要だけど累積和を二次元にするだけです。 難しく考えすぎるとかえってダメな場合もありますね、、、。 #include <cstdio> #include <algorithm></algorithm></cstdio>…

第8回日本情報オリンピック 本選 「散歩」

解法: それぞれの座標に行く回数をn-1回分まで記録しておき、その回数が奇数だったら最初の文字(東、西)を反転させ、偶数の場合なにもしない。 最後にn回目の散歩の終わる座標を求めて出力。計算量O(HW)。 #include <cstdio> using namespace std; int h,w,n; int</cstdio>…

POJ(PKU) 3672 Long Distance Racing

究極のやるだけ。 誤読しててつらかった。 プログラミングよりも英語読むほうが難しく感じた・ #include <cstdio> #include <algorithm> #include <iostream> using namespace std; int main(){ int m,t,u,f,d; int p[3]={0}; int ans = 0; scanf("%d%d%d%d%d",&m,&t,&u,&f,&d); char s; i</iostream></algorithm></cstdio>…

POJ(PKU) 1936 ALL in ALL

問題概要 二つの文字列s,tが与えられる。tの任意の文字を削除してsにすることができるか。 s,tは100000文字を超えない。 解法 t[0]からt見ていきs[0]と同じば場合s[1]について比較。 #include <cstdio> #include <iostream> #include <cstring> using namespace std; int main(){ char s</cstring></iostream></cstdio>…

POJ(PKU) 3618 Exploration

やるだけ・ JOI予選っぽい問題だったし一発AC #include <cstdio> #include <algorithm> #include <utility> using namespace std; typedef pair<int,int> P; P p[50003]; int main(){ int n,t; int ans = 0; int d[50003]; scanf("%d%d",&t,&n); for(int i = 0;i < n;i++){ scanf("%d",&d[i]); p[i</int,int></utility></algorithm></cstdio>…

POJ(PKU) 3173 Parkside's Triangle

やるだけ・ #include <cstdio> using namespace std; int main(){ int n,s; int d[21][21]={0}; scanf("%d%d",&n,&s); int co = s; for(int j = 0;j < n;j++){ for(int i = 0;i < n;i++){ if(j >= i){ d[i][j] = co; co++; if(co == 10)co = 1; } } } for(int i = 0;</cstdio>…

POJ(PKU) Vertical Histogram

奇問。 究極のやるだけ。 #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <iostream> using namespace std; int main(){ char d[80]; int p[100] = {0}; while(cin >> d){ int len = strlen(d); for(int i= 0;i< len;i++){ if(d[i] >= 65 && d[i] <= 90){ p[d[i]-6</iostream></string></algorithm></cstring></cstdio>…

POJ(PKU) 2190 ISBN

問題文ちゃんと読もうな。 #include <cstdio> #include <iostream> using namespace std; int main(){ char d[11]; scanf("%s",&d); int k; int sum = 0; for(int i = 0;i < 10;i++){ if(d[i] == '?'){ k = 10 - i; }else if(d[i] == 'X'){ sum += 10 * (10 - i); }else{ int n</iostream></cstdio>…

第7回日本情報オリンピック 本選 「碁石ならべ」

こういう系の問題一番苦手。 実装力がない。 オーダーから察するにO(N)問題。int s[i]; (i番目について、白の碁石の連続している数) int k[i]; (i番目について、黒の碁石の連続している数) で値をもっておきあとはいわれたとおりにやる。 #include <cstdio> #inclu</cstdio>…

第6回日本情報オリンピック 本選 「最大の和」

部分点解法についてのソースも乗のっけていこうと思いましたが、AOJで部分点採点してくれないことに気が付いたのでやめます。すいません。 部分点解法 a[i]からa[i+k-1]までの和をfor文で求め、これを0 オーダーはO(NK). 参考までに↓ int max = 0 for(int i …

POJ(PKU) 1862 Stripies

なぞに顕著な貪欲。 大きいほうから順に消していけばよい。 #include <cstdio> #include <algorithm> #include <cmath> #include <functional> #include <iostream> using namespace std; int main(){ int n; double d[103] = {0}; scanf("%d",&n); for(int i = 0;i < n;i++){ cin >> d[i]; } sort(d, d + n ,</iostream></functional></cmath></algorithm></cstdio>…

POJ 3050 Hopscotch

解法:全探索(dfs)やるだけである。思ったより簡単で腰を抜かす。 #include <set> #include <iostream> #include <cstdio> using namespace std; int dx[] = {1,0,-1,0}; int dy[] = {0,1,0,-1}; set<int> tmp; int ans = 0; int d[6][6]; void dfs(int x,int y,int s,int g){ if(s == 6)</int></cstdio></iostream></set>…

POJ3187 Backward Digit Sums

全列挙。next_permutationを使うとらく。やるだけです。ちょっと数学力が足りないのでせこい技を使ってしまった。 #include <cstdio> #include <algorithm> #include <iostream> using namespace std; int main(){ int n,sum; int d[12]; int c[12][12] = {0}; c[0][0] = 1; c[1][0] = 1; </iostream></algorithm></cstdio>…

Codeforces 248A&B

こどふぉ惨敗。次はもっと解きたい。せめて3問A #include <cstdio> #include <algorithm> #include <cstdlib> #include <cstring> using namespace std; int main(){ int n,w[102]; int a100 = 0,a200 = 0; scanf("%d",&n); for(int i = 0;i < n;i++){ scanf("%d",&w[i]); if(w[i] == 100){ a100++</cstring></cstdlib></algorithm></cstdio>…

Codeforces 34B

問題文ソート、貪欲。 #include <cstdio> #include <algorithm> using namespace std; int main(){ int n,m,ans=0; int d[102] = {0}; scanf("%d%d",&n,&m); for(int i = 0;i < n;i++){ scanf("%d",&d[i]); } sort(d, d + n); for(int i = 0,j = 0;i < n && j < m;i++){ if(d[i]</algorithm></cstdio>…

Codeforces 37A

http://codeforces.com/problemset/problem/37/Aおんなじ長さのものの最大数と、最終的な木の棒の数を求める。(?)解法:ソート25行目の、ansa = max(ansa,++ren);のところがどうでもいいけど細かな工夫。 #include <cstdio> #include <algorithm> using namespace std; int main</algorithm></cstdio>…

SRM401 (div.2) 250point

がち黒歴史コードになった。 あとで直したい。 #include <cstdio> #include <iostream> #include <algorithm> #include <vector> #include <cstring> using namespace std; class DreamingAboutCarrots{ public: int carrotsBetweenCarrots(int x1, int y1, int x2, int y2){ int ans = 0; if(x1 > x2){ int</cstring></vector></algorithm></iostream></cstdio>…

Codeforces #1A

問題文算数の問題。 解法は顕著。なんかショートコーダーみたいになった。 #include <iostream> #include <algorithm> using namespace std; int main(){ long long int n,m,a,t=1; cin >> n >> m >> a; cout << max(t,(n % a == 0 ? n / a : n / a + 1))*max(t,(m % a == 0 ? m /</algorithm></iostream>…

AtCoder Beginner Contest

問題文 http://abc002.contest.atcoder.jp/tasks/abc002_3解法やるだけ。 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; int main(){ int xa,ya,xb,yb,xc,yc; int ans; scanf("%d%d%d%d%d%d",&xa,&ya,&xb,&yb,&xc,&yc); int a = xb - xa; int b = yb </algorithm></iostream></cstdio>…

SRM400 (div.2) 250point

400番台を解いていくことにしよう。やるだけ。JOI予選2ないし3に出てきそうなレベル #include <algorithm> #include <vector> using namespace std; class GrabbingTaxi{ public: int minTime(vector <int> tXs, vector <int> tYs, int gX, int gY, int walkTime, int taxiTime){ int ans </int></int></vector></algorithm>…

Codeforces 100A

問題文⇒URL問題概要をパパッとすると、整数値n(部屋に入れる丸テーブルの数)、R(円形の部屋の半径)、r(円形テーブルの半径)が与えられて(例:n = 4,R = 10,r = 4)、部屋にテーブルが全部入るか入らないか答えよという問題。 テーブル同士かぶったりしてはい…

POJ1458 Common Subsequence

あの有名な最長共通部分列問題。典型的な問題。 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; int main(){ char a[2000],b[2000]; while(cin>>a>>b){ int dp[1001][1001] = {0}; int alen = strlen(a); int blen = strlen(b); for(int i =</cstring></algorithm></iostream></cstdio>…

AOJ0569 イルミネーション

致命的なミスをして一発ACできなかったから精進。解法:なし。 #include <cstdio> using namespace std; int dy[] = {-1,0,1,1,0,-1}; int dx0[] = {0,1,0,-1,-1,-1}; int dx1[] = {1,1,1,0,-1,0}; int w,h,ans = 0; int m[110][110] = {0}; void dfs(int y,int x){ </cstdio>…

AOJ0558 チーズ

これほど汚いソースを見たことがない。 戒めのためにはります。 #include <cstdio> #include <queue> #include <cstdlib> using namespace std; int h,w,n; int nx,ny; int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; int ans = 0; char m[1003][1003]; void search(int ty,int tx,c</cstdlib></queue></cstdio>…

codeforces 240A(div.2)

実装やるだけ。。。世界一英語読めないからつらい。問題文← #include <cstdio> using namespace std; int main(){ int n,m; int dat[102] = {0}; int num[102] = {0}; scanf("%d%d",&n,&m); for(int i = 0;i < m;i++){ scanf("%d",&dat[i]); } for(int i = 0;i < m;i</cstdio>…

AOJ0568 パスタ

JOI予選問題解法:典型的なDP 問題しっかり読もうと思った #include <cstdio> using namespace std; int main(){ const int mod = 10000; int n,k; int yotei[102]={0}; int dp[102][4][2] = {0}; scanf("%d%d",&n,&k); for(int i = 0;i < k;i++){ int a,b; scanf("%d</cstdio>…

AOJ0578 看板

joi予選の問題。こういうのめっちゃ苦手だけど成長したのか瞬殺だった。 解法:線形探索 #include <cstdio> #include <cstring> using namespace std; int main(){ int n,ans=0; char name[27],s[102][102]; scanf("%d",&n); scanf("%s",&name); for(int i = 0;i < n;i++){ sca</cstring></cstdio>…