社区讨论
64pts求调
P11188「KDOI-10」商店砍价参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m2est53m
- 此快照首次捕获于
- 2024/10/18 22:01 去年
- 此快照最后确认于
- 2025/11/04 16:54 4 个月前
从24分debug到了64分,本蒻已经找不到哪里还可以改了,求大佬指点,代码如下
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int c,t;
char s[100010];
int v[15];
int f[100010][7];
int quickmi(int a,int b) {
int ans=1;
while(b) {
if(b&1) ans*=a;
a*=a;
b>>=1;
}
return ans;
}
signed main() {
scanf("%d%d",&c,&t);
while(t--) {
scanf("%s",s+1);
int n=strlen(s+1);
for(int i=1; i<=9; i++) {
scanf("%d",&v[i]);
}
// cout<<n<<endl;
memset(f,0x7f,sizeof(f));
f[n+1][0]=0;
for(int i=n; i>=1; i--) {
int x=s[i]-'0';
for(int j=0; j<=5; j++) {
// cout<<666666;
f[i][j]=min(f[i+1][j]+v[x],f[i][j]);
if(j!=5)f[i][j+1]=min(f[i][j+1],f[i+1][j]+x*quickmi(10,j));
// cout<<i<<' '<<j<<' '<<f[i][j]<<endl;
}
}
// printf("%d\n",f[1][n]);
int mi=0x3f3f3f3f;
for(int i=0; i<=6; i++) {
mi=min(mi,f[1][i]);
// cout<<f[1][i]<<' ';
}
// cout<<endl;
printf("%lld\n",mi);
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...