头像

望星


访客:32

离线:19小时前


活动打卡代码 AcWing 282. 石子合并

望星
1天前

```#include[HTML_REMOVED]
using namespace std;
int n;
int f[305][305];
int a[305];
int s[305];

int main() {
cin>>n;
for(int i=1; i<=n; i) {
cin>>a[i];
s[i]=s[i-1]+a[i];
}
for(int r=1; r<n; r
) {
for(int i=1; i<=n-r; i) {
int j=i+r;
f[i][j]=0x7fffffff;
for(int e=i; e<=j; e
) {
f[i][j]=min(f[i][j],f[i][e]+f[e+1][j]);
}
f[i][j]+=s[j]-s[i-1];
}
}
cout<<f[1][n];
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```



活动打卡代码 AcWing 312. 乌龟棋

望星
1天前

```#include[HTML_REMOVED]
using namespace std;
int f[40][40][40][40];
int n,m;
int a[355],b[125];
int k[5];

int main(){
cin>>n>>m;
for(int i=1;i<=n;i){
cin>>a[i];
}
for(int j=1;j<=m;j
){
cin>>b[j];
k[b[j]];
}
for(int a1=0;a1<=k[1];a1
){
for(int a2=0;a2<=k[2];a2){
for(int a3=0;a3<=k[3];a3
){
for(int a4=0;a4<=k[4];a4++){
if(a1){
f[a1][a2][a3][a4]=max(f[a1][a2][a3][a4],f[a1-1][a2][a3][a4]+a[a1+a22+a33+a44+1]);
}
if(a2){
f[a1][a2][a3][a4]=max(f[a1][a2][a3][a4],f[a1][a2-1][a3][a4]+a[a1+a2
2+a33+a44+1]);
}
if(a3){
f[a1][a2][a3][a4]=max(f[a1][a2][a3][a4],f[a1][a2][a3-1][a4]+a[a1+a22+a33+a44+1]);
}
if(a4){
f[a1][a2][a3][a4]=max(f[a1][a2][a3][a4],f[a1][a2][a3][a4-1]+a[a1+a2
2+a33+a44+1]);
}
}
}
}
}
cout<<f[k[1]][k[2]][k[3]][k[4]];
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```



活动打卡代码 AcWing 275. 传纸条

望星
2天前

```#include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

using namespace std;
int m,n;
long long f[105][105][105],a[1005][1005];

int main() {
cin>>m>>n;
for(int i=1; i<=m; i) {
for(int j=1; j<=n; j
) {
cin>>a[i][j];
}
}
for(int i=1; i<=m; i) {
for(int j=1; j<=n; j
) {
for(int x=1; x<=m; x++) {
int x1=i,y1=j;
int x2=x,y2=i+j-x;
if(y2<1) {
break;
}
long long t=0;
if(f[x1-1][y1][x2-1]>t) {
t=f[x1-1][y1][x2-1];
}
if(f[x1-1][y1][x2]>t) {
t=f[x1-1][y1][x2];
}
if(f[x1][y1-1][x2-1]>t) {
t=f[x1][y1-1][x2-1];
}
if(f[x1][y1-1][x2]>t) {
t=f[x1][y1-1][x2];
}
if(x1==x2&&y1==y2) {
f[x1][y1][x2]=t+a[x1][y2];
} else f[x1][y1][x2]=t+a[x1][y1]+a[x2][y2];
}
}
}
cout<<f[m][n][m];
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```



活动打卡代码 AcWing 274. 移动服务

望星
2天前

```#include[HTML_REMOVED]

include[HTML_REMOVED]

using namespace std;
int l,n;
int c[205][205];
int q[1005];
int f[1005][205][205];
int main() {
cin>>l>>n;
for(int i=1;i<=l;i){
for(int j=1;j<=l;j
){
cin>>c[i][j];
}
}
for(int i=1;i<=n;i){
cin>>q[i];
}
memset(f,0x3f,sizeof(f));
q[0]=3;//员工初始位置1,2,3
f[0][1][2]=0;
for(int i=0;i<n;i
){
for(int x=1;x<=l;x){
for(int y=1;y<=l;y
){
int r=f[i][x][y];
if(x==y||x==q[i]||y==q[i]){
continue;
}//保证没有两个员工在一起
f[i+1][x][y]=min(f[i+1][x][y],r+c[q[i]][q[i+1]]);
f[i+1][q[i]][y]=min(f[i+1][q[i]][y],r+c[x][q[i+1]]);
f[i+1][x][q[i]]=min(f[i+1][x][q[i]],r+c[y][q[i+1]]);
}
}
}
int ans=0x7fffffff;
for(int i=1;i<=l;i){
for(int j=1;j<=l;j
){
if(i==j||i==q[n]||j==q[n]){
continue;
}
ans=min(ans,f[n][i][j]);
}
}
cout<<ans;
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```




望星
2天前

```#include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

using namespace std;
long long a[3005],b[3005];
int n;
int f[3005][3005];

int main() {
cin>>n;
for(int i=1; i<=n; i) {
cin>>a[i];
}
for(int i=1; i<=n; i
) {
cin>>b[i];
}
for(int i=1; i<=n; i) {
int maxx=1;
for(int j=1; j<=n; j
) {
f[i][j]=f[i-1][j];
if(a[i]==b[j]) {
f[i][j]=max(f[i][j],maxx);
}
if(a[i]>b[j]) {
maxx=max(maxx,f[i-1][j]+1);
}
}
}
int ans=0;
for(int i=1; i<=n; i++) {
ans=max(ans,f[n][i]);
}
cout<<ans;
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```




望星
2天前

```#include[HTML_REMOVED]

include[HTML_REMOVED]

using namespace std;
int K,s[6];
long long f[31][31][31][31][31];
int main() {
while(cin>>K&&K!=0) {
for(int i=1; i<=5; i) {
s[i]=0;
}
memset(f,0,sizeof(f));
f[0][0][0][0][0]=1;
for(int i=1; i<=K; i
) {
cin>>s[i];
}
for(int a=0; a<=s[1]; a) {
for(int b=0; b<=min(a,s[2]); b
) {
for(int c=0; c<=min(b,s[3]); c) {
for(int d=0; d<=min(c,s[4]); d
) {
for(int e=0; e<=min(d,s[5]); e++) {
long long x=f[a][b][c][d][e];
if(a&&a-1>=b) {
x+=f[a-1][b][c][d][e];
}
if(b&&b-1>=c) {
x+=f[a][b-1][c][d][e];
}
if(c&&c-1>=d) {
x+=f[a][b][c-1][d][e];
}
if(d&&d-1>=e) {
x+=f[a][b][c][d-1][e];
}
if(e){
x+=f[a][b][c][d][e-1];
}
f[a][b][c][d][e]=x;
}
}
}
}
}
cout<<f[s[1]][s[2]][s[3]][s[4]][s[5]]<<endl;
}
return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```



新鲜事 原文

望星
30天前
qwertyuioplkjhgfdsazxcvbnm