2013-06-01から1ヶ月間の記事一覧
たまにはパソコン甲子園の過去問でもやることにしました。0209 回転とかやれば楽。 #include<stdio.h> #include<algorithm> using namespace std; int M[100][100]; int v[100][100]; int x[100][100]; int main(){ int a,b; while(scanf("%d%d",&a,&b),a){ for(int i=0;i</algorithm></stdio.h>
今日はあまり難しい問題が解けなかった…あさって模擬国内なのに……(絶望)2446 罠が多い。へんなDPでほうじょ原理をする。これLCMがlong longに収まらないの大迷惑なんだが… #include<stdio.h> #include<algorithm> using namespace std; long long dp[1<<20]; long long c[20]; </algorithm></stdio.h>…
経路復元的なアレがあるフロー。フロー部分は簡単です。 #include <vector> #include <algorithm> #include <iostream> #include <queue> #include <cstdio> using namespace std; typedef int Weight; const Weight INF=99999999; struct Edge{ int dst,cap;Weight cost,rev; }; typedef vector<Edge> Node; ty</edge></cstdio></queue></iostream></algorithm></vector>…
TransfurTrain.配列のサイズを間違えてTrainがねこBusになりました。 #include<stdio.h> #include<algorithm> #include<queue> #include<map> #include<vector> #include<string> using namespace std; char str[16]; map<string,int> m; vector<pair<int,int> >g[100000]; vector<pair<int,int> >ijk[50000]; pair<int,int> IJK[100000]; vector…</int,int></pair<int,int></pair<int,int></string,int></string></vector></map></queue></algorithm></stdio.h>
500 点を埋める1311: Dijkstraするだけ。 #include<stdio.h> #include<algorithm> #include<vector> #include<queue> using namespace std; int ijk[100][100]; bool v[100][100]; vector<pair<int,int> >g[100]; int main(){ int a,b,c; while(scanf("%d%d%d",&a,&b,&c),a){ for(int i=0;i</pair<int,int></queue></vector></algorithm></stdio.h>
探索。答えはn-1以下であることとか、半分全列挙系を使えばいいとかを考えればいける。手元でテストするのが重過ぎる。 #include<stdio.h> #include<algorithm> using namespace std; int b[10]; long long c[5][4200000]; long long d[5][4200000]; int C[5]; int D[5]; long lo</algorithm></stdio.h>…
bitDP。面倒な形してるよね。 #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int len[128]; int dp[2][1<<16]; char str[128][17]; int L[16][1<<16]; int R[16][1<<16]; int main(){ int a,b; scanf("%d%d",&a,&b); for(int i=0;i</string.h></algorithm></stdio.h>
ようやくVolume 5が全部埋まりました。まだ増えるだろうけど、せいぜい8個。0508 枝かりゲーだと思っていたら枝かりの必要すらなかった。 #include<stdio.h> #include<vector> #include<algorithm> using namespace std; vector<int>g[100]; int used[100]; int solve(int a){ used[a]=1; int</int></algorithm></vector></stdio.h>…
残り少ないVolume 5。一応JOIのチューターなのでソースを書いてみたりするなど。 0509: O(N^2)をかけば通る。それより速い解法もあるんじゃないかなあ。どうなんだろう #include<stdio.h> #include<algorithm> using namespace std; int dp[2][10000]; pair<pair<int,int>,pair<int,int> >event[20000]; </int,int></pair<int,int></algorithm></stdio.h>…
A-Large,B-Largeで通過ですA:座標圧縮とか、変な計算とか、面倒なことが多いだけ。 #include<stdio.h> #include<algorithm> using namespace std; int d[1000]; int e[1000]; int f[1000]; int zahyou[2000]; long long v[2000]; int mod=1000002013; int main(){ int T; scanf("</algorithm></stdio.h>…