| 提出番号 | 1270 |
|---|---|
| 提出者 | Nafmo |
| 言語 | C++ |
| 提出日時 | 2018-06-20 21:19:11 |
| 問題名 | (62)SuperCon2018(独自テスト) |
| 結果 | AC |
| 点数 | 3073000 |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 470000 | 476ms | 8016KB |
| 2 | AC | 470000 | 474ms | 7936KB |
| 3 | AC | 430000 | 439ms | 7920KB |
| 4 | AC | 460000 | 472ms | 8416KB |
| 5 | AC | 460000 | 471ms | 7504KB |
| 6 | AC | 400000 | 405ms | 7936KB |
| 7 | AC | 360000 | 370ms | 7952KB |
| 8 | AC | 480000 | 488ms | 7296KB |
| 9 | AC | 470000 | 479ms | 8416KB |
| 10 | AC | 440000 | 452ms | 7536KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 11 | AC | 300000 | 306ms | 7920KB |
| 12 | AC | 470000 | 474ms | 8000KB |
| 13 | AC | 230000 | 237ms | 7632KB |
| 14 | AC | 350000 | 358ms | 8336KB |
| 15 | AC | 460000 | 462ms | 8416KB |
| 16 | AC | 460000 | 472ms | 7952KB |
| 17 | AC | 360000 | 362ms | 8400KB |
| 18 | AC | 470000 | 479ms | 7248KB |
| 19 | AC | 470000 | 479ms | 8368KB |
| 20 | AC | 320000 | 332ms | 8384KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 21 | AC | 400000 | 403ms | 8272KB |
| 22 | AC | 340000 | 346ms | 8512KB |
| 23 | AC | 160000 | 168ms | 7232KB |
| 24 | AC | 300000 | 308ms | 8672KB |
| 25 | AC | 400000 | 414ms | 7920KB |
| 26 | AC | 380000 | 389ms | 8128KB |
| 27 | AC | 460000 | 466ms | 8000KB |
| 28 | AC | 320000 | 331ms | 7824KB |
| 29 | AC | 290000 | 300ms | 7936KB |
| 30 | AC | 430000 | 438ms | 8400KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 31 | AC | 160000 | 171ms | 7968KB |
| 32 | AC | 410000 | 420ms | 8656KB |
| 33 | AC | 370000 | 381ms | 8688KB |
| 34 | AC | 230000 | 237ms | 8384KB |
| 35 | AC | 310000 | 314ms | 7632KB |
| 36 | AC | 400000 | 404ms | 8176KB |
| 37 | AC | 390000 | 399ms | 8432KB |
| 38 | AC | 380000 | 392ms | 8448KB |
| 39 | AC | 360000 | 366ms | 8400KB |
| 40 | AC | 460000 | 464ms | 8384KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 41 | AC | 420000 | 432ms | 8080KB |
| 42 | AC | 240000 | 246ms | 8432KB |
| 43 | AC | 330000 | 336ms | 8384KB |
| 44 | AC | 280000 | 287ms | 8112KB |
| 45 | AC | 270000 | 274ms | 8304KB |
| 46 | AC | 180000 | 191ms | 7504KB |
| 47 | AC | 370000 | 377ms | 8448KB |
| 48 | AC | 290000 | 300ms | 7216KB |
| 49 | AC | 220000 | 231ms | 7792KB |
| 50 | AC | 140000 | 153ms | 8064KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 51 | AC | 110000 | 116ms | 7952KB |
| 52 | AC | 360000 | 369ms | 8112KB |
| 53 | AC | 390000 | 397ms | 8400KB |
| 54 | AC | 260000 | 262ms | 8272KB |
| 55 | AC | 320000 | 332ms | 8416KB |
| 56 | AC | 340000 | 346ms | 7952KB |
| 57 | AC | 290000 | 295ms | 8064KB |
| 58 | AC | 260000 | 268ms | 7520KB |
| 59 | AC | 170000 | 178ms | 8400KB |
| 60 | AC | 400000 | 403ms | 8432KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 61 | AC | 170000 | 174ms | 8704KB |
| 62 | AC | 320000 | 324ms | 7824KB |
| 63 | AC | 430000 | 440ms | 8336KB |
| 64 | AC | 190000 | 195ms | 7888KB |
| 65 | AC | 230000 | 237ms | 7936KB |
| 66 | AC | 230000 | 236ms | 8400KB |
| 67 | AC | 250000 | 258ms | 7632KB |
| 68 | AC | 140000 | 152ms | 8272KB |
| 69 | AC | 130000 | 137ms | 8432KB |
| 70 | AC | 380000 | 390ms | 8400KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 71 | AC | 70000 | 79ms | 8192KB |
| 72 | AC | 400000 | 411ms | 8112KB |
| 73 | AC | 400000 | 406ms | 8672KB |
| 74 | AC | 310000 | 318ms | 7248KB |
| 75 | AC | 130000 | 134ms | 8432KB |
| 76 | AC | 120000 | 122ms | 8400KB |
| 77 | AC | 240000 | 242ms | 7920KB |
| 78 | AC | 220000 | 224ms | 7968KB |
| 79 | AC | 230000 | 237ms | 8416KB |
| 80 | AC | 340000 | 342ms | 8704KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 81 | AC | 240000 | 248ms | 8240KB |
| 82 | AC | 210000 | 214ms | 8432KB |
| 83 | AC | 280000 | 286ms | 7984KB |
| 84 | AC | 230000 | 235ms | 7952KB |
| 85 | AC | 280000 | 291ms | 7920KB |
| 86 | AC | 210000 | 218ms | 8400KB |
| 87 | AC | 230000 | 240ms | 8192KB |
| 88 | AC | 280000 | 290ms | 8064KB |
| 89 | AC | 150000 | 153ms | 8464KB |
| 90 | AC | 300000 | 312ms | 7824KB |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 91 | AC | 240000 | 246ms | 8688KB |
| 92 | AC | 240000 | 252ms | 7632KB |
| 93 | AC | 330000 | 336ms | 8368KB |
| 94 | AC | 190000 | 196ms | 7808KB |
| 95 | AC | 150000 | 157ms | 7632KB |
| 96 | AC | 450000 | 461ms | 8416KB |
| 97 | AC | 270000 | 280ms | 8432KB |
| 98 | AC | 80000 | 82ms | 8384KB |
| 99 | AC | 350000 | 357ms | 8384KB |
| 100 | AC | 260000 | 271ms | 8672KB |
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<time.h>
int scN,scM;
int scB[2][10];
clock_t scStartTime,scEndTime;
void scInput(){
int i;
scanf("%d%d",&scN,&scM);
for(i=0;i<scM;++i){scanf("%d%d",&scB[0][i],&scB[1][i]);}
scStartTime=clock();
}
void scOutput(int s){
scEndTime=clock();
printf("Ans= %d, time=%d\n",s,(int)(scEndTime-scStartTime));
}
using namespace std;
//ans:答え F:訪問済チェック v:方向要素保存 dx,dy:移動方向差分
int ans;
bool F[50][50];
int v[5],dx[4],dy[4];
// x座標 y座標 回数 方向
inline void DFS(int x,int y,int d,int dr){
if(d == scN){
//左右と上下に動いた回数が同じであるかと
//N回進んだときにスタート地点に戻ることを確認する
if(v[0] != v[2] || v[1] != v[3])return;
if(x == 0 && y == 0)++ans;
return;
}
//今いる地点から残りの移動回数で戻れなければ枝刈り。
if(abs(x)+abs(y)>scN-d)return;
//移動方向 右:0 上:1 左:2 下:3
for(int i=0;i!=4;++i){
//一個前の座標の位置に動くのを防ぐ
if(dr == i)continue;
//一度通ったマスでなければ再帰する。
if(!F[x + dx[i] + 20][y + dy[i] + 20]){
F[x + dx[i] + 20][y + dy[i] + 20] = true;
++v[i];
//進んだ方向と逆には進めないためそれを渡して再帰する
int a=(i+2)%4;
DFS(x + dx[i],y + dy[i],d + 1,a);
--v[i]; F[x + dx[i] + 20][y + dy[i] + 20] = false;
}
}
}
int main(){
scInput();
//scInput() より前に実行してはいけないため(初期化も不可)
v[0]=v[1]=v[2]=v[3]=0;
dx[0]=1,dx[1]=0,dx[2]=-1,dx[3]=0;
dy[0]=0,dy[1]=-1,dy[2]=0,dy[3]=1;
for (int i=0;i!=scM;++i)F[scB[0][i]+20][scB[1][i]+20] = true;
if(!F[20][20])DFS(0,0,0,-1);
scOutput(ans);
return 0;
}