⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toj_2938.cpp

📁 Tianjin University Online Judge 的80多道题目 .
💻 CPP
字号:
#include<cstdio>#include<cmath>#define MAXHOUSE 210int h , c;double x[ MAXHOUSE ] ,  dp[ MAXHOUSE ][ MAXHOUSE ] , cost[ MAXHOUSE ][ MAXHOUSE ];void findCost(){    int i , j , xjMxi  , jMi , k;    double diff[ MAXHOUSE ][ MAXHOUSE ];    for( i = 1; i <= h; i++ ){        for( j = i + 1 ; j <= h; j++ )            diff[ i ][ j ] = x[ j ]  - x[ i ];    }                for( i = 1; i <= h - 1; i++ ){        for( j = i; j <= h; j ++ ){            cost[ i ][ j ] = 0;            jMi = j - i;            for( k = i + 1 ; k < j;k++ )                cost[ i ][ j ] += fabs( -diff[ i ][ k ] + diff[ i ][ j ] * ( k - i ) / jMi );        }    }}void dinamicProgram(){    int i , j , k;    double min , currentValue;    for( i = 1; i <= c; i++ )        dp [ i ] [ i ] = 0;    for( i = 2; i <= h; i++ ){        for( j = 2; j <= c; j++ ){            min = 1e30;            for( k = 1; k < i - j; k++ ){                currentValue = dp[ i - k ][ j - 1 ] + cost[ i - k ][ i ];                if( min > currentValue )                    currentValue = min;            }                    }    }}                    int main(){    int i , j , k , testCase;    scanf( "%d" , &testCase );    while ( testCase-- ){        scanf( "%d%d" , &h , &c );        for( i = 1; i <= h; i++ ){            scanf ( "%lf" , &x[ i ] );        }        findCost();        dinamicProgram();        printf( "%lf\n" , dp[ h ][ c ] );    }    return 0;}                            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -