zoukankan      html  css  js  c++  java
  • 「区间DP」「洛谷P1043」数字游戏

    「洛谷P1043」数字游戏

    日后再写

    代码

    /*#!/bin/sh
    dir=$GEDIT_CURRENT_DOCUMENT_DIR
    name=$GEDIT_CURRENT_DOCUMENT_NAME
    pre=${name%.*}
    g++ -O2 $dir/$name -o $pre -g -Wall -std=c++11
    if test $? -eq 0; then
        gnome-terminal -x bash -c "time $dir/$pre;echo;read;"
    fi*/
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    const int maxn=1e2+5,INF=0x3f3f3f3f,mol=10;
    int n,m,f[maxn][maxn][12],a[maxn],sum[maxn][maxn],ans1,ans2=INF,g[maxn][maxn][12];
    inline int read(){
    	int s=0,w=1;
    	char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
    	return s*w;
    }
    int mod(int a){
    	return ((a%10)+10)%10;
    }
    int main(){
    	freopen("a.in","r",stdin);
    	n=read();m=read();
    	for(int i=1;i<=n;i++)a[i]=a[i+n]=read();
    	for(int i=1;i<=n*2;i++)a[i]+=a[i-1];
    	for(int i=1;i<=n*2;i++){
    		for(int j=i;j<=2*n;j++){
    			g[i][j][1]=f[i][j][1]=mod(a[j]-a[i-1]);
    		}
    	}
    	for(int d=2;d<=m;d++)
    		for(int i=1;i<=2*n;i++)
    			for(int j=i+d-1;j<=2*n;j++)
    				g[i][j][d]=INF;
    	for(int d=2;d<=m;d++){
    		for(int i=1;i<=2*n;i++){
    			for(int j=i+d-1;j<=2*n;j++){
    				for(int k=i+d-2;k<j;k++){
    					f[i][j][d]=max(f[i][j][d],f[i][k][d-1]*mod(a[j]-a[k]));
    					g[i][j][d]=min(g[i][j][d],g[i][k][d-1]*mod(a[j]-a[k]));
    				}
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		ans1=max(ans1,f[i][i+n-1][m]);
    		ans2=min(ans2,g[i][i+n-1][m]);
    	}
    	cout<<ans2<<endl<<ans1;
    }
    
  • 相关阅读:
    第二次作业
    自我介绍
    《JavaScript高级程序设计》读书笔记
    三种清理浮动的方式
    简单的水平导航条
    CSS——关于列表和导航条菜单之垂直菜单制作
    css中关于超链接的部分学习心得
    dubbox分布式框架 和相关依赖
    IO操作
    POI动态生成Excel
  • 原文地址:https://www.cnblogs.com/614685877--aakennes/p/13184334.html
Copyright © 2011-2022 走看看