SCU 2113 数字游戏
来源:互联网 发布:数据科学家养成手册 编辑:程序博客网 时间:2024/05/16 11:09
题目链接
题意:字面意思。。。
分析:把环断成链,然后dp,dp[i][j]表示把前i个数划分成j部分。转移方程dp[i][k]=max{dp[j][k-1]*(s[i]-s[j-1])}.枚举每种断链可能。
#include<cstdio>#include<algorithm>#include<cstring>#define MAX_N 55#define MAX_M 12#define inf 0x3f3f3f3f#define ten 1000000using namespace std;int n,m;int dp1[MAX_N][MAX_M];int dp2[MAX_N][MAX_M];int sum[MAX_N*2];int mod(int x){ return (x+ten)%10;}int main(void){ while(scanf("%d%d",&n,&m)==2) { fill(sum,sum+n+1,0); for(int i=1;i<=n;i++) { int a; scanf("%d",&a); sum[i]=sum[i-1]+a; } for(int i=n+1;i<2*n;i++) sum[i]=sum[n]+sum[i-n]; int ans1=inf; int ans2=-inf; for(int s=1;s<=n;s++) { for(int i=1;i<=n;i++) dp1[i][1]=dp2[i][1]=mod(sum[s+i-1]-sum[s-1]); for(int k=2;k<=m;k++) { for(int i=k;i<=n;i++) { dp1[i][k]=inf; dp2[i][k]=-inf; for(int j=k-1;j<i;j++) { dp1[i][k]=min(dp1[i][k],dp1[j][k-1]*mod(sum[s-1+i]-sum[s-1+j])); dp2[i][k]=max(dp2[i][k],dp2[j][k-1]*mod(sum[s-1+i]-sum[s-1+j])); } } } ans1=min(ans1,dp1[n][m]); ans2=max(ans2,dp2[n][m]); } printf("%d\n%d\n",ans1,ans2); } return 0;}
0 0
- SCU 2113 数字游戏
- SCU 1114 数字三角
- SCU 1114 数字三角
- SCU 1114-数字三角(dp)
- SCU 1114:数字三角(动态规划)
- SCU
- SCU
- SCU
- SCU
- 【SCU
- SCU
- SCU
- SCU
- (SCU
- SCU
- SCU
- SCU
- SCU
- Unable to start activity ComponentInfo 解决方法
- centos7下 nginx配置upstream 不能访问另一台服务器外网IP的问题
- 换句话说 —— 不同的解释
- 文章标题
- 20160805 【PS笔记】《李涛(国内最好的PS讲师)主讲.PHOTOSHOP.CS2(共24集)]清晰RMVB》
- SCU 2113 数字游戏
- 【HD 4857】逃生(反向构图+拓扑排序+优先队列)
- Android Studio开发入门-引用jar及so文件
- 玲珑杯:ACM 热身赛 # 0.5 A题 Alarm(找规律)
- HDOJ 2087 剪花布条(KMP)
- POJ3264 Balanced Lineup (RMQ)
- js里面的||运算
- GitHub 排名前 100 的安卓、iOS项目简介
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因