QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#836694 | #9922. Mah-jong | ucup-team3099# | AC ✓ | 1715ms | 457176kb | C++20 | 4.9kb | 2024-12-29 03:54:27 | 2024-12-29 03:54:27 |
Judging History
answer
#ifdef LOCAL
#define _GLIBCXX_DEBUG 1
#define dbg(...) cerr << "LINE(" << __LINE__ << ") -> [" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#else
#define dbg(...) 0
#endif
#if 0
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
template<class T>
using ordered_set = __gnu_pbds::tree<T, __gnu_pbds::null_type, std::less<T>, __gnu_pbds::rb_tree_tag,
__gnu_pbds::tree_order_statistics_node_update>;
#endif
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <random>
#include <chrono>
#include <cassert>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define each(a,x) for (auto& a: x)
#define tcT template<class T
#define tcTU tcT, class U
#define tcTUU tcT, class ...U
template<class T> using V = vector<T>;
template<class T, size_t SZ> using AR = array<T,SZ>;
typedef string str;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
template<typename T, typename U> T &ctmax(T &x, const U &y){ return x = max<T>(x, y); }
template<typename T, typename U> T &ctmin(T &x, const U &y){ return x = min<T>(x, y); }
mt19937 rng((unsigned)chrono::steady_clock::now().time_since_epoch().count());
#define ts to_string
str ts(char c) { return str(1,c); }
str ts(bool b) { return b ? "true" : "false"; }
str ts(const char* s) { return (str)s; }
str ts(str s) { return s; }
str ts(vector<bool> v) { str res = "{"; F0R(i,sz(v)) res += char('0'+v[i]); res += "}"; return res; }
template<size_t SZ> str ts(bitset<SZ> b) { str res = ""; F0R(i,SZ) res += char('0'+b[i]); return res; }
template<class A, class B> str ts(pair<A,B> p);
template<class T> str ts(T v) { bool fst = 1; str res = "{"; for (const auto& x: v) {if (!fst) res += ", "; fst = 0; res += ts(x);} res += "}"; return res;}
template<class A, class B> str ts(pair<A,B> p) {return "("+ts(p.first)+", "+ts(p.second)+")"; }
template<class A> void pr(A x) { cout << ts(x); }
template<class H, class... T> void pr(const H& h, const T&... t) { pr(h); pr(t...); }
void ps() { pr("\n"); }
template<class H, class... T> void ps(const H& h, const T&... t) { pr(h); if (sizeof...(t)) pr(" "); ps(t...); }
void DBG() { cerr << "]" << endl; }
template<class H, class... T> void DBG(H h, T... t) {cerr << ts(h); if (sizeof...(t)) cerr << ", "; DBG(t...); }
tcTU> void re(pair<T,U>& p);
tcT> void re(V<T>& v);
tcT, size_t SZ> void re(AR<T,SZ>& a);
tcT> void re(T& x) { cin >> x; }
void re(double& d) { str t; re(t); d = stod(t); }
void re(long double& d) { str t; re(t); d = stold(t); }
tcTUU> void re(T& t, U&... u) { re(t); re(u...); }
tcTU> void re(pair<T,U>& p) { re(p.first,p.second); }
tcT> void re(V<T>& x) { each(a,x) re(a); }
tcT, size_t SZ> void re(AR<T,SZ>& x) { each(a,x) re(a); }
tcT> void rv(int n, V<T>& x) { x.rsz(n); re(x); }
constexpr bool multitest() {return 1;}
void solve();
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int t = 1;
if (multitest()) cin >> t;
for (; t; t--) solve();
}
int t[8];
int cur[8];
vector<vi> la(8);
vector<vi> qry;
ll ans;
void bt(int idx, int cur) {
if (idx == 6) {
int min_idx = cur;
for (int i = 0; i < 8; i++) if (t[i]) {
if (sz(la[i]) < t[i]) return;
ctmin(min_idx, la[i][sz(la[i]) - t[i]]);
}
int val = 0;
for (int i = 0; i < 8; i++) {
val *= 3;
val += (sz(la[i])-t[i])%3;
}
//dbg(cur, min_idx, val);
qry[min_idx].push_back(val);
return;
}
bt(idx+1,cur);
for (int c = 0; c < 2; c++) {
for (int i = idx; i <= idx+2; i++) t[i]++;
bt(idx+1,cur);
}
for (int i = idx; i <= idx+2; i++) t[i]-=2;
}
vi tots(6561);
void solve() {
int n; re(n);
vi a(n); re(a);
for (int i = 0; i < n; i++) a[i]--;
qry.resize(n);
for (int i = 0; i < n; i++) qry[i].clear();
for (int i = 0; i < 8; i++) la[i].clear();
memset(cur,0,sizeof(cur));
ans = 0;
for (int i = 0; i < n; i++) {
la[a[i]].push_back(i);
cur[a[i]]++;
bt(0, i);
}
vi cnts(8);
fill(all(tots),0);
tots[0]++;
for (int i = 0; i < n; i++) {
for (int x : qry[i]) {
if (tots[x]) dbg(i, x, tots[x]);
ans += tots[x];
}
cnts[a[i]]++;
int val = 0;
for (int i = 0; i < 8; i++) {
val *= 3;
val += cnts[i] % 3;
}
tots[val]++;
}
ps(ans);
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3868kb
input:
5 4 1 1 1 1 6 1 2 3 1 2 3 7 6 5 8 7 6 3 2 8 1 2 1 2 1 2 1 3 9 2 2 4 4 1 1 1 3 3
output:
2 5 1 3 2
result:
ok 5 number(s): "2 5 1 3 2"
Test #2:
score: 0
Accepted
time: 1616ms
memory: 38404kb
input:
100 992 8 1 8 1 2 3 6 6 1 3 1 8 7 7 4 7 7 1 6 6 4 8 3 7 3 5 1 4 4 7 5 7 5 7 4 3 7 5 2 8 7 1 6 3 6 2 4 3 2 3 1 6 3 1 3 2 6 6 7 4 6 1 1 4 6 4 7 7 8 5 6 4 1 5 4 8 2 4 4 2 1 3 5 7 6 8 3 7 6 6 5 6 4 2 5 4 3 7 3 5 5 3 3 2 7 8 2 7 2 4 4 3 4 1 1 3 5 5 4 6 3 3 3 2 6 1 2 6 4 8 8 6 6 8 7 3 1 1 8 8 7 2 5 6 3 5 ...
output:
51699 61486 5146 1960 241675 6274 11224 46170 435241 1219228 17198 139542 299436 960439 217729 1174 87401 141087 69813 1 78895 0 39510 16757 86551 0 100302 161956 3 512157 58619 196941 26116 61635 28879 11511 2061 4394 74620 907389 172780 23952 524 87857 1305332 1413 11784 156368 11746 23217 25189 9...
result:
ok 100 numbers
Test #3:
score: 0
Accepted
time: 1702ms
memory: 372552kb
input:
1 100000 7 6 3 7 1 2 5 2 4 5 3 2 6 2 2 2 5 6 5 8 6 2 1 8 2 2 1 1 4 8 2 6 4 1 8 6 6 7 8 4 4 5 4 7 8 6 2 3 3 7 5 7 1 1 3 5 2 8 5 6 3 6 2 3 3 8 4 5 7 8 1 5 6 1 3 4 5 7 1 5 4 4 4 6 6 4 2 3 5 2 7 3 5 8 7 1 5 4 5 4 1 5 8 7 2 2 8 2 4 3 5 7 6 6 1 6 6 3 1 1 3 1 7 8 1 7 3 7 8 3 6 3 5 7 5 1 8 7 4 7 5 4 8 1 3 4...
output:
555222305
result:
ok 1 number(s): "555222305"
Test #4:
score: 0
Accepted
time: 1470ms
memory: 96084kb
input:
20 4413 3 6 4 7 7 2 2 7 8 8 4 1 8 6 6 4 7 3 4 3 2 4 2 3 8 2 2 8 4 2 2 8 6 3 3 6 2 3 3 1 7 3 4 2 8 6 3 2 7 6 2 1 5 7 6 8 4 2 1 8 5 4 1 1 2 4 7 4 5 8 2 1 7 1 1 2 2 2 4 6 7 5 4 7 2 6 7 4 8 6 5 8 8 1 5 1 7 8 1 2 2 8 5 1 8 2 4 2 6 1 3 2 1 7 4 4 7 8 5 8 7 4 6 7 4 1 7 8 6 8 7 7 8 4 6 8 3 6 4 8 2 3 7 5 4 4 ...
output:
1069083 436006 1777187 5525353 859904 20447 1921397 11322 113761 632458 911481 140310 5527193 391225 3870234 1392311 5521780 767038 377958 251269
result:
ok 20 numbers
Test #5:
score: 0
Accepted
time: 1703ms
memory: 154932kb
input:
10 1631 1 5 6 3 1 3 3 1 7 3 2 2 1 2 3 4 6 3 7 4 4 2 5 1 3 1 8 6 8 6 6 4 3 3 3 5 1 5 4 3 2 6 5 7 4 4 3 2 6 7 3 7 6 6 1 7 4 3 2 4 5 2 3 6 8 6 7 1 4 5 4 5 1 7 6 5 2 2 3 8 1 1 6 3 3 8 5 6 8 2 3 2 4 4 6 1 1 7 2 6 3 1 4 1 2 5 7 4 4 6 3 8 8 8 1 1 3 8 8 6 7 6 3 2 8 2 1 6 5 5 4 4 5 3 2 5 7 8 7 5 8 8 1 2 1 4 ...
output:
142582 130392 26184001 1706964 29530837 7819026 1889862 2047254 4622629 9958898
result:
ok 10 numbers
Test #6:
score: 0
Accepted
time: 540ms
memory: 4736kb
input:
100 699 3 5 4 4 2 2 2 4 4 5 4 4 4 2 3 5 4 3 3 4 2 4 5 1 2 2 1 3 4 2 3 5 2 4 4 4 4 4 2 2 2 3 2 4 4 3 5 1 1 1 1 1 5 3 2 2 2 4 1 2 4 5 4 3 4 4 3 1 2 1 2 2 5 2 4 2 3 2 3 1 2 3 1 3 1 4 1 1 2 3 4 4 4 5 5 1 1 1 4 2 4 5 2 4 4 2 2 1 4 3 2 4 2 1 3 3 1 1 1 2 3 2 3 3 4 5 3 1 4 3 2 3 4 1 2 3 1 5 4 1 3 1 4 1 1 4 ...
output:
26614 93607 15542 185945 9610 336083 27587 5973 15452 428708 697 64714 259 21 828 113476 31140 105458 80 23536 5525 1159 12042 40221 3480 19417 67593 2269 413557 158230 35791 252920 14694 17018 49089 181 5249 132040 80726 799827 70851 176451 195473 5082 17942 474031 966 2197 7165 361668 165329 13748...
result:
ok 100 numbers
Test #7:
score: 0
Accepted
time: 541ms
memory: 8072kb
input:
20 6438 6 4 6 2 2 3 6 3 3 6 3 5 2 3 5 3 4 4 6 6 5 4 4 4 6 5 2 3 6 6 6 2 4 2 6 3 2 6 4 4 5 5 5 5 2 3 5 6 3 5 2 3 2 3 6 2 6 4 5 6 6 3 6 2 4 6 6 2 2 5 2 5 3 2 2 5 3 5 2 5 4 4 6 5 6 5 3 2 2 6 6 4 4 6 6 5 3 5 2 3 6 4 6 2 6 2 4 2 5 2 3 2 6 4 3 6 2 2 6 5 2 2 4 6 4 2 2 6 6 2 5 5 6 3 5 4 2 4 6 5 5 2 5 2 5 2 ...
output:
2295109 129235 937429 180801 809871 174359 1198354 743354 795518 130580 84599 3763780 1614768 2235523 4161333 5544144 349912 421552 4172118 5545527
result:
ok 20 numbers
Test #8:
score: 0
Accepted
time: 603ms
memory: 9308kb
input:
10 26316 4 3 2 6 6 5 6 4 2 6 3 6 3 6 6 4 5 2 6 5 4 4 5 4 5 3 3 4 3 6 3 2 2 2 2 2 4 2 5 3 5 4 3 6 5 5 2 4 4 4 3 5 3 3 3 5 3 5 3 4 3 6 6 3 2 4 5 4 4 3 3 6 5 6 2 2 2 3 6 2 3 2 3 2 4 5 3 5 3 2 6 2 2 2 6 4 6 6 4 6 6 6 5 2 4 6 3 5 2 3 4 3 5 5 3 3 5 2 2 4 6 2 5 6 4 6 3 5 3 3 3 2 2 3 4 5 2 5 2 2 5 5 3 3 2 5...
output:
38450451 2276831 7270246 704368 5850869 468608 9764821 13710579 4255399 96369
result:
ok 10 numbers
Test #9:
score: 0
Accepted
time: 493ms
memory: 23560kb
input:
1 100000 7 8 8 5 4 7 7 4 4 7 6 8 5 8 8 6 6 4 8 8 6 8 7 8 4 4 7 4 8 7 4 6 6 5 5 6 8 5 6 4 5 6 6 4 4 7 7 5 4 5 8 4 7 5 7 7 8 8 7 8 6 4 8 5 7 8 5 4 4 4 7 7 4 5 7 4 4 6 6 7 6 6 7 7 4 4 4 6 6 4 6 8 5 6 6 5 7 8 5 7 5 7 6 4 6 6 4 7 5 8 6 7 4 6 8 7 4 7 7 6 6 8 5 4 6 7 5 4 4 4 6 6 6 5 4 6 4 6 8 6 5 5 5 5 7 5...
output:
555459907
result:
ok 1 number(s): "555459907"
Test #10:
score: 0
Accepted
time: 514ms
memory: 4224kb
input:
100 1250 5 6 6 6 5 6 6 5 7 6 6 6 5 7 5 5 6 6 7 5 5 5 5 5 5 7 5 5 6 5 5 5 6 7 5 6 5 7 7 7 7 5 5 7 6 5 7 7 5 6 6 5 5 6 6 7 5 6 6 6 6 6 5 7 5 7 7 5 5 6 5 6 6 7 7 7 7 7 7 5 5 6 6 5 5 6 6 6 5 5 5 5 7 6 6 7 7 5 5 7 5 7 5 7 7 6 6 5 7 6 5 6 5 7 6 5 6 7 6 6 6 6 6 6 7 5 6 7 6 7 7 5 7 7 5 5 6 6 5 5 7 6 6 6 6 7...
output:
86841 34629 45 25861 17828 47611 4229 10999 3019 7915 174644 150587 1388747 931 8024 1143 15819 282708 204457 30072 5134 116143 519353 149357 40372 2405 259501 15816 5574 104552 24707 223938 415556 4003 3687 43 0 69380 19410 121396 5303 100311 811 18848 81468 2 5204 635 107048 152629 39533 13647 168...
result:
ok 100 numbers
Test #11:
score: 0
Accepted
time: 440ms
memory: 4212kb
input:
20 4135 6 8 6 7 7 7 7 8 7 6 6 8 6 7 8 7 7 8 7 8 7 8 6 6 7 8 7 8 6 8 6 6 6 7 7 6 6 8 6 6 8 7 7 8 6 7 8 7 8 6 6 6 8 8 7 7 8 6 6 6 7 7 7 7 7 8 7 6 7 6 7 6 8 8 6 7 6 8 7 6 7 6 6 7 7 6 8 7 8 7 6 7 8 7 6 8 6 6 8 6 6 6 7 6 8 8 8 6 7 7 6 8 7 6 7 8 8 6 8 6 6 8 7 6 6 7 6 8 7 8 6 8 7 6 6 8 6 6 6 8 6 6 8 7 7 8 ...
output:
950096 2194477 5554824 81254 5553178 1573274 194238 668 1982043 58228 1291767 5557012 58027 5225 1463164 4280005 609999 1655471 62184 2077822
result:
ok 20 numbers
Test #12:
score: 0
Accepted
time: 455ms
memory: 4808kb
input:
10 15064 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5...
output:
37818172 46634876 15400026 2035255 27812 69660 92555465 15265745 4010655 42669333
result:
ok 10 numbers
Test #13:
score: 0
Accepted
time: 470ms
memory: 9448kb
input:
1 100000 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8...
output:
1666650000
result:
ok 1 number(s): "1666650000"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3820kb
input:
4 1 5 2 5 6 3 7 6 5 3 7 7 7
output:
0 0 1 1
result:
ok 4 number(s): "0 0 1 1"
Test #15:
score: 0
Accepted
time: 473ms
memory: 9564kb
input:
1 100000 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5...
output:
1666650000
result:
ok 1 number(s): "1666650000"
Test #16:
score: 0
Accepted
time: 347ms
memory: 3936kb
input:
10 1686 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ...
output:
473485 16665000 16665000 2028272 16665000 16665000 16665000 1238058 9559650 11134350
result:
ok 10 numbers
Test #17:
score: 0
Accepted
time: 1715ms
memory: 457176kb
input:
1 100000 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3...
output:
885341676
result:
ok 1 number(s): "885341676"
Test #18:
score: 0
Accepted
time: 363ms
memory: 5616kb
input:
10 3465 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 ...
output:
1038578 2938 813044 30782 8661003 8661003 5290235 8661003 5108993 6641544
result:
ok 10 numbers
Extra Test:
score: 0
Extra Test Passed