intさわだんのBlack History

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

USACO

POJ 3264 Balanced Lineup

解法:Segment Tree(RMQ)セグツリやるだけUSACOの問題。Range Minimum QueryとRange Maximum Queryを同時に処理する。計算量O(Q lg N). #include <cstdio> #include <algorithm> #include <climits> using namespace std; typedef pair<int,int> P; int n,q,seg[2][121072],nn; P query(int a,int </int,int></climits></algorithm></cstdio>…

POJ 3051 Satellite Photographs

問題文 http://poj.org/problem?id=3051 深さ優先探索やるだけ char型嫌いでint型好きなので配列はintにした。JOI予選まであとn日!!!(n #include <cstdio> #include <algorithm> using namespace std; int w,h,t=0,ans=0; int d[1005][90]; int dx[] = {0,-1,0,1}; int dy[]</algorithm></cstdio>…

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 3627 Bookshelf

問題文 http://poj.org/problem?id=3627謎問 priority_queueつかうだけ。 sortしたら間に合わないとか言うやつなのかな? #include <cstdio> #include <queue> using namespace std; int n,s,b,ans; int main(){ scanf("%d%d",&n,&b); priority_queue<int> que; for(int i = 0;i </int></queue></cstdio>…

POJ 3615 Cow Hurdles

問題文 http://poj.org/problem?id=3615ワーシャルフロイド法をちょっとだけいじる。 N iostreamを使うとTLEした。 #include <cstdio> using namespace std; const int INF = 100000000; int n,m,t; int d[305][305]; int main(){ for(int i = 0;i <= 303;i++){ for(</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 3626 Mud Puddles

問題文 http://poj.org/problem?id=3626 解法:幅優先探索やるだけ。 感想:JOI予選にでてもおかしくない。 #include <cstdio> #include <iostream> #include <queue> using namespace std; typedef pair<int,int> P; const int t = 510; const int INF = 100000; int x,y,n,ans; int d[1020][1</int,int></queue></iostream></cstdio>…

POJ 2387 Til the Cows Come Home

ダイクストラ二分ぐらいで瞬殺。 #include <cstdio> #include <queue> #include <iostream> using namespace std; const int INF = 100000000; const int MAX_V = 1002; struct edge{ int to,cost;}; typedef pair<int,int> P; int V; vector<edge> G[MAX_V]; int d[MAX_V]; void dijkstra(int s){ pr</edge></int,int></iostream></queue></cstdio>…

POJ 2182 Jumping Cows

こんな簡単なDPが眠っていたとは。。。 #include <cstdio> #include <algorithm> using namespace std; int p; int s[150002]; int dp[150002][2]; int main(){ scanf("%d",&p); for(int i = 1;i <= p;i++)scanf("%d",&s[i]); for(int i = 1;i <= p;i++){ dp[i][0] = max(dp[i-1</algorithm></cstdio>…

POJ 2180 Bale Figures

とても頭のわるいソースになった。英語読めな過ぎて「最初のところから25以上離れない」みたいな重要なところを読み飛ばしており仕方なくsetを使っていた。解き終えてからほかの人のブログで知った。 set<string>にしたらTLEになったので仕方なくpair使い…

POJ 2231 Moo Volume

くっそ頭悪い 戒め #include <set> #include <algorithm> #include <string> #include <queue> #include <iostream> #include <utility> #include <cstdio> #include <string.h> #include <vector> using namespace std; long long int d[10010]; long long int tmp[10010]; int main(){ long long int n; scanf("%lld",&n); for(in…</vector></string.h></cstdio></utility></iostream></queue></string></algorithm></set>

POJ 1952 BUY LOW, BUY LOWER

問題文典型DP。やるだけ。頭悪い。 #include <set> #include <algorithm> #include <queue> #include <utility> #include <cstdio> #include <string.h> #include <vector> using namespace std; typedef pair<int,int> P; P dp[5003]; int a[5003]; int main(){ int n; for(int i = 0;i <= 5000;i++){ dp[i].first = 1; } scanf(</int,int></vector></string.h></cstdio></utility></queue></algorithm></set>…

POJ 3671 Dining Cows

英語読めなさすぎ。冷える。 #include <cstdio> #include <algorithm> using namespace std; int d[30004]={0}; int main(){ int n; int ans = 100000000; int tmp = 0; scanf("%d",&n); for(int i = 1;i <= n;i++){ scanf("%d",&tmp); d[i] = d[i-1]; if(tmp==1)d[i]++; } int </algorithm></cstdio>…

POJ 3619 Speed Reading

USACOの簡単な問題 計算するだけ #include <cstdio> using namespace std; int main(){ int n,k; scanf("%d%d",&n,&k); while(k--){ int ans = 0; int s,t,r; scanf("%d%d%d",&s,&t,&r); int ka = n / s; if(n % s != 0)ka++; ans += ka; int q = ka / t; if(ka % t </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) 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) 2390 Bank Interest

やるだけ。 #include <cstdio> #include <cmath> using namespace std; int main(){ int r,m,y; scanf("%d%d%d",&r,&m,&y); double ans=m,k = 1 + (r / 100.0); for(int i = 0;i < y;i++) ans *= k; printf("%.0f\n",floor(ans)); return 0; }</cmath></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>…

POJ(PKU) 3616 Milking Time

N年ぶりにDPの問題を解いたけどなんとかできた。。。解法:DP dp[i] = max(dp[i-1],終わる時間がiの中で最も大きいもの);実際問題から計算量O(N)しかありえないっぽいし解法しぼれたのでよかった。 #include <cstdio> #include <algorithm> using namespace std; typedef pair<int,int> P</int,int></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>…

POJ2388 (USACO)

問題👈やるだけ。またまたソート。記事数を増やすために頑張っているんです。 #include <cstdio> #include <algorithm> using namespace std; int main(){ int n,d[10003] = {0}; scanf("%d",&n); for(int i = 0;i < n;i++){ scanf("%d",&d[i]); } sort(d,d + n); printf("%d\n",d</algorithm></cstdio>…