• 【洛谷 2134】百日旅行


    题目背景

    重要的不是去哪里,而是和你在一起。——小红

    对小明和小红来说,20142014 年 77 月 2929 日是一个美好的日子。这一天是他们相识 100100 天的纪念日。

    (小明:小红,感谢你 22 场大考时默默的支持,100100 个日夜的陪伴;感谢你照亮我 100100 个美好的日子,给我留下无数美好的回忆……在这个美好的日子里,我准备带你去旅行。)

    题目描述

    小明和小红还剩下 nn 天的假期,小明可以安排旅行的计划。如果连续 xx 天旅游,小明需要花旅行费用 p imes x imes xp×x×x 元;如果连续 xx 天不旅游,小明需要请小红吃饭,花费为 q imes xq×x 元( p,qp,q 都是输入的常数)。

    请你帮小明写一个程序,计算出假期里他至少需要花费多少元。

    输入格式

    输入只有一行,包含三个空格隔开的正整数 n,p,qn,p,q。

    输出格式

    一行,一个正整数表示小明至少需要花费多少元。

    输入输出样例

    输入 #1
    6 1 7
    输出 #1
    20

    说明/提示

    数据规模与约定

    • 对于 20\%20% 数据,1 le n le 201n20。
    • 对于 90\%90% 数据,1 le n le 10^31n103,1 le p le 2 imes 10^31p2×103,1 le q le 10^41q104。
    • 对于 100\%100% 数据,1 le n le 2 imes 10^51n2×105,1 le q le p le 10^41qp104。

    题解:写(chao)了个90分代码,复习dpdpdp!!!争取拿到部分分!我现在冲着部分分来的。正解斜率优化与我无瓜

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    const int N=200004;
    ll n,p,q,dp[2][N];
    int main(){
        //freopen("2134.in","r",stdin);
        //freopen("2134.out","w",stdout);
        scanf("%d %d %d",&n,&p,&q);
        for(int i=1;i<=n;i++) dp[0][i]=dp[1][i]=0x3f3f3f3f;
        for(int i=1;i<=n;i++){
            for(int j=0;j<i;j++){
                dp[0][i]=min(dp[0][i],dp[1][j]+p*(i-j)*(i-j));
                dp[1][i]=min(dp[1][i],dp[0][j]+q*(i-j));
            }
        }
        cout<<min(dp[0][n],dp[1][n]);
        return 0;
    }
  • 相关阅读:
    JSON
    event flow
    for,for each,for in,for of
    history of program language
    px fr em rem
    正则符号
    DOM、BOM
    web布局
    grid
    初学python环境安装
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/13887483.html
Copyright © 2020-2023  润新知