Submission #1131444

#TimeUsernameProblemLanguageResultExecution timeMemory
1131444huutuanTricolor Lights (JOI24_tricolor)C++20
30 / 100
244 ms28428 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; namespace Anna{ mt19937 rng(69420); const int LEN=19; int n; string s; vector<string> v[3]{ {"BB", "GG", "RR"}, {"BG", "GR", "RB"}, {"BR", "RG", "GB"}, }; pair<string, int> solve(int _n, string _s){ n=_n, s=_s; if (n<LEN*2+1){ string ans; for (int i=0; i<n; ++i) if (s[i]=='B') ans.push_back('G'); else ans.push_back('B'); return {ans, n}; } string s2; while ((int)s2.size()<n/2){ s2.push_back(rng()%3+'0'); } string ans; for (int i=0; i<n/2; ++i){ int id=s2[i]-'0'; for (auto &t:v[id]){ if (t[0]!=s[i<<1] && t[1]!=s[i<<1|1]){ ans+=t; break; } } } if ((int)ans.size()!=n){ if (s.back()=='B') ans.push_back('G'); else ans.push_back('B'); } return {ans, LEN*2+1}; } } pair<string, int> anna(int N, string S) { return Anna::solve(N, S); }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; namespace Bruno{ mt19937 rng(69420); const int LEN=19; bool small; map<string, int> mp; int n; vector<string> v[3]{ {"BB", "GG", "RR"}, {"BG", "GR", "RB"}, {"BR", "RG", "GB"}, }; void init(int _n){ n=_n; string s2; while ((int)s2.size()<n/2){ s2.push_back(rng()%3+'0'); } for (int i=0; i+LEN<=(int)s2.size(); ++i){ mp[s2.substr(i, LEN)]=i<<1|1; } } int solve(string s){ string s1, s2; for (int i=0; i<LEN*2; i+=2){ for (int j=0; j<3; ++j) for (auto &k:v[j]) if (k[0]==s[i] && k[1]==s[i+1]){ s1.push_back(j+'0'); } } for (int i=1; i<LEN*2+1; i+=2){ for (int j=0; j<3; ++j) for (auto &k:v[j]) if (k[0]==s[i] && k[1]==s[i+1]){ s2.push_back(j+'0'); } } if (mp.count(s1)) return mp[s1]; return mp[s2]-1; } } void init(int N, int l) { if (N==l) Bruno::small=1; else Bruno::init(N); } int bruno(string u) { if (Bruno::small) return 1; return Bruno::solve(u); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...