zoukankan      html  css  js  c++  java
  • 【DP专题】——洛谷P1220关路灯

    第一眼:哇,这题怎么这么眼熟!

    见这道题:GO

    传送门:GO

    根本就是一样的题目嘛!


    反正套路是一样的,就不说什么废话了,直接上代码吧。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int read(){
     4     int x=0,f=1;
     5     char c=getchar();
     6     while(!isdigit(c)){
     7         if(c=='-') f=-1;
     8         c=getchar();
     9     }
    10     while(isdigit(c)){
    11         x=x*10+c-'0';
    12         c=getchar();
    13     }
    14     return x*f;
    15 }
    16 const int N=60;
    17 int n,c;
    18 int f[N][N][2];
    19 int dis[N];
    20 int v[N],sum[N];
    21 int d(int i,int j){
    22     return dis[j]-dis[i];
    23 }
    24 int val(int i,int j){
    25     return sum[n]-sum[j]+sum[i-1];
    26 }
    27 int main(){
    28     n=read();c=read();
    29     for(int i=1;i<=n;i++){
    30         dis[i]=read();
    31         v[i]=read();
    32         sum[i]=sum[i-1]+v[i];
    33     }
    34     memset(f,0x3f,sizeof(f));
    35     f[c][c][1]=f[c][c][0]=0;
    36     for(int i=2;i<=n;i++){
    37         for(int j=1;j+i-1<=n;j++){//(i,j+i-1)
    38             int k=j+i-1;
    39             f[j][k][0]=min(f[j][k][0],min(f[j+1][k][0]+val(j+1,k)*d(j,j+1),f[j+1][k][1]+val(j+1,k)*d(j,k)));
    40             f[j][k][1]=min(f[j][k][1],min(f[j][k-1][1]+val(j,k-1)*d(k-1,k),f[j][k-1][0]+val(j,k-1)*d(j,k)));
    41         }    
    42     }
    43     printf("%d",min(f[1][n][0],f[1][n][1]));
    44     return 0;
    45 } 
    ——抓住了时间,却不会利用的人,终究也逃不过失败的命运。
  • 相关阅读:
    js日历,使用datepicker.js,ui.core.js,jquery-1.7.1.js
    android设置按钮按下的不同效果图
    a标签阻止跳转的方法
    获取浏览器中选中部分,比如文本等
    Android Studio does not point to a valid jvm
    Drawerlayout
    webviewactivity
    ViewFilpper
    Physik
    Betriebssystem
  • 原文地址:https://www.cnblogs.com/Nelson992770019/p/11574789.html
Copyright © 2011-2022 走看看