徐州联赛选拔赛 - 高效安排人员

题目链接

思路:这是一道动态规划的题目,估计好多人去用贪心算法了,反正比赛时我想的贪心策略很容易找到反例Orz。题目就相当于选取一些区间去覆盖[0,T],每个区间有个价格,要求总价格最小。容易想到,如果覆盖[0,T]区间的价格是最小的,那么覆盖[0,T‘]的价格也必须是最小的,说明这个问题具有最优子结构性质。但是T的范围实在太大了,直接动态规划肯定是不行的。考虑到存在很多等效的时间点,我们可以把每个区间的时间离散化,但还保证他们的相对位置,这就把数据压缩到很小了,最多20W。然后对离散化后的时间进行动态规划,定义dp[i]表示覆盖[0,i]所需的最小费用,更新dp数组采用刷表法,如果i是某个区间的左端点,则对那个区间内的dp值进行更新:dp[j]=min(dp[j],dp[i]+v)。对于某些极端数据,这种做法是不能通过的,需要用线段树维护dp数组,就比较麻烦了,但好在OJ上并没有极端数据。

AC代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <vector>
 5 using namespace std;
 6
 7 const int inf = 1000000000;
 8 struct Car
 9 {
10     int l, r;
11     int v;
12 };
13 Car car[100010];
14 int x[200010];
15 int dp[200010];
16 vector<int> vec[200010];
17
18 int main()
19 {
20     int t;
21     scanf("%d", &t);
22     while (t--)
23     {
24         int n, t;
25         scanf("%d%d", &n, &t);
26         int cnt = 0;
27         for (int i = 0; i < n; i++)
28         {
29             scanf("%d%d%d", &car[i].l, &car[i].r, &car[i].v);
30             x[cnt++] = car[i].l;
31             x[cnt++] = car[i].r;
32         }
33         // 离散化时间
34         sort(x, x + cnt);
35         cnt = unique(x, x + cnt) - x;
36         for (int i = 0; i < n; i++)
37         {
38             car[i].l = lower_bound(x, x + cnt, car[i].l) - x;
39             car[i].r = lower_bound(x, x + cnt, car[i].r) - x;
40             // 由于起点为l的区间可能不止一个 所以这里采用vector存下所有起点为l的编号
41             vec[car[i].l].push_back(i);
42         }
43         // 初始化dp数组
44         fill(dp, dp + cnt, inf);
45         // 如果起点没有可能被覆盖直接输出无解
46         if (vec[0].size() == 0)
47         {
48             puts("-1");
49             continue;
50         }
51         for (int i = 0; i < vec[0].size(); i++)
52             for (int j = car[vec[0][i]].l; j <= car[vec[0][i]].r; j++)
53                 dp[j] = min(dp[j], car[vec[0][i]].v);
54         for (int i = 1; i < cnt; i++)
55         {
56             for (int j = 0; j < vec[i].size(); j++)
57                 for (int k = car[vec[i][j]].l + 1; k <= car[vec[i][j]].r; k++)
58                     dp[k] = min(dp[k], dp[i] + car[vec[i][j]].v);
59             vec[i].clear();
60         }
61         printf("%d\n", dp[cnt - 1] == inf ? -1 : dp[cnt - 1]);
62     }
63     return 0;
64 }
时间: 2024-07-28 20:53:04

徐州联赛选拔赛 - 高效安排人员的相关文章

徐州联赛选拔赛 - 判断能否构成树

题目链接 思路:每条边对总度的贡献都是2,所以如果形成了一棵树,那么边一定是n-1条,总度就是2(n-1).先把所有顶点的度加起来,判断是否等于2(n-1),如果不等,那一定就是Impossible了.但是相等就能断定能形成一棵树吗?来看看下面这个图 存在一个度为0的顶点,肯定就不能形成树咯.所以判断一下是否存在度为0的顶点就好了,注意只有一个顶点也是树哦. AC代码: 1 #include <cstdio> 2 3 int main() 4 { 5 int t, n, v; 6 scanf(

推特公司对软件工程师高效工作的建议-转载

“我们很难测量软件工程生产力,”推特公司工程效率部的技术总监彼得.塞贝尔说,“但是我们肯定能破坏它.” 在一场脸谱网举办的大会上,塞贝尔这样说道.这场大会集结了1800名来自约400家不同公司的软件工程师,他们开发的应用软件可能会被数百万甚至数十亿人使用.它讲述了一个关于推特公司软件进化升级的故事:一个有许多不同程序语言的babel,像Ruby, Java, and Scala,因为需要各类工程师一起协作,所以很难完成,但最后(大体上)完成了. “作为一个知道如何去升级软件的行业,我们也知道如何

目管理案例(二)

      如下是项目管理过程中遇到的问题,由于项目管理经验不是特别充足,所以难免在沟通的过程中存在一些冲突,记录本篇文章的目的就是能够记住以前犯的错误,为以后项目管理打下更好的基础__牲口TT 项目管理案例二: 参与人员:业务领导,业务1,科技领导,科技1 交互工具:邮件 事件起因:系统中需要接入一家商户,业务对于提供给商户的内容不满意,引发了争议. 科技1发送邮件: 业务1, 运营中心的用户名和密码如下: ***** ***** 商城测试URL ***** 商户中心URL ***** 运营中

阿里上市,他们如是说

阿里成功上市,恭喜阿里!恭喜马云!!! 阿里上市之日,上台敲钟的并不是马云及阿里巴巴的高管或投资人,而是8张陌生而年轻的面孔.他们分别是两位淘宝网店店主.快递员.用户代表.电商服务商.淘女郎网络模特和云客服,还有一位是来自美国的农场主皮特·维尔布鲁格(他果园中的车厘子通过天猫卖到了中国). 对这样的安排,马云说:"我们努力了十五年,不是为了让我们自己站在台上,而是为了让他们站在那里.因为我们相信,只有他们成功,我们才会成功." 19日,阿里巴巴官方微博发布并置顶了这条微博. 笔者认为,

大型网站技术架构 笔记

大型网站架构演化 特点: 高并发.大流量 高可用 海量数据 用户分布广泛.网络情况复杂 安全环境恶劣 需求快速变更.发布频繁 渐进式开发 演化发展历程 0. 演变原因 在现有架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小  一个机器放不下 数据的索引(B+ Tree)一个机器的内存放不下 访问量(读写混合)一个实例不能承受 只有当以上3件事情任何一件或多件满足时,我们才需要考虑往下一级演变. 1. 初始阶段: 应用程序.数据库.文件都在一台服务器,如常用的Linux+PHP+Apach

培训机构软件招生哪家好?

汇汇吧投票软件--淡季招生方案 (一)活动背景 教育培训机构进入招生淡季: 机构运营基本维持稳定平衡,无市场刺激局面出现: 机构急于寻求策略刺激市场,苦于无方: 需招生蓄水.需刺激续班.需加强学员粘性.需调动学员积极性! (二)适用群体 各大教育培训机构,学校.幼儿园.托管单位 (三)适用时间 除以下时间之外所有时间 春(春季开学后3周,共计20天左右) 夏(暑假前后20天,共计40天左右) 秋(秋季开学后4周,共计30天左右) 冬(寒假前1周,寒假后2周,共计30天左右,北方延长10天) (四

精细化财务管理案例-蒙牛

6年前看过华为公司的网上财务报销流程,那个时候只有财务报销过程实现了流程化和精细化管理,华为为了满足分布在各地的员工的快速报销要求推行网上报销,但报销单据还是要你自己手动粘贴好了给财务审核的: 3年前看过百度公司的财务报销流程需求,报销的种种审批过程这里就不多说了,重点是所需要的发票是可以由员工本人提交给财务,财务集中扫描后提交到审批流程中,如果审批过程中发现图像扫描不合格或者有问题,还需要进行重新扫描.再审批.这个项目因为种种原因没接到,但从客户需求可以看到,网上报销已经成为一种趋势,客户甚至

湖南3名领导干部在金融活动中谋取私利被追责lz

"与其他国家对比,中国当前特大城市人口占比仍比较低.至今回想起来,黑海实习生活仍如一张张幻灯片,鲜活地在我脑海中浮现.同时,民众的阅读量不够,阅读快餐化现象普遍,尤其是青少年的阅读量正不断下降.既然以调整需求为主的政策方向存在问题,纠正的办法就是扭转方向,着力提升供给贡献.三年后,并购基金将有自由处置权,可以考虑直接让项目IPO或卖给其他公司大家都知道,有所谓"两只手",看不见的是市场的手,看得见的手是政府的手."这次你们可以看见我和他(金正恩)在一起了,"

Handler 和他的小伙伴们(上)

(一)初创 老张已过而立之年,踌躇满志,渴望浪迹互联网的英雄豪情始终在内心澎湃,终于,他走出了这一步,成立了一家互联网公司. 老张凭借着这几年在互联网领域的积累和个人魅力,很快就组建了一个技术团队,作为技术出身的老张很重视公司的技术发展,因此重金请来了一位技术总监,关于技术方面的工作,老张和CTO事必躬亲.于是,形成了这样一种组织架构: 老张的团队 在这样组织架构中,老张为每个职能的定位和要求是这样子的: 自己(UI-Thread):负责融资.战略.在互联网上撕逼.公司管理等,全身心投入公司,并