FZU 2101 大三的美好时光
DP+离散化。
首先需要把时间离散化,剩下的就是简单DP。
还要判断哪些选修课与必修课时间有重合,我用了前缀和来处理。
注意:这题时间端点也不能重合。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std; const int maxn=+;
struct X
{
int t,L,R,v;
int tmpL,tmpR;
}p[maxn];
int n;
int lsh[*maxn],tot;
int dp[*maxn]; int flag[*maxn];
int sum[*maxn]; bool cmp(const X&a,const X&b)
{
return a.R<b.R;
} void read()
{
for(int i=;i<=n;i++)
scanf("%d%d%d%d",&p[i].t,&p[i].tmpL,&p[i].tmpR,&p[i].v);
} int Find(int x)
{
int ans=tot; int left=,right=tot-;
while(left<=right)
{
int mid=(left+right)/;
if(lsh[mid]>=x)
{
if(lsh[mid]==x) ans=min(ans,mid);
right=mid-;
}
else left=mid+;
} return ans+;
} void init()
{
memset(flag,,sizeof flag);
memset(sum,,sizeof flag);
memset(dp,,sizeof dp);
tot=;
} void work()
{
//离散化
for(int i=;i<=n;i++)
lsh[tot++]=p[i].tmpL,lsh[tot++]=p[i].tmpR;
sort(lsh,lsh+tot);
for(int i=;i<=n;i++)
p[i].L=Find(p[i].tmpL),p[i].R=Find(p[i].tmpR); //把必修课所在时间标为1,并处理前缀和,便于判断选修课是否与必修课冲突
for(int i=;i<=n;i++)
{
if(p[i].t) continue;
for(int j=p[i].L;j<=p[i].R;j++) flag[j]=;
}
for(int i=;i<=;i++) sum[i]=sum[i-]+flag[i]; sort(p+,p++n,cmp); int pos=;
for(int t=;t<=;t++)
{
dp[t]=dp[t-];
for(int j=pos;j<=n;j++)
{
if(p[j].R>t) {pos=j;break;}
if(p[j].t==) dp[p[j].R]=dp[p[j].L]+p[j].v;
else if(p[j].t==)
{
if(sum[p[j].R]-sum[p[j].L-]!=) continue;//如果与必修课时间有重合
dp[p[j].R]=max(dp[p[j].R],dp[p[j].L]+p[j].v);
}
}
} printf("%d\n",dp[]);
} int main()
{
while(~scanf("%d",&n))
{
read();
init();
work();
}
return ;
}
FZU 2101 大三的美好时光的更多相关文章
- 大三作品:不需要售货员的超市? Easy-Shopping超市导购系统
本来么,逛超市是一件很爽的事情,拉上父母孩子,推个大推车,一边聊一边买,然后开开心心的回家去. 可到了旺季,逛超市可就麻烦了,买东西人挤人,到结算的地方人山人海,一刷卡,我去,怎么这个卫生纸这么贵!这 ...
- 大三那年在某宝8块钱买的.NET视频决定了我的职业生涯
前言 谨以此文献给那些还在大学中迷茫的莘莘学子们! 韩愈在<师说>中提出了作为师者应该做的三件事:传道.授业.解惑. 1.传道:培养学生的道德观 2.授业:传授学生专业技能 3.解惑:解答 ...
- 大三CS狗一点想法
本文非技术文 十点半游戏的代码大概完成了1/3,想到今晚提早验收完汇编实验,还是副院长亲自验的,似乎很看好我的样子,然后问我的方向,导师和参加的项目.聊了几句后结束了对话,不禁又引发了我的一些思考. ...
- 重新执笔,已是大三!Jekyll自定义主题开发
前言 “一转眼忘了时间 丢了感觉 黑了世界 再逞强 再疯狂 也会伤 不知 不觉 后知 后觉 然后 发现 失去 知觉 ”——<一吻不天荒> 感言 时间是把双刃剑,什么解决不了,忧烦的,慢慢变 ...
- 2013ACM暑假集训总结-致将走上大三征途的我
回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...
- [置顶] 北漂的大三IT男(暂完)
今天是2013年8月9日,是我待在北京的最后一个晚上,今天我已经正式向公司提出辞职了,虽然公司已经答应从下个月起涨部分工资,但是我还是坚决的离开了,回想当时进公司的想法----------干了一个月后 ...
- 大三仍是Linux系统小白的我给大家讲讲学习历程
我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...
- 来自一个大三开学三周的huster的迷茫与失措
大三开学考研保研的话题开始多了起来.自从前天去听了一回谢长生教授的实验室宣讲会,回来直到现在都好像心头上压了些东西,喘不过气来.本来我就少与外界接触,加之我自己一个人主动学习的积极性也很是缺乏,所以当 ...
- springboot+bootstrap实现图书商城管理(大三下学期课程设计)
在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...
随机推荐
- php 代码编写的格式
1.代码标记 php程序可以使用<?php .... ?> 或 <? ..... ?> 来界定php代码,在html页面中嵌入纯变量是,可以使用<?= $variabl ...
- poll和select
都允许进程决定是否可以对一个或者多个打开的文件做非阻塞的读取或写入.这些调用也会阻塞进程,直到给定的文件描述符集合中的任何一个可读取或写入.常常用于那些要使用多个输入或输出流而又不会阻塞与其中任意一个 ...
- TriggerPrefab 拖拽物体
模拟经营类游戏 有一个特点,就是 拖拽物体.常见的有<帝国><红警><部落战争><凯撒大帝>等等 2d 拖拽 大部分都是 用 OnDrag 方法来 拖动 ...
- 2015年5月9日 student information management system
/*大作业SIMS*///头文件 #ifndef __FUNC_C__ #define __FUNC_C__ #include <stdio.h> #include <stdlib. ...
- elasticsearch使用jetty进行简单的权限控制
默认elasticsearch是使用netty作为http的容器,由于netty并没有权限模块,所以默认es没有任何的权限控制,直接通过http就可以进行任何操作,除非把http禁用.但如果你使用el ...
- 线关节(Line Joint)
package{ import Box2D.Common.Math.b2Vec2; import Box2D.Dynamics.b2Body; import Box2D.Dynamics.Joints ...
- CSS3中的skew()属性
刚开始接触CSS3的2D变换属性,就被这个skew()搞的一头雾水,不知道具体是怎么变化的! 研究了一会才发现,CSS3的斜切坐标系和数学中的坐标系完全不一样(设置斜切原点为左上角) <styl ...
- 转:LoadRunner中参数化技术详解
LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提 ...
- magento模板中XML与phtml关系 [四]
layout\catalogserch.xml 中声明的 as="topSearch" 被templ\page\html\header.phtml调用输出 echo $this-& ...
- PAT1014
Suppose a bank has N windows open for service. 一个银行有N个服务的窗口 There is a yellow line in front of the w ...