zoukankan      html  css  js  c++  java
  • codevs3027(dp)

    题目链接: http://codevs.cn/problem/3027/

    题意: 中文题目诶~

    思路: dp

    先给所有线段按照右端点值升序 sort 一下, 用 dp[i] 存储以第 i 条线段结尾的线段集合的最大价值,

    那么动态转移方程式为: dp[i] = max(dp[i], dp[j] + gel[i].v), 其中 j < i 且 gel[i].l >= gel[j].r

    注意 dp[n - 1] 不一定是最大, 维护一个 sol = max(sol, dp[i])

    代码:

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 const int MAXN = 1e3 + 10;
     7 
     8 struct node{
     9     int l, r, v;
    10 }gel[MAXN];
    11 
    12 int dp[MAXN], vis[MAXN];
    13 
    14 bool cmp(node a, node b){
    15     return a.r < b.r;
    16 }
    17 
    18 int main(void){
    19     int n, indx = 0, sol = 0;
    20     scanf("%d", &n);
    21     for(int i = 0; i < n; i++){
    22         scanf("%d%d%d", &gel[i].l, &gel[i].r, &gel[i].v);
    23     }
    24     sort(gel, gel + n, cmp);
    25     for(int i = 0; i < n; i++){
    26         dp[i] = gel[i].v;
    27         for(int j = 0; j < i; j++){
    28             if(gel[i].l >= gel[j].r){
    29                 dp[i] = max(dp[i], dp[j] + gel[i].v);
    30             }
    31         }
    32         sol = max(sol, dp[i]);
    33     }
    34     printf("%d
    ", sol);
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    iota妙用
    io
    http
    gosched
    go设置使用多少个cpu
    go协程的特点
    go条件变量同步机制
    Go奇技淫巧
    U5首次登录
    Maven安装中的问题
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/7384296.html
Copyright © 2011-2022 走看看