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_ ...
随机推荐
- 字段为空sql语句,设置当前模式
delete from t_corpinfo where CORPID='' and CORPNAME='' 该命令是删除字段为空的记录 SET CURRENT SCHEMA DB2INST1;
- PoolManager 简单使用
如图,创建空物体并命名 PoolManager,添加 脚本 spawn pool,并添加 如上图右边一些 参数,prefab为 Resources中 的预置体. 添加 空物体并 改名,如上图,并添加脚 ...
- monkeyrunner对比屏幕局部图像.getSubImage()
monkeyrunner对比屏幕局部图像.getSubImage() monkeyrunner执行测试时使用.takeSnapshot()截图,默认截取整个屏幕,包含了系统的状态栏.真实手机状态栏中包 ...
- openstack镜像如何在vmware 环境中运行
1.云镜像文件下载地址: http://sahara-files.mirantis.com/sahara-juno-spark-1.0.0-ubuntu-14.04.qcow2(安装有sahara-s ...
- nginx php版本隐藏
配置完一台服务器后,并不是就可以高枕无忧了,前不久刚刚爆发的PHP 5.3.9版本的漏洞也搞得人心惶惶,所以说经常关注安全公告并及时升级服务器也是必要的.一般来说,黑客攻击服务器的首要步骤就是收集信息 ...
- zf-关于分页的行数如何配置
公司的项目分页显示行数是在web.xml里配置的 对应的java 文件是 BaseAction 这个文件里面写的就是分页的代码
- CentOS 6.5 安装Suricata(with PF_RING & CUDA)
0.基础包 确保已安装 yum install mpfr cpp ppl cloog-ppl gcc kernel-devel pcre-devel libpcap-devel yum-plugin- ...
- UIView的alpha、hidden、opaque 深入
转载自:http://blog.csdn.net/wzzvictory/article/details/10076323 UIView的这几个属性让我困惑了好一阵子,通过翻看官方文档和stackove ...
- PAT (Advanced Level) 1044. Shopping in Mars (25)
双指针. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- HDU 3201 Build a Fence
水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...