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_ ...
随机推荐
- 文本格式ANSI,Unicode等有什么区别
首先DBCS是亚洲的字符集,包含了ANSI,ANSI也就是ASCII值为0-255之间的字符,当字符为ANSI时,存放于文件中占用的是一个字节.如果是非ANSI的呢,则占用两字节.用VB的ASC函数可 ...
- android打成apk
用的软件是这个 D:\软件备份\adt-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\eclipse file-- ...
- hdu 4463 Outlets(最小生成树)
Outlets Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submi ...
- java 方法的重载的语法规则
class People { float hello(int a,int b) { return a+b; } float hello(long a,int b) { return a-b; } do ...
- nodejs实践-代码组织
nodejs实践-代码组织 laiqun@msn.cn Contents 1. 代码组织 1. 代码组织 更新版本 npm install -g n n latest 项目文件组织 MVC 前后端代码 ...
- MySQL5.1升级5.6后,执行grant出错:ERROR 2013 (HY000): Lost connection to MySQL server during query【转载】
转载: MySQL5.5升级5.6后,执行grant出错:ERROR 2013 (HY000): Lost connection to -mysql教程-数据库-壹聚教程网http://www.111 ...
- linux proxy
ALL_PROXY=socks://192.168.2.1:3128/ HTTPS_PROXY=https://192.168.2.1:3128/HTTP_PROXY=http://192.168.2 ...
- 饥饿的牛(hunger)
饥饿的牛(hunger) 题目描述 牛在饲料槽前排好了队.饲料槽依次用1到n(1≤n≤2000)编号.每天晚上,一头幸运的牛根据约翰的规则,吃其中一些槽里的饲料.约翰提供B个区间的清单.一个区间是一对 ...
- UCI机器学习数据库
UC Irvine Machine Learning Repository:UCI指的是加州大学欧文分校.UCI机器学习库主要是收集的机器学习领域的一些相关数据集和数据生成器,可以用来做一些基本的实验 ...
- Super Jumping! Jumping! Jumping! 基础DP
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...