C题模拟
求助大佬,为啥这样只过了45%,自己设的案例能过的
#include<vector> #include<cstdio> #include<cstring> #include<cmath> #include<set> #include<algorithm> #include<queue> #include<stack> #include<map> #include<list> #include<string> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn=1e5+5; struct node{ ll zcr=0; //正常人 ll grz=0; //感染者 ll xdz=0; //携带者 ll zys=0; //治愈者 }a[maxn]; int main() { int T; cin>>T; while(T--){ int x,m,n; cin>>x>>m>>n; for(int i=1;i<=n;i++){ a[i].grz=0; a[i].xdz=0; a[i].zcr=0; a[i].zys=0; } if(n<8) cout<<0<<'\n'; else{ ll sum=0; a[1].xdz=1; a[14].zys=1; a[8].grz=1; a[8].xdz=x; a[8+13].zys=x; sum=min(1+x,m); for(int i=9;i<=n;i++){ a[i].grz=a[i-1].grz+a[i-7].xdz-a[i].zys; a[i].xdz=min(a[i].grz*x,m-sum); a[i+13].zys=a[i].xdz; sum+=a[i].xdz; } cout<<a[n].grz<<'\n'; } } return 0; }