intさわだんのBlack History

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

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

joi予選過去問 宿題 (Homework)

おそらく私が人生で一番初めに解いたであろう問題を初心に戻ると言う意を込めて解いてみた。問題文 初めのころはこれぐらいの問題も20分ぐらい考えてたものなんですよ。 今となってはいい思い出かな。 この問題やってなかったら今の自分は無かったかもしれな…

JOI本選過去問 第8回 日本情報オリンピック本選 4問目 散歩

問題分は「AOJ 0541」とでもググってください。 DPでやりました。 N-1回目までの散歩でそれぞれ何回その場所に通るか回数をdpに入れていき、その合計が偶数なら何もしない、奇数なら「南」「東」を反転させ、N回目をシミュレーションしていき感じです。 おそ…

JOI本選過去問 第11回 日本情報オリンピック本選 3問目 夜店

問題はこちらなんかいろいろめんどくさかった。 メモリに気をつけよう(節約しました 細かいとこばぐんないようにしよう。 あとは気合 ソースとても汚いけどまわりと比較して実行時間そこまで遅くないので吉としよう。 #include <cstdio> #include <algorithm> #include <string.h> using </string.h></algorithm></cstdio>…

memo union-find

int par[MAX_N]; //親 int rank[MAX_N]; //木の深さ //n要素で初期化 void init(int n) { for(int i = 0;i < n;i++){ par[i] = i; rank[i] = 0; } } //木の根を求める int find(int x){ if(par[x] == x){ return x; }else{ return par[x] = find(par[x]); } …

memo dijkstra

#include <cstdio> #include <algorithm> #include <queue> #include <vector> const int INF = 10000; using namespace std; // struct edge { int to ,cost; }; struct edge { int to, cost; edge(int _to, int _cost) {to = _to; cost=_cost;} }; typedef pair<int ,int>P; int V; vector<edge> G[8]; int d[</edge></int></vector></queue></algorithm></cstdio>…

memo ワーシャル=フロイド法

完全にメモです。 #include <cstdio> #include <algorithm> #include <iostream> using namespace std; int dp[8][8] = {0}; int V; const int INF = 10000; void wf(){ for(int k = 0;k < V;k++){ for(int i = 0;i < V;i++){ for(int j = 0;j < V;j++) dp[i][j] = min(dp[i][j],dp[i][k] </iostream></algorithm></cstdio>…

進捗

進捗悪いやばい。明日はがんばるし...

進捗

久々に進捗いいです。英単語を犠牲にしたかいがありました。

JOI本選過去問 第8回 日本情報オリンピック本選 2問目 ピザ

問題文はこちら。 瞬殺問題。 二分探索地味に初めてでした。 一発ACはたのしい。 #include <cstdio> #include <algorithm> #include <vector> using namespace std; int main(){ while(1){ long int d = 0; long int n = 0; int m = 0; long int ans = 0; vector<long> dat; vector<long>::iterator </long></long></vector></algorithm></cstdio>…

*不完全 JOI本選過去問 第7回 日本情報オリンピック本選 4問目 ぴょんぴょん川渡り

なぜかACにならない、なぜだ。いくつか原因はわかっているけど保留。。。 #include <cstdio> #include <algorithm> using namespace std; int n=0,m=0; const int INF = 100000000; int dp[153][12][80] = {0}; int ko[152] = {0}; int d[103][12][2] = {0}; int main(){ scanf(</algorithm></cstdio>…

進捗

昨日は進捗ダメだったから、今日は挽回するぜ!!!

JOI本選過去問 第7回 日本情報オリンピック本選 3問目 ダーツ

まず初めに、非常に効率の悪い解法。(O(n^4)) #include <cstdio> #include <algorithm> using namespace std; int n = 0; long int m = 0; long int ans = 0; long int p[1003] = {0}; int main(){ while(1){ scanf("%d%ld",&n,&m); if(n == 0) break; ans = 0; for(int i = 0;i </algorithm></cstdio>…

進捗

進捗ダメですやばいです。

JOI本選過去問 第11回 日本情報オリンピック本選 2問目 たのしいカードゲーム

どう見ても解法わるい #include <cstdio> #include <algorithm> using namespace std; int alen = 0,blen = 0; short ans = 0; short a[5003] = {0}; short b[5003] = {0}; short dp[5003][5003] = {0}; int main(){ scanf("%d %d ",&alen,&blen); for(int i = 0;i < alen;i++){</algorithm></cstdio>…

JOI本選過去問 第10回 日本情報オリンピック本選 一問目 惑星探査

問題文はこちら。たぶんやるだけ。もっともっといい解法がある気が... そーす汚すぎて何も言えないです。 #include <cstdio> using namespace std; int n = 0,m = 0; long k = 0; char tizu[1003][1003]; int dp[1003][1003][3] = {0}; int func(char sss){ int r = </cstdio>…

JOI本選過去問 第6回 日本情報オリンピック本選 3問目 最古の遺跡

問題文はこちら 長年頭の中では解けていたけど、実装していなかった問題。解けて頭がすっきりした。 解説の効率のよい解法で計算量がO(n^2 log n)と書いていたのをみて、「これはO(n^2/2)でいけるのでは」と思って実装してみた。やるだけでとてもかんたんだ…

JOI本選過去問 第11回 日本情報オリンピック本選 一問目 JJOOII

はい。おそらく誰でも解けるでしょう。 問題文はこちら。 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; long n = 0; char s[1000003]; long int ans = 0; int main(){ scanf("%s",s); n = strlen(s); for(long i = 0;i < n;i++){ if(s[i] != 'J'){ c</cstring></algorithm></cstdio>…

POJ 3176 Cow Bowling

問題文はこちら典型DP蟻本にのってた。配列でもぐもぐする。 #include <cstdio> #include <algorithm> using namespace std; int bow[353][353] = {0}; int dp[353][353] = {0}; int n = 0; int main(){ scanf("%d",&n); for(int i = 0;i < n;i++){ for(int j = 0;j < i + 1;j++</algorithm></cstdio>…

JOI本選過去問 第9回 日本情報オリンピック本選 一問目 旅人

問題文はこちらやるだけっぽい。mod = 100000 にするのを忘れずに。 #include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; long int n=0,m=0; long tmp[100003] = {0}; long int ans = 0; long int mod = 100000; int main(){ scanf("%ld%ld",&n,&m); for(in</algorithm></cstdlib></cstdio>…

JOI本選過去問 第8回 日本情報オリンピック本選 一問目 IOIOI

やるだけちょっと工夫しないとTLEなるのかな?問題文はこちら #include <cstdio> #include <algorithm> using namespace std; long n,m; long p = 0; char s[1000003]; int main(){ while(19){ long long ans = 0; scanf("%ld",&n); if(n == 0) break; scanf("%ld",&m); scanf("</algorithm></cstdio>…