题目:https://codeforces.com/gym/101908/problem/F

题意:给你n个舞台,每个舞台有很多个节目,每个节目有个开始时间,结束时间,价值,每个舞台至少出演过一个节目,所有舞台同一时刻只能一个舞台演节目,求怎么安排节目有最大价值

思路:首先舞台数只有10,而且我们必须访问每个舞台至少一次,很明显是个状态   1<<10 ,分别代表每个舞台现在演过节目没有,然后很明显我们还有有一个区间状态。

如果题目没有要求每个舞台必须演一次的话,很明显这个问题我们就可以直接按左端点排序,dp[end]=max(dp[1-begin]+val,dp[end]),我们记录下1-begin的最大值,pre,然后我们就能轻松求出来。这题多了每个舞台访问一次的要求其实是一样的道理,我们每次用pre数组更新出每个状态j的区间里面最大值

dp[i][j]   代表 前i个节目    状态j (舞台是否表演过的情况)

pre[j][k]     代表 状态j        1-k区间的最大值是多少

#include<bits/stdc++.h>
#define maxn 1100
#define mod 1000000007
using namespace std;
typedef long long ll;
struct sss{
int id,val;
int be,ed;
}a[];
int q[];
int dp[maxn][maxn];
int pre[maxn][maxn<<];
int n,m,num,len;
int cmp(struct sss x,struct sss y){
if(x.be==y.be) return x.ed<y.ed;
return x.be<y.be;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&m);
for(int j=;j<m;j++){
scanf("%d%d%d",&a[num].be,&a[num].ed,&a[num].val);
q[++len]=a[num].be;
q[++len]=a[num].ed;
a[num++].id=i;
}
}
sort(q+,q+len+);
len=unique(q+,q+len+)-q-;
sort(a,a+num,cmp);
int flag=;
int mx=-;
int dex=;
int M=(<<n)-;
for(int i=;i<num;i++){
a[i].be=lower_bound(q+,q+len+,a[i].be)-q;
a[i].ed=lower_bound(q+,q+len+,a[i].ed)-q;
while(dex<=a[i].be){
for(int j=;j<=M;j++){
pre[j][dex]=max(pre[j][dex],pre[j][dex-]);
}
dex++;
}
int t=<<a[i].id;
dp[i][t]=a[i].val;
pre[t][a[i].ed]=max(pre[t][a[i].ed],a[i].val);
for(int j=;j<=M;j++){
if(pre[j][a[i].be])
dp[i][j|t]=max(dp[i][j|t],pre[j][a[i].be]+a[i].val);
}
for(int j=;j<=M;j++){
if(dp[i][j]) pre[j][a[i].ed]=max(pre[j][a[i].ed],dp[i][j]);
}
mx=max(mx,dp[i][M]);
} if(mx==) mx=-;
printf("%d",mx);
return ;
}

2018-2019 ACM-ICPC Brazil Subregional Programming Contest F. Music Festival的更多相关文章

  1. (寒假GYM开黑)2018-2019 ACM-ICPC Brazil Subregional Programming Contest

    layout: post title: 2018-2019 ACM-ICPC Brazil Subregional Programming Contest author: "luowenta ...

  2. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest PART (10/13)

    $$2018-2019 ACM-ICPC Brazil Subregional Programming Contest$$ \(A.Slackline\ Adventure\) \(B.Marbles ...

  3. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest (11/13)

    \(2019-2020\ ACM-ICPC\ Brazil\ Subregional\ Programming\ Contest\) \(A.Artwork\) 并查集,把检测区域能在一起的检测器放在 ...

  4. ACM ICPC, JUST Collegiate Programming Contest (2018) Solution

    A:Zero Array 题意:两种操作, 1 p v  将第p个位置的值改成v  2  查询最少的操作数使得所有数都变为0  操作为可以从原序列中选一个非0的数使得所有非0的数减去它,并且所有数不能 ...

  5. ACM ICPC, Amman Collegiate Programming Contest (2018) Solution

    Solution A:Careful Thief 题意:给出n个区间,每个区间的每个位置的权值都是v,然后找长度为k的区间,使得这个区间的所有位置的权值加起来最大,输出最大权值, 所有区间不重叠 思路 ...

  6. 2018-2019 ACM-ICPC Brazil Subregional Programming Contest

    A:留坑 B:二维sg函数,特判边界情况 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) / ...

  7. Gym.101908 Brazil Subregional Programming Contest(寒假自训第六场)

    这几天睡眠时间都不太够,室友晚上太会折腾了,感觉有点累,所以昨天的题解也没写,看晚上能不能补起来. B . Marbles 题意:给定N组数(xi,yi),玩家轮流操作,每次玩家可以选择其中一组对其操 ...

  8. 2013-2014 ACM-ICPC Brazil Subregional Programming Contest 题解

    [题目链接] 这场比赛题面英文都好长... ... A - Zero or One 模拟. #include <bits/stdc++.h> using namespace std; in ...

  9. Codeforces Gym101473 A.Zero or One (2013-2014 ACM-ICPC Brazil Subregional Programming Contest)

    代码: #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #i ...

随机推荐

  1. Jenkins使用四:Jenkins创建任务,实现代码有改动时,自动构建

    新建任务 指定在哪台节点运行 添加要监控的git地址和使用账号,此账号为设置节点时配置公私钥时设置的ssh登录账号 设置检查代码是否有变更的频率,每三分钟检查一次,如果检查到有变更就构建 修改文件再提 ...

  2. jmeter之cookies登录

    现在很多网站的登录都要验证码了,验证码的值是动态的,值不易获取.使用jmeter测试一个需要登录的接口就有困难,这时候,我们就可以使用cookies管理器来记住这个登录信息. 目录 1.jmeter的 ...

  3. SQL常用语句之数据库数据类型-篇幅2

    系统数据类型: 1.二进制数据类型      2.整数数据类型 3.浮点数据类型         4.精确小数数据类型 5.货币数据类型         6.日期/时间数据类型 7.字符数据类型    ...

  4. shell编程:awk基础

    语法格式: 一 awk 'BEGIN{}pattern{commands}END{}' file_name 二 standard output | awk 'BEGIN{}pattern{comman ...

  5. 2019牛客暑期多校训练营(第一场) - B - Integration - 数学

    https://ac.nowcoder.com/acm/contest/881/B https://www.cnblogs.com/zaq19970105/p/11210030.html 试图改写多项 ...

  6. CSRF相关

    CSRF原理 第一次获取页面的时候浏览器返回一个随机字符串,之后提交数据的时候需要把到这个字符串去提交,不然会报错 返回的时候还会把这个字符串放到cookie里面, 使用form提交时候: {% cs ...

  7. JVM(14)之 类加载机制

    开发十年,就只剩下这套架构体系了! >>>   从本篇博文开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要 ...

  8. 获取class的儿子,报错undefined

       var tds = document.getElementsByClassName("dv1")[0].children     console.log(tds) 因为cla ...

  9. Saying goodbye to Flash in Chrome一代人的回忆FLASH

    一早打开chorme就推送了这条FLASH将在2020年推出CHORME 想起了当年风靡全球的flash热潮,游戏视频动画,都由flash运行,最熟悉的童年游戏4399,小时候的天堂. 说起这个不得不 ...

  10. ES6新增关键字let与var的区别

    最近看了很多文章,偶然间看到ES6中新增了一个关键字 let ,它具有与 var 关键字相似的功能.一开始使用它时,发现它让我对之前一些习以为常的东西产生了怀疑. 下面先让我们看看它和 var 之间用 ...