QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#363890 | #6562. First Last | fryan | AC ✓ | 39ms | 3908kb | C++14 | 2.7kb | 2024-03-24 04:55:34 | 2024-03-24 04:55:36 |
Judging History
answer
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cstdio>
#include <deque>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <memory>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <tuple>
using namespace std;
#define int long long
#define P pair
#define pi P<int,int>
#define ff first
#define ss second
#define mp make_pair
#define all(x) begin(x), end(x)
#define sz(x) (int) (x).size()
#define V vector
#define vi V<int>
#define v2i V<vi>
#define v3i V<v2i>
#define vpi V<pi>
#define vb V<bool>
#define v2b V<vb>
#define pb push_back
#define S set
#define si S<int>
#define ins insert
#define era erase
#define M map
#define mii M<int,int>
#define Q queue
#define PQ priority_queue
const int MOD=1e9+7;
const int p1 = 31;
const int p2 = 37;
const int INF=1e18;
int smax(int& a, int b) {return a = max(a,b);}
int smin(int& a, int b) {return a = min(a,b);}
long long binpow(long long a, long long b, long long m = MOD) {
a %= m;
long long res = 1;
while (b > 0) {
if (b & 1)
res = res * a % m;
a = a * a % m;
b >>= 1;
}
return res;
}
int n;
const int L = 26;
int adj[L][L] = {0};
M<P<pi, int>,int> val;
V<string> word;
P<pi, int> h(int (&a)[L][L], int pos) {
int h1 = 0;
int h2 = 0;
for (int i = 0; i < L; i++) {
for (int j = 0; j < L; j++) {
h1 += (binpow(p1,i*L+j) * (a[i][j]+1))%MOD;
h1 %= MOD;
h2 += (binpow(p2,i*L+j) * (a[i][j]+1))%MOD;
h2 %= MOD;
}
}
return mp(mp(h1, h2), pos);
}
int dfs(int (&a)[L][L], int pos) {
P<pi, int> av = h(a, pos);
if (val.count(av)) {return val[av];}
for (int nxt = 0; nxt < L; nxt++) {
if (a[pos][nxt]) {
a[pos][nxt]--;
int v1 = dfs(a, nxt);
a[pos][nxt]++;
if (v1 == 0) {
val[av] = 1;
return 1;
}
}
}
return 0;
}
signed main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n;
for (int i = 0; i < n; i++) {
string s; cin >> s;
word.pb(s);
adj[s[0]-'a'][s[sz(s)-1]-'a']++;
}
for (int i = 0; i < L; i++) {
adj[i][i] %= 2;
for (int j = i+1; j < L; j++) {
if (adj[i][j] && adj[j][i]) {
int sub = min(adj[i][j], adj[j][i]);
adj[i][j] -= sub;
adj[j][i] -= sub;
}
}
}
int ans = 0;
for (string s : word) {
int s1 = s[0] - 'a';
int s2 = s[sz(s)-1] - 'a';
if (adj[s1][s2]) {
adj[s1][s2]--;
ans += dfs(adj, s2);
adj[s1][s2]++;
} else {
adj[s2][s1]++;
ans += dfs(adj, s2);
adj[s2][s1]--;
}
}
cout << n - ans;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3584kb
input:
3 attic climb alpha
output:
2
result:
ok single line: '2'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3644kb
input:
22 agora alpha antic aorta apnea arena aroma attic basic blurb china circa civic climb cobra cocoa comic comma conic crumb cubic cynic
output:
6
result:
ok single line: '6'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3576kb
input:
3 ccabaabbba acbbbacccb ccccccacba
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 2ms
memory: 3640kb
input:
11 mraa myga vtwm mala vvgm atvv vusm mznv avea atfv amgv
output:
7
result:
ok single line: '7'
Test #5:
score: 0
Accepted
time: 39ms
memory: 3716kb
input:
1000 vznwivhoprv pvzcjyruxv phykv vozinczup vbp vgjxfotuhzhobfp pbv vygphslv vpnqrfep vzrphpfggoqcgv vgdjmzuckyedpnp vatmaxfp ppnmmwtqmv paawwp pspoycv vcjthv ppcvagp pteiqdonkklp vav vcsxv priqwbalidav vinp phqeijnqkgbxv pwvmbivmgvouv vwzhndzmqpcwkmp pyzlv vtvblfov vrdv vzrfmjdnaruwp pfup pwzv vwyv...
output:
478
result:
ok single line: '478'
Test #6:
score: 0
Accepted
time: 31ms
memory: 3712kb
input:
1000 rlp pgscawiivpjndlp pxr ruzutr pqdhfniemqvvr rvar rp prarwp pkuinxempbmear rupxuanwlvawmr pp rzfvr rcsxoyirp pgpilljr pogeizvqlr rajolbgzswur rcap ryzqymwr rrpp rbxtr rfldblbesyhqr rjidcekyrir pqrycftr rftwgmmakykkmep pehkxkayuip pguxsgtuikvp rtxmynvoolrp pzmsljlpcr phcfdr plaop rydojaccp pzfr ...
output:
246
result:
ok single line: '246'
Test #7:
score: 0
Accepted
time: 37ms
memory: 3748kb
input:
1000 ffn fgikjn fwtakdbjn fsjnfzzn feqmuasubirsf faypin fcsdhfjvncfzsn nbcmvxemkan ngoqtaaon nlovkxxrbn fhdqkltoxvif fxpnqbguftsrhff fyniukvsmlf fibwbqckjpojglf nwcvf fxgeivnakggcn nn fkghlusecf neuwdafrkzptwf fcxn ff nlkxtn fdlsijtpbcjjcbn frlcjjnpsn ntyabhf nvf fdlmlhebidazhn fjn fstxgnmfof fqhusf...
output:
496
result:
ok single line: '496'
Test #8:
score: 0
Accepted
time: 3ms
memory: 3576kb
input:
15 adb bdc cda aeb bec cea afb bfc cfa agb bgc cga ahb bhc cha
output:
15
result:
ok single line: '15'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
1 alpha
output:
1
result:
ok single line: '1'
Test #10:
score: 0
Accepted
time: 1ms
memory: 3564kb
input:
3 alpha beta gamma
output:
1
result:
ok single line: '1'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3576kb
input:
2 alpha beta
output:
1
result:
ok single line: '1'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
20 ccbccaabaa aaccbbbbab bcbcbccabc bbbabcbbcc ccaaccabca acabbbccab baacbcbccc bcbbabbbbc bccbbbbabc bacaccbcac cbbabbbaca ccaaacbaaa acbbbaccab bcaacaaacc aabbaabcbb bbbabbbbcc aabcaaabcb aabbbaaacb acacaababb abacccccbb
output:
8
result:
ok single line: '8'
Test #13:
score: 0
Accepted
time: 3ms
memory: 3588kb
input:
20 acccccbcbb bccbccaaac aabbcbbccb ababcabccb abcaabbcab ccabbabcca bbccaaacbc bbabacbccc babacbaacc bcabaacbac acbabaabbb caaccbacaa bccccbcbcc abbbbbbcbb bbcbaabaac abccaabccb cacacaccca bcbbcbcacc bcccaabcbc cabaaaccca
output:
9
result:
ok single line: '9'
Test #14:
score: 0
Accepted
time: 3ms
memory: 3844kb
input:
20 bcbbbababc baccababbc bcccbaacbc ccccacbaca aaaaccabbb cbbbacbaaa aaabbaabcb aacccbbacb bcbccbcacc caabacbcba bcbcbbcbbc cacccabcaa abbababacb aacaabbccb abbcacaccb caaccaacca bcbacacaac baccbcccbc abbcaccabb acbacccccb
output:
13
result:
ok single line: '13'
Test #15:
score: 0
Accepted
time: 3ms
memory: 3648kb
input:
20 babccbbbbc accacaabcb acacabaabb bacbccacac cacacaacaa cacaaaaaca bccbccacac acbaccabbb ccbacaccba acbaaababb ccacabcaaa bbabbcabcc bacbccccac bcacaacacc ccabcbbbaa aaababbbab bbbbbabbac abbcaabbbb bababbabac aaabcbbacb
output:
12
result:
ok single line: '12'
Test #16:
score: 0
Accepted
time: 3ms
memory: 3884kb
input:
20 aacbaacccb cbcbcacaaa cacbacbaca aabacccacb bbbcbacbcc cababcacaa bbcaaacbbc ccccacaaca cabcbcccaa bbcbccabbc ccababccca aaacbaabbb baacabacbc accbbcbbab cccbccabba cbccaaaaca cbcabaccca caaacbccca acaaabccab bbbaaabbac
output:
10
result:
ok single line: '10'
Test #17:
score: 0
Accepted
time: 3ms
memory: 3596kb
input:
20 aaacaacbcb cccccccaca abbabbcacb accaacbabb bacbaccbac cbcbbcccba bacbcabcac abaabcabab acaaacaaab bacbbaccac baababbbbc caaaaabaca abacaccacb abbbcbccbb cbcbcbbcaa cabbcaabba cbccbaccaa ccbbcabbaa ababababcb abcbcbcabb
output:
9
result:
ok single line: '9'
Test #18:
score: 0
Accepted
time: 3ms
memory: 3584kb
input:
20 bcaccbabbc caaaaccaca acbaacabab aaabbabbcb ccccaccaca bcacbaacbc cbccacabca ccbabbaaaa ababcbaaab caabacabca bbbcaabcac cccccababa aabbabcccb abaaaccbbb bcabaabbcc bcbbbaacac acaacbbccb bacabbabcc bbcbccbbac aacbabccbb
output:
7
result:
ok single line: '7'
Test #19:
score: 0
Accepted
time: 4ms
memory: 3840kb
input:
20 cbacccbaba caccbccaba abcaccacab cbcccabaca acccbccacb bccacbbabc bbacabacac abbcccbbab acaaaabbcb cbbbaabaca babbbccacc bbabccbcbc cabaababaa caacbabcba aaaaaacccb ccaaacacaa baccaabcac aaaacbcbab baacaaaabc ccabcacaba
output:
8
result:
ok single line: '8'
Test #20:
score: 0
Accepted
time: 3ms
memory: 3644kb
input:
20 bbaccaccbc cabcccabba bcabbbbaac caaacccaca cabccbabaa abccaaacab ababbccabb acccaaabab bababbcacc acabbacacb accccbcaab cabaaccbca cccacbbcca acabbaccab baacccacbc bacacabbcc aabaaaacab cbbabcccba aaaacbaccb cccbaaaaca
output:
12
result:
ok single line: '12'
Test #21:
score: 0
Accepted
time: 3ms
memory: 3680kb
input:
20 aabacacacb abaccaccbb acaccccbcb cbacbcccca cccccabbaa bbbcbabccc cabbccccba babcbcabac baccbaacbc ccbbccbbba aacaabbbab bccaccacac abbcacaccb cbcaabacba babbcbaacc ccabbbbbaa cbcbbbaaba bcaabcbaac bcbbbcbbbc babccbbbac
output:
13
result:
ok single line: '13'
Test #22:
score: 0
Accepted
time: 1ms
memory: 3648kb
input:
17 hydrogen nitrogen helium neon magnesium niobium molybdenum newdymnium holmium hafnium neptunium mendelevium nobelium hassium meitnerium nihonium moscovium
output:
6
result:
ok single line: '6'
Test #23:
score: 0
Accepted
time: 1ms
memory: 3848kb
input:
10 cbabbbcabb bacbacbcba bcacacacba bbabbbbbac acaccccbac bbbbababca bacabccaac aacbcaabcb bacbabaaaa acabcabccb
output:
3
result:
ok single line: '3'
Test #24:
score: 0
Accepted
time: 5ms
memory: 3692kb
input:
100 ccbcaccbab bbcbcbbbca acbbbbbcbb bacabcbcba aaaabcbaac babaaabbba bbbabbbabc bccaaacbac acacaccbaa acbacbcaac baccabcccb bbabcccbca acbabaaaac bcbbcabacc ccbbacbcbc aaaabcbcaa aacbbbaaaa bbabbcacac baabacbbcc abaccbabab abcbbabacb cbbbaccbcb bbabbcabca bcbaacacaa aabccaacca bcabaaacca acbcbacbbc...
output:
32
result:
ok single line: '32'
Test #25:
score: 0
Accepted
time: 31ms
memory: 3908kb
input:
1000 pfalakkgegzhogw wkkuxghywruwxfe wyejymxprfudmww pzfhykyprexdzjp euglzawfswzsicw wukfsntcitmqqsp ptedktsjhdybegp woiewjinnixhftw pwysrvatyqcgxcp pyslupqwmpqluzw ezwtyuflrtgjdle pyecuqzysscnqvp pualunhhvihcohe eemgrxaolvkxmup egvaujnrfthojvw ekfhcvufcqcrhcw ecqzrgboomfjcve whxlumclfpgcanw pfoxyrw...
output:
225
result:
ok single line: '225'
Test #26:
score: 0
Accepted
time: 2ms
memory: 3536kb
input:
30 rfiuianksyzpkqz zkntbrwccnjcnzh hvyhatniqoeptvh zzwxgtvocagvdlz hkvtotqsilzpexr rmqjlxhiyuvtwrh ziynrswzgzpnfnz rntoducfmkqpaoz rgzweicxeqajpzr zjznfxgpfgshkbr rmtmhwrzkenopsz hyodaehasivoabz hkgxlvuxonzlvgr hcjelcmekbohgxr zkdlkppyvchvimh rehlcscmhbnjexr rhhhexryikreroz htuwcazhktbrvqr hvnicynkr...
output:
11
result:
ok single line: '11'
Test #27:
score: 0
Accepted
time: 25ms
memory: 3872kb
input:
300 bzpjihkgvkrwzav bssiintigbaccyv asuzprjzymuwkfv blajmgohbmihtwb bwocwcqekqwuwab azkbjbrjdnwgzhb aqdgacdlcofzjzb vvqgvpdtsphhqbb vafommzgswakrub bizlmhzwvokxezb btwrjkdkxiaciaa bgyfvakbcgcaima vtkthaktjltsvtv vmyxovrkpphmnna bgwhfiinpdjigza vaghbpbabwfsnub atztqndgqetgbzv agtepkzcnnrlfzb ayktyzbv...
output:
196
result:
ok single line: '196'
Test #28:
score: 0
Accepted
time: 31ms
memory: 3904kb
input:
1000 drucrd dwbdnwzffwd dkcoffhuvxgzd dtd dbud dhdjamctkfkufpd dpolagked dqpyleydrcbjd diunguld dbpxmzd dd dllmgjsd dnncoucapnojd dbydsqd did dgjd dmd dkzkjmdkd derbbcjvtgxbgd dbpznlrtud dxrdhad dqhyxdd dgqd dawzjid domzfuycd dlyed dkunoduhamd dlpwoaqgjuwazd dcd dxnvgrvxnd drxptrhxd duqwvybjgahd djh...
output:
0
result:
ok single line: '0'
Test #29:
score: 0
Accepted
time: 3ms
memory: 3820kb
input:
18 aab bac caa abb bbc cba acb bcc cca adb bdc cda aeb bec cea afb bfc cfa
output:
0
result:
ok single line: '0'
Test #30:
score: 0
Accepted
time: 32ms
memory: 3876kb
input:
1000 qqaligwjiggjcq iagxuiizhglmi xuikcxsrirevfi qgcyddrpx iriauckx xaq iczi xqhfnkhgx ihjmwpzmaplimcq qxhadplhx qylxcygq xi xansoq injixpfhfasvbq qiwgbci xjgmxhtxvdq iihmigcihi iedrdwzgq iyi xhqlttzyni qcx irbnlx qmcxdihujwlai iqaq qyhquti qcqzoifzglwxzdq ikjajeafi ifgydi xembxgcluzqq qyesjwiix qkx...
output:
242
result:
ok single line: '242'
Test #31:
score: 0
Accepted
time: 6ms
memory: 3888kb
input:
100 yhothsuntodvjbp yovbflgbufdystp plxhiphtvtvccxn yteszfwnocvquep yimksvuvxrmquyn yzxolkjfnwdwcop yvnzximnjfteqap padrxvamipryowy pxgkjkpddfbrarn ykqtkdxxwzknrvp pxewmovejzktyzn pnnjanibbinhwzn ylzdwvrozhyyyen yfyfqvvuycfaxpp nechefkhfvumkry yvtzpokomrtusyn pwpbgmtkpcnhmtn niyymfgohdgdhuy yedcxgnr...
output:
67
result:
ok single line: '67'
Test #32:
score: 0
Accepted
time: 31ms
memory: 3660kb
input:
1000 yaswiedrkfymnzk kzcaleacmpuazhv kfefxdppxusoqxv vifosydgwnqpssk ymtrrddmufmncfv vrupdvcsmepqtwk vjuvfllbidvbcqy veldskdioyyzock kdmjepctwkiixrv ypicbokwooycocv ybbsmccvqynbvwk yzgsbzbhteyajfk yyynqadclcjkcvv kmwrrremazrcdyv yfuauavqsoxnknv yizrfjukexccyvk yuodugxjnuymgwv vvdbmcmdcejdjhk vsesegg...
output:
360
result:
ok single line: '360'
Test #33:
score: 0
Accepted
time: 2ms
memory: 3680kb
input:
30 nduqkltyrjchrir npqnyjhvtczrxhk rvkhqwigvnjasln nqxnnyxpmhbzhrr kcrjplhrdkyyvpn nuxuodpvfvyovsk nzcbwoxvmuajnuk rcrqzqtykuzgiek rvzjffzzwapzvck rgntauijiodjcwn nqntaykdmrpiojr kmbynsfeerniqpr rszawhpanrairqk nhjsfdswnnaqumr kijysjjlrbwigin njebshbbcadcbwk ncwluvybyxhbuvr rlxuzfjuxgziehk rcbtttxlq...
output:
11
result:
ok single line: '11'
Test #34:
score: 0
Accepted
time: 7ms
memory: 3668kb
input:
300 ldqparrlixcrfhn lslzwfkysvvvaqt lklydecymfdsymn nxxolcshfdiofxt lkwqujbckqmigin nfqvomhsapqexsl njnqzhjetlnecwt twgomlfjreikycl lujnrxtaognjjbn lciyasqkkkcgrln ncwhdddgamnbgft naprkvnqkxqjdjl ttltucizicrybgl trdnzylpxeujmql nmyusbfdjyaoaft lsdwoewrtnrxhkn nfapnyvwftbnwyl lvahwwkijbffrxn tzmuasjd...
output:
107
result:
ok single line: '107'