QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#234671 | #3170. Lunchtime Name Recall | PhantomThreshold# | AC ✓ | 3032ms | 141268kb | C++20 | 1.8kb | 2023-11-01 20:39:39 | 2023-11-01 20:39:39 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[100];
int mxid=0;
map<vector<int>,int> id;
vector<int> lst[6050];
void prepare(int rest,int mn,vector<int> &v){
if (rest==0){
id[v]=++mxid;
lst[mxid]=v;
return;
}
for (int now=mn;now<=rest;now++){
v.push_back(now);
prepare(rest-now,now,v);
v.pop_back();
}
}
int ok[6005][6005];
void cut(const vector<int> &v,int dep,vector<int> &A,vector<int> &B){
if (dep==(int)v.size()){
int nowmask=1;
for (int i=0;i<dep;i++){
int nxtmask=(nowmask<<A[i])|(nowmask<<B[i]);
nowmask=nxtmask;
}
vector<int> nxt;
for (auto e:A) if (e!=0) nxt.push_back(e);
for (auto e:B) if (e!=0) nxt.push_back(e);
sort(nxt.begin(),nxt.end());
ok[id[v]][id[nxt]]|=nowmask;
return;
}
for (int j=0;j+j<=v[dep];j++){
A.push_back(j);
B.push_back(v[dep]-j);
cut(v,dep+1,A,B);
A.pop_back();
B.pop_back();
}
}
map<pair<int,vector<int>>,int> dict;
int dfs(int dep,vector<int> v){
/*
cerr << "----------dfs-----------" << endl;
cerr << "dep : " << dep << endl;
cerr << "v : ";
for (auto e:v) cerr << e << " ";
cerr << endl;
*/
if (dep==m+1){
int cnt=0;
for (auto e:v) if (e==1) cnt++;
return cnt;
}
auto PAIR=make_pair(dep,v);
if (dict.count(PAIR)) return dict[PAIR];
int ans=0;
int nowid=id[v];
for (int i=1;i<=mxid;i++){
if ((ok[nowid][i]>>a[dep])&1){
ans=max(ans,dfs(dep+1,lst[i]));
}
}
return dict[PAIR]=ans;
}
int main(){
ios_base::sync_with_stdio(false);
cin >> n;
cin >> m;
for (int i=1;i<=m;i++) cin >> a[i];
{
vector<int> tmp;
prepare(n,1,tmp);
}
{
for (int i=1;i<=mxid;i++){
vector<int> A,B;
cut(lst[i],0,A,B);
}
}
int ans=dfs(1,{n});
cout << ans << "\n";
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3644kb
input:
4 2 2 2
output:
4
result:
ok single line: '4'
Test #2:
score: 0
Accepted
time: 4ms
memory: 9936kb
input:
16 3 6 8 8
output:
5
result:
ok single line: '5'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3760kb
input:
5 2 2 2
output:
3
result:
ok single line: '3'
Test #4:
score: 0
Accepted
time: 0ms
memory: 8124kb
input:
16 3 8 8 8
output:
6
result:
ok single line: '6'
Test #5:
score: 0
Accepted
time: 18ms
memory: 18300kb
input:
20 7 1 1 1 1 6 8 8
output:
11
result:
ok single line: '11'
Test #6:
score: 0
Accepted
time: 1ms
memory: 3680kb
input:
7 3 3 2 1
output:
4
result:
ok single line: '4'
Test #7:
score: 0
Accepted
time: 1ms
memory: 3740kb
input:
9 4 1 1 3 3
output:
5
result:
ok single line: '5'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3792kb
input:
10 3 4 4 3
output:
6
result:
ok single line: '6'
Test #9:
score: 0
Accepted
time: 1ms
memory: 5772kb
input:
10 3 4 4 5
output:
6
result:
ok single line: '6'
Test #10:
score: 0
Accepted
time: 1ms
memory: 5912kb
input:
10 3 4 4 4
output:
7
result:
ok single line: '7'
Test #11:
score: 0
Accepted
time: 1ms
memory: 5976kb
input:
12 3 6 6 6
output:
6
result:
ok single line: '6'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3856kb
input:
10 5 2 2 2 2 2
output:
7
result:
ok single line: '7'
Test #13:
score: 0
Accepted
time: 1ms
memory: 5856kb
input:
10 6 2 2 2 2 2 2
output:
10
result:
ok single line: '10'
Test #14:
score: 0
Accepted
time: 0ms
memory: 5792kb
input:
10 2 3 3
output:
2
result:
ok single line: '2'
Test #15:
score: 0
Accepted
time: 1ms
memory: 3848kb
input:
10 6 8 5 2 8 8 1
output:
10
result:
ok single line: '10'
Test #16:
score: 0
Accepted
time: 1ms
memory: 3740kb
input:
7 4 5 5 1 2
output:
5
result:
ok single line: '5'
Test #17:
score: 0
Accepted
time: 0ms
memory: 3684kb
input:
2 1 1
output:
2
result:
ok single line: '2'
Test #18:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
3 1 1
output:
1
result:
ok single line: '1'
Test #19:
score: 0
Accepted
time: 1453ms
memory: 136004kb
input:
30 1 15
output:
0
result:
ok single line: '0'
Test #20:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
3 5 1 1 1 1 1
output:
3
result:
ok single line: '3'
Test #21:
score: 0
Accepted
time: 1ms
memory: 3612kb
input:
5 6 2 2 2 2 2 2
output:
5
result:
ok single line: '5'
Test #22:
score: 0
Accepted
time: 1481ms
memory: 136164kb
input:
30 5 15 15 15 15 13
output:
28
result:
ok single line: '28'
Test #23:
score: 0
Accepted
time: 1700ms
memory: 138296kb
input:
30 10 15 15 15 15 15 1 1 1 1 1
output:
30
result:
ok single line: '30'
Test #24:
score: 0
Accepted
time: 1763ms
memory: 139028kb
input:
30 10 15 10 10 10 10 1 1 1 1 1
output:
28
result:
ok single line: '28'
Test #25:
score: 0
Accepted
time: 1806ms
memory: 137332kb
input:
30 7 9 9 9 9 9 9 2
output:
28
result:
ok single line: '28'
Test #26:
score: 0
Accepted
time: 1648ms
memory: 136836kb
input:
30 10 2 2 2 3 3 3 6 11 14 15
output:
28
result:
ok single line: '28'
Test #27:
score: 0
Accepted
time: 1862ms
memory: 137296kb
input:
30 10 1 2 3 4 5 6 7 8 9 10
output:
30
result:
ok single line: '30'
Test #28:
score: 0
Accepted
time: 3032ms
memory: 139388kb
input:
30 10 11 12 13 14 15 16 17 18 19 20
output:
30
result:
ok single line: '30'
Test #29:
score: 0
Accepted
time: 1937ms
memory: 141120kb
input:
30 10 20 21 22 23 24 25 26 27 28 29
output:
30
result:
ok single line: '30'
Test #30:
score: 0
Accepted
time: 1600ms
memory: 137288kb
input:
30 10 4 4 4 5 5 5 5 5 5 5
output:
28
result:
ok single line: '28'
Test #31:
score: 0
Accepted
time: 1625ms
memory: 138840kb
input:
30 10 2 2 2 3 3 3 8 8 9 11
output:
28
result:
ok single line: '28'
Test #32:
score: 0
Accepted
time: 1673ms
memory: 139076kb
input:
30 10 2 2 2 3 3 3 9 9 9 9
output:
28
result:
ok single line: '28'
Test #33:
score: 0
Accepted
time: 1679ms
memory: 139136kb
input:
30 10 12 12 12 12 3 2 2 2 2 2
output:
28
result:
ok single line: '28'
Test #34:
score: 0
Accepted
time: 1722ms
memory: 141220kb
input:
30 10 10 9 9 9 3 3 2 2 2 2
output:
28
result:
ok single line: '28'
Test #35:
score: 0
Accepted
time: 1776ms
memory: 139332kb
input:
30 10 10 9 9 8 5 2 2 2 2 2
output:
28
result:
ok single line: '28'
Test #36:
score: 0
Accepted
time: 1818ms
memory: 139320kb
input:
30 10 9 9 9 8 8 3 2 2 1 1
output:
28
result:
ok single line: '28'
Test #37:
score: 0
Accepted
time: 1455ms
memory: 137760kb
input:
30 10 1 1 1 1 1 1 1 1 1 1
output:
10
result:
ok single line: '10'
Test #38:
score: 0
Accepted
time: 1469ms
memory: 135876kb
input:
30 10 2 2 2 2 2 2 2 2 2 2
output:
15
result:
ok single line: '15'
Test #39:
score: 0
Accepted
time: 1457ms
memory: 138076kb
input:
30 10 3 3 3 3 3 3 3 3 3 3
output:
20
result:
ok single line: '20'
Test #40:
score: 0
Accepted
time: 1485ms
memory: 136612kb
input:
30 10 4 4 4 4 4 4 4 4 4 4
output:
25
result:
ok single line: '25'
Test #41:
score: 0
Accepted
time: 1624ms
memory: 137168kb
input:
30 10 5 5 5 5 5 5 5 5 5 5
output:
30
result:
ok single line: '30'
Test #42:
score: 0
Accepted
time: 1485ms
memory: 136100kb
input:
30 3 2 2 2
output:
4
result:
ok single line: '4'
Test #43:
score: 0
Accepted
time: 1434ms
memory: 135836kb
input:
30 6 2 2 2 2 2 2
output:
9
result:
ok single line: '9'
Test #44:
score: 0
Accepted
time: 1444ms
memory: 135996kb
input:
30 9 2 2 2 2 2 2 2 2 2
output:
13
result:
ok single line: '13'
Test #45:
score: 0
Accepted
time: 1577ms
memory: 139260kb
input:
30 10 2 3 4 5 5 5 5 5 6 6
output:
28
result:
ok single line: '28'
Test #46:
score: 0
Accepted
time: 1593ms
memory: 137056kb
input:
30 10 2 4 5 5 5 5 5 5 5 6
output:
28
result:
ok single line: '28'
Test #47:
score: 0
Accepted
time: 1557ms
memory: 138196kb
input:
30 10 15 15 15 15 29 29 29 29 29 29
output:
20
result:
ok single line: '20'
Test #48:
score: 0
Accepted
time: 1472ms
memory: 136136kb
input:
30 5 15 15 15 15 15
output:
30
result:
ok single line: '30'
Test #49:
score: 0
Accepted
time: 1753ms
memory: 138000kb
input:
30 10 3 6 6 7 4 3 5 3 6 4
output:
28
result:
ok single line: '28'
Test #50:
score: 0
Accepted
time: 1673ms
memory: 137996kb
input:
30 10 5 2 6 7 4 7 3 4 2 6
output:
28
result:
ok single line: '28'
Test #51:
score: 0
Accepted
time: 2784ms
memory: 139344kb
input:
30 10 20 6 20 19 11 18 21 24 18 12
output:
30
result:
ok single line: '30'
Test #52:
score: 0
Accepted
time: 2695ms
memory: 141268kb
input:
30 10 7 22 8 12 12 23 10 11 24 21
output:
30
result:
ok single line: '30'
Test #53:
score: 0
Accepted
time: 2743ms
memory: 139448kb
input:
30 10 19 21 23 17 8 21 15 20 6 22
output:
30
result:
ok single line: '30'
Test #54:
score: 0
Accepted
time: 2855ms
memory: 139248kb
input:
30 10 16 5 19 16 10 14 10 12 14 4
output:
30
result:
ok single line: '30'
Test #55:
score: 0
Accepted
time: 2549ms
memory: 139116kb
input:
30 10 5 9 7 10 6 21 15 24 17 21
output:
30
result:
ok single line: '30'
Test #56:
score: 0
Accepted
time: 1656ms
memory: 137440kb
input:
30 10 2 4 7 3 2 6 7 2 5 2
output:
25
result:
ok single line: '25'
Test #57:
score: 0
Accepted
time: 1836ms
memory: 137640kb
input:
30 10 8 6 4 2 2 3 4 8 6 5
output:
30
result:
ok single line: '30'
Test #58:
score: 0
Accepted
time: 1621ms
memory: 139392kb
input:
30 10 6 4 6 4 5 2 3 3 5 8
output:
28
result:
ok single line: '28'
Test #59:
score: 0
Accepted
time: 1715ms
memory: 139196kb
input:
30 10 4 12 8 13 8 1 1 1 1 1
output:
24
result:
ok single line: '24'
Test #60:
score: 0
Accepted
time: 1814ms
memory: 139012kb
input:
30 10 7 13 6 9 14 1 1 1 1 1
output:
25
result:
ok single line: '25'
Test #61:
score: 0
Accepted
time: 1740ms
memory: 139140kb
input:
30 10 5 11 8 14 9 1 1 1 1 1
output:
25
result:
ok single line: '25'
Test #62:
score: 0
Accepted
time: 1576ms
memory: 138200kb
input:
30 10 4 12 5 12 1 3 1 2 1 3
output:
22
result:
ok single line: '22'
Test #63:
score: 0
Accepted
time: 1626ms
memory: 140768kb
input:
30 10 6 13 12 10 1 2 1 2 1 1
output:
21
result:
ok single line: '21'
Test #64:
score: 0
Accepted
time: 1595ms
memory: 138252kb
input:
30 10 7 5 14 5 1 3 2 3 2 2
output:
24
result:
ok single line: '24'
Test #65:
score: 0
Accepted
time: 1524ms
memory: 138424kb
input:
30 5 12 14 15 12 15
output:
27
result:
ok single line: '27'
Test #66:
score: 0
Accepted
time: 1593ms
memory: 136440kb
input:
30 5 14 13 15 11 11
output:
26
result:
ok single line: '26'
Test #67:
score: 0
Accepted
time: 1587ms
memory: 136428kb
input:
30 5 13 12 14 11 12
output:
26
result:
ok single line: '26'
Test #68:
score: 0
Accepted
time: 1800ms
memory: 139008kb
input:
30 6 11 10 9 9 10 9
output:
28
result:
ok single line: '28'
Test #69:
score: 0
Accepted
time: 1711ms
memory: 136916kb
input:
30 6 10 7 8 11 9 9
output:
27
result:
ok single line: '27'
Test #70:
score: 0
Accepted
time: 1705ms
memory: 137016kb
input:
30 6 7 9 8 10 10 8
output:
26
result:
ok single line: '26'
Test #71:
score: 0
Accepted
time: 1844ms
memory: 137404kb
input:
30 7 6 10 7 9 6 8 9
output:
30
result:
ok single line: '30'
Test #72:
score: 0
Accepted
time: 1786ms
memory: 137304kb
input:
30 7 7 6 7 10 7 7 10
output:
30
result:
ok single line: '30'
Test #73:
score: 0
Accepted
time: 1763ms
memory: 139128kb
input:
30 7 7 8 6 8 8 7 6
output:
28
result:
ok single line: '28'
Test #74:
score: 0
Accepted
time: 1752ms
memory: 137748kb
input:
30 10 2 2 4 5 8 5 4 11 3 3
output:
28
result:
ok single line: '28'
Test #75:
score: 0
Accepted
time: 1668ms
memory: 137528kb
input:
30 9 5 2 3 3 8 10 6 3 6
output:
27
result:
ok single line: '27'
Test #76:
score: 0
Accepted
time: 1584ms
memory: 137468kb
input:
30 9 5 2 3 3 8 8 4 3 3
output:
24
result:
ok single line: '24'
Test #77:
score: 0
Accepted
time: 1710ms
memory: 137440kb
input:
30 10 3 2 6 4 1 8 4 8 4 6
output:
28
result:
ok single line: '28'
Test #78:
score: 0
Accepted
time: 1657ms
memory: 138096kb
input:
30 9 3 6 6 11 2 7 4 2 6
output:
27
result:
ok single line: '27'
Test #79:
score: 0
Accepted
time: 1670ms
memory: 140308kb
input:
30 10 3 8 6 5 2 7 4 2 2 7
output:
28
result:
ok single line: '28'
Test #80:
score: 0
Accepted
time: 1797ms
memory: 139452kb
input:
30 9 3 6 4 2 7 8 5 8 4
output:
28
result:
ok single line: '28'
Test #81:
score: 0
Accepted
time: 1818ms
memory: 138160kb
input:
30 9 8 7 6 4 7 2 5 6 2
output:
28
result:
ok single line: '28'
Test #82:
score: 0
Accepted
time: 1657ms
memory: 137668kb
input:
30 10 3 5 2 7 7 1 6 2 6 7
output:
28
result:
ok single line: '28'
Test #83:
score: 0
Accepted
time: 1599ms
memory: 138936kb
input:
30 9 2 3 2 3 4 8 15 3 5
output:
24
result:
ok single line: '24'