求助求助,不开O2 50 开O2 100,不知为何常数如此巨大

P4127 [AHOI2009] 同类分布

滥用long long,很多地方(比如dfs传参)开int就行
by panyf @ 2020-06-10 18:28:14


@[AK新手村](/user/221955) 可能是这个的问题,谢谢大佬/se
by OYBDOOO @ 2020-06-10 18:44:45


@[OYBDOOO](/user/73847) ```cpp #include<bits/stdc++.h> #pragma GCC diagnostic error "-std=c++11" #pragma GCC target("avx") #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") using namespace std; int fg,len; long mp[22][200][200][2]; string ss; inline long long dfs(long long cur,long long x,long long xx,long long f) { long i,v=9; if(cur==len) { long long kkk=(x==0)&&(xx==fg); if(kkk==1&&fg==2) long long my=-1; return (x==0)&&(xx==fg); } if(mp[cur][x][xx][f]!=-1)return mp[cur][x][xx][f]; if(f)v=ss[cur]-'0'; long long ret=0; for(i=0;i<=v;i++) { ret+=dfs(cur+1,(x*10+i)%fg,xx+i,f&(i==v)); } mp[cur][x][xx][f]=ret; return ret; } inline long long ask(string x) { len=x.size(); ss=x; memset(mp,-1,sizeof(mp)); return dfs(0,0,0,1); } inline int chk(string x) { long long i,aa=0,bb=0; for(i=0;i<x.size();i++) aa=aa*10+x[i]-'0',bb+=x[i]-'0'; if(aa%fg==0&&bb==fg)return 1; else return 0; } int main() { string A,B; cin>>A>>B; long long all=0; long long i; for(i=1;i<=180;++i) { fg=i; // long long lsa=ask(B); // long long lsb=ask(A); all+=ask(B)-ask(A)+chk(A); } printf("%lld",all); return 0; } ```
by 103PA @ 2020-06-10 19:07:32


@[103PA](/user/260925) 额这。。。
by OYBDOOO @ 2020-06-10 20:14:58


|