QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#720891 | #2855. Phone Numbers | _8_8_# | 9.52381 | 47ms | 73700kb | C++23 | 2.8kb | 2024-11-07 14:36:50 | 2024-11-07 14:36:50 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = (int)1e6 + 12, MOD = (int)1e9 + 7;
int n, a[N];
map<vector<int>, int> dp[N];
bool check(int l, int r) {
if(l + 1 == r) {
if(abs(a[r] - a[l]) == 1 || abs(a[r] - a[l]) == 3) return true;
return false;
}
vector<int> f;
for(int i = l; i <= r; i++) {
f.push_back(a[i]);
}
sort(f.begin(), f.end());
if(f[1] - f[0] == 1 && f[3] - f[2] == 1 && f[2] - f[1] == 2) {
return true;
}
return false;
}
bool ok(vector<int> f) {
sort(f.begin(), f.end());
if((int)f.size() == 2) {
return (f[1] - f[0] == 1 || f[1] - f[0] == 3);
}
if(f[1] - f[0] == 1 && f[3] - f[2] == 1 && f[2] - f[1] == 2) {
return true;
}
return false;
}
void add(int &x, int y) {
x += y;
if(x >= MOD) x -= MOD;
}
void test() {
string s;
cin >> s;
n = (int)s.size();
for(int i = 1; i <= n; i++) {
a[i] = (s[i - 1] - '0');
dp[i].clear();
}
dp[1][{a[1]}] = 1;
int res = 0;
for(int i = 2; i <= n; i++) {
for(auto [r, y]:dp[i - 1]) {
vector<int> v = r;
v.push_back(a[i]);
if(ok(v)) {
vector<int> tt;
for(int j = i - 1; j >= i - (int)v.size() + 1; j--) {
tt.push_back(a[j]);
}
reverse(tt.begin(), tt.end());
tt.push_back(a[i]);
if(tt == v) {
sort(tt.begin(), tt.end());
sort(v.begin(), v.end());
do{
int j = v.back();
v.pop_back();
add(dp[i][v], y);
v.push_back(j);
}while(next_permutation(v.begin(), v.end()));
} else {
reverse(v.begin(), v.end());
v.pop_back();
reverse(v.begin(), v.end());
add(dp[i][v], y);
}
} else {
reverse(v.begin(), v.end());
v.pop_back();
reverse(v.begin(), v.end());
add(dp[i][v], y);
}
}
}
// for(int i = 1; i <= n; i++) {
// cout << i << "A\n";
// for(auto [r, y]:dp[i]) {
// for(int j:r) {
// cout << j << ' ';
// }
// cout << "| " << y << '\n';
// }
// cout << '\n';
// }
for(auto [r, y]:dp[n]) {
if((int)r.size() == 3) continue;
add(res, y);
}
cout << res << '\n';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t = 1;
cin >> t;
while(t--)
test();
}
详细
Pretests
Final Tests
Test #1:
score: 0
Wrong Answer
time: 10ms
memory: 52432kb
input:
5 1478 4455 5968 31313211 123659874
output:
5 2 2 3 40
result:
wrong answer 3rd lines differ - expected: '24', found: '2'
Test #2:
score: 0
Wrong Answer
time: 8ms
memory: 50744kb
input:
1 5689152484578625359683652141745263254158478962534251632585963749647856412524517957586984215581247851
output:
210500968
result:
wrong answer 1st lines differ - expected: '972152931', found: '210500968'
Test #3:
score: 0
Wrong Answer
time: 8ms
memory: 51884kb
input:
1 5632457812563254176895625326926357123526235625784965815246985475849652371536295688574785693152469589
output:
726707247
result:
wrong answer 1st lines differ - expected: '938269333', found: '726707247'
Test #4:
score: 0
Wrong Answer
time: 3ms
memory: 50912kb
input:
1 7366565897458963524563258478595681542364652847587698562145851352635236517845214581542458714721865325
output:
39827079
result:
wrong answer 1st lines differ - expected: '201642487', found: '39827079'
Test #5:
score: 0
Wrong Answer
time: 4ms
memory: 52352kb
input:
1 5236958653215326425168596251474687896352653296858596754887774854651422536485695232652638987418236585474563526598215453622921453524154962387213256984574875375484786959865457856598657412548755658745784985745912678124586915421544652352147584578452547851245895623547825412458547154258798754413256458742...
output:
98681063
result:
wrong answer 1st lines differ - expected: '916143108', found: '98681063'
Test #6:
score: 0
Wrong Answer
time: 4ms
memory: 50896kb
input:
1 3256528529895689542515668598475854213256125487325642513265213562568972536784548578426539586635236542164215322856326523641525847632598614564758742157484512857512412514574875632784531245856236254356245986895689478523459865323694756252164578824514424156386958742542165239889253625489563562967862358786...
output:
747465632
result:
wrong answer 1st lines differ - expected: '533086196', found: '747465632'
Test #7:
score: 0
Wrong Answer
time: 8ms
memory: 52824kb
input:
1 2356235623562356235623562356235623562356235623562356235623562356235623562356233154215421542154215421542154215421542154215421542154215421542154215421542154215421542154215421542154652365236585748574857485748574857485748574857485748574857485748574857485748574857485748574857485748574857485748574857485...
output:
853840524
result:
wrong answer 1st lines differ - expected: '184251256', found: '853840524'
Test #8:
score: 0
Wrong Answer
time: 7ms
memory: 52756kb
input:
1 2365662356796882362574578658545879652345148755968687415215478124512885742365865952365981298574521659562398562353263832478547865978453257652367485782653458974521456987987452632512456143254145875623425195865326584785986854768915249263542147856941612536441536289562316542151962536315242514362525835784...
output:
907008955
result:
wrong answer 1st lines differ - expected: '834451116', found: '907008955'
Test #9:
score: 0
Wrong Answer
time: 6ms
memory: 53440kb
input:
1 6985749568596547898968574578358368754578356295685241432651422541263589615249145865325835264512547658998475265379647858474589478475845632874592541298651524695845652547826534875478823657851785454785796586914632578124574652345874736184756356899856412569869568769585961524859584721222658747412356758432...
output:
518064858
result:
wrong answer 1st lines differ - expected: '733198963', found: '518064858'
Test #10:
score: 0
Wrong Answer
time: 11ms
memory: 52512kb
input:
1 8548754875487563526352635263526352635263526352635263526352635263526352635247888457845784578457845784578457845784578457845784578457845784856985698569856985698569856985692159865986598659865986598659865986598659865986598659821498569856985698569856985698569856985698569856985765896589658965896589658965...
output:
624606222
result:
wrong answer 1st lines differ - expected: '114987343', found: '624606222'
Test #11:
score: 0
Wrong Answer
time: 28ms
memory: 70680kb
input:
1 4521369857474581865963251879875478458563524598689658623541256245125236574236589652154216895235869235124754875986588251456983256374585578478685945876523625921587498654487581425964769625655893562472536279685412514896545215638352684572385963478574452634421537584658954567548326589615245865945596958616...
output:
810014935
result:
wrong answer 1st lines differ - expected: '569583013', found: '810014935'
Test #12:
score: 0
Wrong Answer
time: 4ms
memory: 51996kb
input:
10 15823565 45362152 15758472 65245788 87584541 78454439 36527845 32598698 41252659 41684575
output:
12 16 4 12 20 12 20 18 16 4
result:
wrong answer 1st lines differ - expected: '52', found: '12'
Test #13:
score: 0
Wrong Answer
time: 34ms
memory: 70220kb
input:
1 5784575477823241589251425689523674152584128965912784574581254253653287541287785421523514255986745821171288659586935263475842154124152356285748541257841255487215459869265356954526958632145528751246895781659894598645125419874536274585236895214512471528596548765612454625326487549568553625145787488569...
output:
694781860
result:
wrong answer 1st lines differ - expected: '520298668', found: '694781860'
Test #14:
score: 0
Wrong Answer
time: 31ms
memory: 70724kb
input:
1 6652365236523652365236523626325632563256325632563256325632563256325636917499958695869586958695869586958695869586958695869586958695863256325632563256325632563256325632563256325632563256325632563256325632563256325632563256325632563255412541254125412541254125412541298569856985698569856985698569856985...
output:
933311582
result:
wrong answer 1st lines differ - expected: '940331227', found: '933311582'
Test #15:
score: 0
Wrong Answer
time: 3ms
memory: 51108kb
input:
10 41452444 25364521 47856325 89421535 21547582 47986587 22563698 25966932 14527854 11487596
output:
8 20 34 4 12 20 21 16 25 8
result:
wrong answer 1st lines differ - expected: '27', found: '8'
Test #16:
score: 4.7619
Accepted
time: 30ms
memory: 66988kb
input:
1 2211333133211122313223132213112231211222221132113311111231323123132311222112322232221122123231313323111313123221322212322213331313212121313323211232332212322313333112312111223212113323311231123131213221313221221113233313233133123323312323221131213132132213133121123213311222211212311313122221211321...
output:
82299876
result:
ok single line: '82299876'
Test #17:
score: 4.7619
Accepted
time: 33ms
memory: 68856kb
input:
1 2321322112321131132132121322323222222122321332313131112312321332333321213233132112213231122123133212312123133332133331222333111323321223121231132313311333223133122333332123331332321232121233322323312233233121223311112221221111212231312131211332113222113223122333122113111331133231232223233213322331...
output:
497823104
result:
ok single line: '497823104'
Test #18:
score: 0
Wrong Answer
time: 24ms
memory: 68280kb
input:
1 9632498212241749941489839189269743221216342632367493649143671626418787483678926947278792496247214983923223896894694699987874416728994778938714239638983693297146337714232682323844896362197912892363869218689211289276783161646912361231238498781692119963281472967832378421323968417227422149398296932121...
output:
471874763
result:
wrong answer 1st lines differ - expected: '109660966', found: '471874763'
Test #19:
score: 0
Wrong Answer
time: 27ms
memory: 68196kb
input:
1 2121273223647696914414786691247434838489899122899463321247246416183936189698824712472132986368798712327868963749932926143278333986912696484723696871217847788932863347411969632984636669861489636696662113468969232899837614163621891439749744783329869129476787847268368764132374139664198796313288212432...
output:
552250547
result:
wrong answer 1st lines differ - expected: '40100194', found: '552250547'
Test #20:
score: 0
Wrong Answer
time: 23ms
memory: 69720kb
input:
1 5598585586569568598658986956996589695869958586959869895685965856958698598658568956869588965695868586958656989596865998656598658968598696858969856956558698655859688969995869958695689556658958965569586896985659685899988569865598659885659866958956899859895685689565885698965986986565988596698589965856...
output:
371709426
result:
wrong answer 1st lines differ - expected: '602457661', found: '371709426'
Test #21:
score: 0
Wrong Answer
time: 47ms
memory: 73700kb
input:
1 5698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856985698569856...
output:
967618232
result:
wrong answer 1st lines differ - expected: '759378925', found: '967618232'