QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#407215 | #8229. 栈 | sunrise2048 | 0 | 1ms | 3508kb | C++14 | 1.9kb | 2024-05-08 10:52:57 | 2024-05-08 10:52:57 |
answer
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=35;
const int mod=1e9+7;
int n,m;
int d[N];
unordered_map<int,int> ma;
vector<int> z;
vector<int> f,g;
vector<int> si;
void dfs(int no,int id){
for(int x=0;x<d[1];++x){
int y=x;
while(y<n&&no&(1<<y))y+=d[1];
if(y>=n)continue;
if(ma[no|(1<<y)]==0){
z.push_back(no|(1<<y));
ma[no|(1<<y)]=z.size()-1;
dfs(no|(1<<y),z.size()-1);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i){
cin>>d[i];
}
z.push_back(0);
dfs(0,0);
sort(z.begin(),z.end());
for(int i=0;i<z.size();++i){
ma[z[i]]=i;
}
f.resize(z.size());
g.resize(z.size());
f[0]=(n/d[1]-1)*(n/d[1])/2*(d[1]-n%d[1])+(n/d[1])*(n/d[1]+1)/2*(n%d[1]);
g[0]=1;
for(int ii=0;ii<z.size();++ii){
int k=z[ii];
for(int x=0;x<d[1];++x){
int y=x;
while(y<n&&k&(1<<y))y+=d[1];
if(y>=n)continue;
int nf=f[ii],ng=g[ii];
int kk=k|(1<<y),to=y;
for(int i=2;i<=m;++i){
si.clear();
si.resize(d[i]);
for(int j=0;j<n;++j){
if(j==to){
nf+=(j/d[i])-si[j%d[i]];
}
if(kk&(1<<j))si[j%d[i]]++;
}
to=(si[to%d[i]]-1)*d[i]+(to%d[i]);
kk=0;
for(int j=0;j<d[i];++j){
for(int t=0;t<si[j];++t){
kk+=(1<<(t*d[i]+j));
}
}
}
int tid=ma[k|(1<<y)];
if(f[tid]<nf){
f[tid]=nf;
g[tid]=0;
}
if(f[tid]==nf)g[tid]=(g[tid]+ng)%mod;
}
}
cout<<f[ma[(1<<n)-1]]<<' '<<g[ma[(1<<n)-1]];
//while(1);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Runtime Error
Test #1:
score: 0
Runtime Error
input:
4907 4910 2 763 3330 1 3 307 1 1 1 2262 3430 22699 89397 1 1915 4000 51541 67587 2 212 2990 9763 2 1086 2162 1 2 1813 4496 16760 1 51 2796 68005 99390 1 1267 1519 74236 66178 3 1768 23808 54314 2 900 4122 27758 3 3287 17350 28989 2 3277 4024 3633 2 444 4866 1 2 353 4219 1061 1 987 3141 99906 17320 2...
output:
result:
Subtask #2:
score: 0
Runtime Error
Test #6:
score: 0
Runtime Error
input:
99999 99998 1 5026 18575 27178 90423 3 30623 1 1 3 76936 1 1 1 77021 95683 84664 24734 1 46085 74886 40512 11266 3 5048 8594 22468 1 53318 77721 97151 70784 1 70645 91192 37556 13013 1 56752 56940 91812 62887 1 7928 34576 87339 69404 3 74875 32807 100970 3 22338 17221 25771 3 21421 20602 57957 3 717...
output:
result:
Subtask #3:
score: 0
Wrong Answer
Test #12:
score: 0
Wrong Answer
time: 1ms
memory: 3508kb
input:
100000 99993 1 47773 70467 16065 1 2 52349 78446 2304 3 40821 1 1 1 40216 93069 78144 1 1 41089 43671 76025 1 2 35263 68629 31066 3 79881 13534 57327 3 5556 1 1 2 21962 38192 1 1 664 58116 9417 1 3 28089 6039 7989 2 88500 90302 9946 3 63215 49410 60770 2 11069 89527 57581 2 70303 97603 12363 1 3420 ...
output:
0 0
result:
wrong answer 2nd numbers differ - expected: '43794', found: '0'
Subtask #4:
score: 0
Time Limit Exceeded
Test #17:
score: 0
Time Limit Exceeded
input:
99999 99996 3 77889 1 10000000000 1 6316 86327 89644 386 3 9260 1 10000000000 2 2603 47234 69717 2 20260 73011 19290 2 62477 81233 26127 1 50140 68508 37004 98794 2 14449 22788 16063 1 43860 84932 50375 21777 1 67345 94584 28202 66610 2 661 68654 1 1 14411 94422 82738 61196 1 16563 94416 4920 38408 ...
output:
result:
Subtask #5:
score: 0
Skipped
Dependency #1:
0%