zoukankan      html  css  js  c++  java
  • 洛谷p1070道路游戏

    看到题目描述立马蒙了,怎么废话怎么多??不愧是普及组最后一题啊

    其实本题不难,理好思路就行了,dp【i】指到了第i个单位时间时最大收益,外层循环时间m,内层枚举起点,再枚举该机器人行走的时间

    dp[i]=max(dp[i],dp[i-k]+该时间内总获得的金钱-买机器人时的花费)

     1 #include<bits/stdc++.h>
     2 #define maxn 1010
     3 using namespace std;
     4 
     5 inline int read(){
     6     int x=0,f=1;char ch=getchar();
     7     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
     8     while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
     9     return f*x;
    10 }
    11 
    12 int money[maxn][maxn],cost[maxn],n,m,p,dp[maxn];
    13 
    14 int main(){
    15     n=read();m=read();p=read();
    16     for(int i=1;i<=n;i++)
    17         for(int j=1;j<=m;j++)
    18         money[i][j]=read();
    19     for(int i=1;i<=n;i++) cost[i]=read();
    20     memset(dp,-0x3f3f3f3f,sizeof(dp));dp[0]=0;
    21     for(int i=1;i<=m;i++)
    22         for(int j=1;j<=n;j++){
    23             int jj=j,ss=0;
    24             for(int k=1;k<=p;k++){
    25                 if(k>i) break;
    26                 jj--;if(!jj) jj=n;ss+=money[jj][i-k+1];
    27                 dp[i]=max(dp[i],dp[i-k]+ss-cost[jj]);
    28             }
    29         }
    30     printf("%d",dp[m]);
    31     return 0;
    32 }
  • 相关阅读:
    Reversion windows 2008 R2 STD to Datacenter
    NetAPP常用操作
    firefox解决flash崩溃
    物理和虚拟兼容性RDM的区别
    网络嗅探器Wireshark
    子网掩码在线计算换算及算法
    Debian中文字体安装
    快算24点,POJ(3983)
    第九十八周,搜索24点
    两次DFS,POJ(1481)
  • 原文地址:https://www.cnblogs.com/plysc/p/10311406.html
Copyright © 2011-2022 走看看