再一次感受到dp的威力

1985: 即将到来的新生赛

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 112  Solved: 28

SubmitStatusWeb Board

Description

新生赛马上就要到来了。为了举办这次比赛,学校也是大费苦心。由于时间紧迫,要准备的事情太多,人员安排也是很伤脑子。身为一个聪明的acmer,这点小事对你来说应该是So easy!
距离新生赛开始剩余100个小时,现在还剩余m项任务。每个任务都有开始时间,结束时间和收益。现在想知道怎么安排这些任务使人员安排的效率最大(收益最高)。
注:同一时间只能做一个任务, 一个任务结束后可以立马开始另外一个任务,也就是说下一个任务的开始时间可以等于正在做的任务的结束时间。由于有些任务是有时间上的冲突, 所以这些任务是选作,可以不用全部完成。

Input

输入第一行为整数T,表示有T组测试数据。
每组测试数据第一行为一个整数m,表示剩余任务。随后m行,每行三个整数b,e和v分别表示其中一项活动的开始时间,结束时间和收益。(0<=b < e<=100 ,0<=v<=10000,1<=m<=20)

Output

输出最高收益。

Sample Input

1
4
0 5 10
3 7 14
5 9 7
6 9 8

Sample Output

18 
比赛时肯定是一联萌币>_<;
寒假学了搜索后就写了个暴力dfs水过去了,因为数据实在太小了:
#include<iostream>
#include<cstring>
using namespace std;                                 //尝试所有可能的排列组合安排并更新最大价值
int b[21],e[21],v[21],m,maxn,book[21],sumn,ed; 
void dfs(int p)
{
    for (int i=1;i<=m;i++){
        if (p==0) sumn=0;
        if (!book[i]){
            if (b[i]>=e[p]){book[i]=1;
         
            sumn+=v[i];
             
            if (sumn>maxn) maxn=sumn;
             
            dfs(i);
            sumn-=v[i];
            book[i]=0;}
            }
         
    }
}
int main()
{
    int n,i,j,t;
    cin>>t;
    while (t--){maxn=-1;
        cin>>m;memset(book,0,sizeof(book));
    memset(e,0,sizeof(e));memset(b,0,sizeof(b));
        for (i=1;i<=m;i++)
        cin>>b[i]>>e[i]>>v[i];
        sumn=0,dfs(0);
        cout<<maxn<<endl;
    }
    return 0;
}
 
今天发现是个dp:
利用结构体储存下变量,按结束时间排序dp寻找最大价值
注意:
由于第i个事件可能与之前所有的都匹配失败,此时就应把之前最大的价值作为dp[i]的价值,
我这里没这样做,而是结束后扫描了一遍dp数组找到最大价值

#include<bits/stdc++.h>
using namespace std;
int dp[105];
struct tim
{
int s,e,w;
bool operator<(const tim &chs)const{
if(e!=chs.e) return e<chs.e;
else return s<chs.s;
}
};
int main()
{
int n,i,j,k,s,e,w,p,t;
cin>>t;
while(t--){tim m[30];
int maxn=-1;
memset(dp,0,sizeof(dp));
cin>>n;
m[0].e=0;
for(i=1;i<=n;++i)
cin>>m[i].s>>m[i].e>>m[i].w;
sort(m+1,m+1+n);
for(i=1;i<=n;++i){
int pd=0;
for(j=0;j<i;++j)
if(m[i].s>=m[j].e&&pd<dp[j]) pd=dp[j];
dp[i]=pd+m[i].w;
}
for(i=1;i<=n;++i) maxn=max(dp[i],maxn);
cout<<maxn<<endl;
}
return 0;
}

zzuli1985(dp/水dfs郑轻比赛)的更多相关文章

  1. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  2. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  3. HDU 1501 Zipper(DP,DFS)

    意甲冠军  是否可以由串来推断a,b字符不改变其相对为了获取字符串的组合c 本题有两种解法  DP或者DFS 考虑DP  令d[i][j]表示是否能有a的前i个字符和b的前j个字符组合得到c的前i+j ...

  4. Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题

    除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...

  5. Codeforces Round #358 (Div. 2) A B C 水 水 dfs序+dp

    A. Alyona and Numbers time limit per test 1 second memory limit per test 256 megabytes input standar ...

  6. 【DP水题】投票问题(二)

    投票问题(一) [试题描述] 欧阳文和欧阳武竞选学联主席,汪梁森负责唱票,共有m+n张,结果欧阳文获胜,已知欧阳文和欧阳武分别获得 m 张票和 n 张票(m>n).现在请你计算在唱票过程中欧阳文 ...

  7. 【BZOJ-1060】时态同步 树形DP (DFS爆搜)

    1060: [ZJOI2007]时态同步 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2101  Solved: 595[Submit][Statu ...

  8. dp水题 序列问题 (9道)

    9道题.A了8道,A题看题解也没弄懂怎么维护m段子序列的,过一段时间再回来看看     dp试水 47:56:23 125:00:00   Overview Problem Status Rank ( ...

  9. 【BZOJ】1270: [BeijingWc2008]雷涛的小猫(DP+水题)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1270 这完全是一眼题啊,但是n^2的时间挺感人.(n^2一下的级别请大神们赐教,我还没学多少dp优化 ...

随机推荐

  1. 解决input标签placeholder属性浏览器兼容性问题的一种方法

    为文本框input添加文字输入提示,H5为input提供了一个placeholder属性.在支持H5的浏览器中,用此属性设置输入提示,简单方便,但是对于IE8以下版本,都不支持placeholder属 ...

  2. 前端路由以及浏览器回退,hash & history & location

    一.前言 其实不止一次想监听浏览器的回退方法,比如 在 list.html 页滚动加载了几页列表,点到 detail.html 看详情,反回来时又得重新加载几页 H5 有背景音乐的,跳页就得重新放,体 ...

  3. python构造栈结构

    栈:是一种先进后出的数据结构:本片文章,我们用python的面向对象来构造这样的数据结构. 栈中的每一个数据除了存储当前的数值外,还存储着当前数值下一个数据的类型(注意不是下一个数据的数值). cla ...

  4. 01: git & github

    目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 常见版本管理工具介绍 及 版本工具作用 1.2 git.GitHub和SVN比较 1.3 本地gi ...

  5. HTML5交互性图表库

    官网链接:https://www.hcharts.cn/ 出品公司链接:https://jianshukeji.com/ Highcharts Highstock highmaps

  6. QTQuick控件基础(2)

    import QtQuick 2.2import QtQuick.Controls 1.2import QtQuick.Window 2.1ApplicationWindow {    visible ...

  7. Adobe漏洞攻击

    Adobe漏洞攻击 windows ip 开启msfconsole 进入攻击模块 设置攻击载荷payload 设置相关参数 确定需要修改的参数 exploit生成5303.pdf 将pdf复制到靶机里 ...

  8. Java中线程出现Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 解决方法

    代码 package thread; public class TestChongNeng { public static void main(String[] args) { Thread t1 = ...

  9. C#学习笔记(十八):数据结构和泛型

    数据结构 只有这四种 a.集合:数据之间没有特定的关系 b.线性结构:数据之间有一对一的前后联系 c.树形结构:数据之间有一对多的关系,一个父节点有多个子节点,一个子节点只能有一个父节点 d.图状结构 ...

  10. PTA第三次上机

    5-1 #include <iostream> #include <cstdlib> #include <string.h> using namespace std ...