Submission #308803
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// #define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <cstdlib>
#include <functional>
#include <locale>
#include <cctype>
#include <sstream>
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef map<int, int> MAPII;
typedef vector<pair<int, int> > VPII;
typedef multimap<int, string, greater<int> > MuMIS;
#define MP make_pair
#define fastIO cin.tie(0); ios::sync_with_stdio(false);
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
//for gcc (未test)
// #define FOREACH_IT(it,c) for(typeof(c)::iterator it=(c).begin(); it!=(c).end(); ++it)
//for Visual Studio
#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)
// 未test
#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf("%d ",b[i][j]);puts("");}
// ------------------- include, typedef, define END. -------------------
LL base = 1000000009;
LL base_pow[255]; // C<=250なので余裕持って255. base_pow[i] = base^i.
LL hash1[255][255] = {};
LL hash2_rev[255][255] = {};
LL Get_hash1(int HU_r, int HU_c, int MS_r, int MS_c){
// MS_rは使い道ない
// cout <<"HU_c-1 = " << HU_c-1<<endl;
return hash1[HU_r][MS_c] - hash1[HU_r][HU_c-1] * base_pow[MS_c-HU_c+1];
}
LL Get_hash2(int HU_r, int HU_c, int MS_r, int MS_c){
// HU_rは使い道ない
return hash2_rev[MS_r][HU_c] - hash2_rev[MS_r][MS_c+1] * base_pow[MS_c-HU_c+1];
}
bool Check2(int HU_r, int HU_c, int MS_r, int MS_c){
bool ret = true;
int i=0;
while(HU_r+i <= MS_r-i){
// cout<<endl;
// cout << " now ("<< HU_r+i<<", "<<HU_c<<") ~ ("<<MS_r-i<<", "<<MS_c<<")";
LL nowHash1 = Get_hash1(HU_r+i,HU_c,MS_r-i,MS_c);
LL nowHash2 = Get_hash2(HU_r+i,HU_c,MS_r-i,MS_c);
// cout << " now hash1 = "<<nowHash1 <<endl<<
// " now hash2 = "<< nowHash2;
if(nowHash1 != nowHash2){
// cout<<" ← false"<<endl;
return false;
}
i++;
}
// cout<<" ← true HITS!!" << endl;
// cout << "hash1 = "<<Get_hash1(HU_r+i,HU_c,MS_r-i,MS_c)<<endl<<
// "hash2 = "<<Get_hash2(HU_r+i,HU_c,MS_r-i,MS_c)<<endl;
return ret;
}
int solve(int R, int C, vector<string> &field){
int ans = 0;
// HU : 左上 MS : 右下
FOR(HU_r, 0, field.size()){
FOR(HU_c, 0, C - 1){
FOR(MS_r, HU_r + 1, field.size()){
FOR(MS_c, HU_c + 1, field[HU_r].size()){
// cout << "check (" << HU_r << ", " << HU_c << ") ~ (" << MS_r << ", " << MS_c << ")";
// cout << endl;
if (Check2(HU_r, HU_c, MS_r, MS_c))
ans++;
}
}
}
}
return ans;
}
// http://code-thanks-festival-2014-a-open.contest.atcoder.jp/submissions/294369
int main(){
fastIO;
int R = 0, C = 0;
string temp;
// 入力
cin >> R >> C;
vector<string> field;
field.reserve(R);
FOR(i, 0, R){
cin >> temp;
field.push_back(temp);
}
// 入力おわり
// ハッシュ計算用
base_pow[0]=1;
FOR(i,0,C){
base_pow[i+1] = base_pow[i] * base;
// cout<<"base_pow["<<i+1<<"] = "<<base_pow[i+1]<<endl;
}
FOR(i,0,R){
FOR(j,0,C){
if(j==0) hash1[i][j] = 0 + field[i][j];
else hash1[i][j] = hash1[i][j-1] * base + field[i][j];
// hash1[i][j+1] = hash1[i][j] * base + field[i][j];
// cout<<"hash1["<<i<<"]["<<j+1<<"] = "<<hash1[i][j+1]<<endl;
}
for(int j=C-1; j>=0; j--){
hash2_rev[i][j] = hash2_rev[i][j+1] * base + field[i][j];
// cout<<"hash2_rev["<<i<<"]["<<j-1<<"] = "<<hash2_rev[i][j-1]<<endl;
}
}
cout << solve(R, C, field) << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
H - 模様替え |
User |
conchan_akita |
Language |
C++ (G++ 4.6.4) |
Score |
45 |
Code Size |
3667 Byte |
Status |
TLE |
Exec Time |
8042 ms |
Memory |
2232 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 0 |
15 / 15 |
30 / 30 |
0 / 55 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
subtask0-sample-01.txt, subtask0-sample-02.txt |
Subtask1 |
subtask0-sample-01.txt, subtask0-sample-02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt |
Subtask2 |
subtask0-sample-01.txt, subtask0-sample-02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt |
Subtask3 |
subtask0-sample-01.txt, subtask0-sample-02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask3-01.txt, subtask3-02.txt, subtask3-03.txt, subtask3-04.txt, subtask3-05.txt, subtask3-06.txt, subtask3-07.txt, subtask3-08.txt, subtask3-09.txt, subtask3-10.txt, subtask3-11.txt, subtask3-12.txt, subtask3-13.txt, subtask3-14.txt, subtask3-15.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0-sample-01.txt |
AC |
27 ms |
1144 KB |
subtask0-sample-02.txt |
AC |
29 ms |
948 KB |
subtask1-01.txt |
AC |
26 ms |
948 KB |
subtask1-02.txt |
AC |
27 ms |
1080 KB |
subtask1-03.txt |
AC |
27 ms |
1076 KB |
subtask1-04.txt |
AC |
28 ms |
1136 KB |
subtask1-05.txt |
AC |
29 ms |
1180 KB |
subtask1-06.txt |
AC |
28 ms |
1080 KB |
subtask1-07.txt |
AC |
27 ms |
1176 KB |
subtask1-08.txt |
AC |
27 ms |
1108 KB |
subtask1-09.txt |
AC |
27 ms |
1076 KB |
subtask1-10.txt |
AC |
28 ms |
1076 KB |
subtask1-11.txt |
AC |
28 ms |
1132 KB |
subtask1-12.txt |
AC |
29 ms |
1080 KB |
subtask1-13.txt |
AC |
27 ms |
1076 KB |
subtask1-14.txt |
AC |
29 ms |
1176 KB |
subtask1-15.txt |
AC |
27 ms |
1076 KB |
subtask1-16.txt |
AC |
26 ms |
1180 KB |
subtask1-17.txt |
AC |
29 ms |
1072 KB |
subtask1-18.txt |
AC |
27 ms |
1076 KB |
subtask1-19.txt |
AC |
28 ms |
1180 KB |
subtask1-20.txt |
AC |
26 ms |
1168 KB |
subtask2-01.txt |
AC |
80 ms |
1204 KB |
subtask2-02.txt |
AC |
101 ms |
1328 KB |
subtask2-03.txt |
AC |
135 ms |
1388 KB |
subtask2-04.txt |
AC |
271 ms |
1332 KB |
subtask2-05.txt |
AC |
265 ms |
1452 KB |
subtask2-06.txt |
AC |
1601 ms |
1508 KB |
subtask2-07.txt |
AC |
268 ms |
1332 KB |
subtask2-08.txt |
AC |
269 ms |
1332 KB |
subtask2-09.txt |
AC |
269 ms |
1448 KB |
subtask2-10.txt |
AC |
1784 ms |
1468 KB |
subtask2-11.txt |
AC |
2186 ms |
1532 KB |
subtask2-12.txt |
AC |
272 ms |
1516 KB |
subtask2-13.txt |
AC |
1913 ms |
1336 KB |
subtask2-14.txt |
AC |
264 ms |
1448 KB |
subtask2-15.txt |
AC |
269 ms |
1344 KB |
subtask3-01.txt |
AC |
255 ms |
1456 KB |
subtask3-02.txt |
AC |
1244 ms |
1708 KB |
subtask3-03.txt |
AC |
463 ms |
1324 KB |
subtask3-04.txt |
AC |
565 ms |
1464 KB |
subtask3-05.txt |
AC |
810 ms |
1624 KB |
subtask3-06.txt |
TLE |
8034 ms |
2232 KB |
subtask3-07.txt |
TLE |
8033 ms |
2184 KB |
subtask3-08.txt |
TLE |
8033 ms |
2140 KB |
subtask3-09.txt |
TLE |
8032 ms |
2136 KB |
subtask3-10.txt |
TLE |
8035 ms |
2136 KB |
subtask3-11.txt |
TLE |
8032 ms |
2224 KB |
subtask3-12.txt |
TLE |
8042 ms |
2176 KB |
subtask3-13.txt |
TLE |
8032 ms |
2200 KB |
subtask3-14.txt |
TLE |
8033 ms |
2228 KB |
subtask3-15.txt |
TLE |
8033 ms |
2176 KB |