刷题统计
#include<iostream>
#include<algorithm>
using namespace std;
long long a,b,n;
int main(){
cin>>a>>b>>n;
long long t = 5*a+2*b;
long long day = n/t*7;
n = n%t;
long long x = 0;
for(int i=1;i<=5;i++){
if(x>=n)break;
x+=a;
day++;
}
for(int i=1;i<=2;i++){
if(x>=n)break;
x+=b;
day++;
}
cout<<day<<endl;
return 0;
}
修剪灌木
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<max(2*i-2,2*n-2*i)<<endl;
}
return 0;
}
统计子矩阵
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 510;
int f[N][N];
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>f[i][j];
f[i][j]+=f[i-1][j]+f[i][j-1]-f[i-1][j-1];
}
}
long long res = 0;
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
for(int q=1,p=1;q<=m;q++){
while(p<=q&&f[j][q]-f[j][p-1]-f[i-1][q]+f[i-1][p-1]>k)p++;
if(p<=q)res+=q-p+1;
}
}
}
cout<<res<<endl;
return 0;
}
积木画
#include<iostream>
#include<algorithm>
using namespace std;
const int mod = 1e9+7;
long long f[2][3];
int main(){
int n;
cin>>n;
f[1][0] = 1;
f[1][1] = 2;
f[1][2] = 1;
for(int i=2;i<=n;i++){
f[i&1][0] = (f[i-1&1][0]+f[i-1&1][2])%mod;
f[i&1][1] = (f[i-1&1][0]*2+f[i-1&1][1])%mod;
f[i&1][2] = (f[i-1&1][0]+f[i-1&1][1])%mod;
}
cout<<f[n&1][0]<<endl;
return 0;
}
李白打酒加强版
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 210,K =115,mod = 1e9+7;
int f[N][N][K];
int main(){
int n,m;
cin>>n>>m;
f[0][0][2] = 1;
for(int len = 1;len<=n+m-1;len++){
for(int i=0;i<=n;i++){
for(int j=0;j<=105;j++){
f[len][i][j]+=f[len-1][i][j+1];
if(i&&j%2==0)f[len][i][j]+=f[len-1][i-1][j/2];
f[len][i][j]%=mod;
}
}
}
f[n+m][n][0] = f[n+m-1][n][1];
cout<<f[n+m][n][0]<<endl;
return 0;
}