这题骗分可以骗到满分(可能是数据不太强给强行过去了)

这道题如果是按照题意去模拟用循环去修改区间的话只有45分,正解是二分+差分数组,骗分也是差分数组但是没有使用二分,时间复杂度在最坏的情况下是O(n*m),数据良心并没有这种最坏的情况。

拿样例举例:

四天里,每一天的教室的可用数量为

2 5 4 3

读入订单,然后利用差分修改区间避免超时,不考虑教室的数量下限,修改后每一天的教室的可用数量为

0 -4 -5 -4

然后从第一天到最后一天遍历,如果当天的教室可用数量小于0,则当天的教室是不够用了的,模拟当天的情况,然后更新答案。

订单1:每天借两间,从第一天到第三天

订单2:每天借三间,从第二天到第四天

订单3:每天借四间,从第二天到第四天

第一天:0,不小于0

第二天:-4,小于0,模拟当天情况,原来的教室可用数量为5,从订单1到订单3模拟,第二天在订单1的区间内,教室的可用数量减去2,目前可用数量为3。 在订单2的区间内,可用数量减去3,目前可用数量变为0。 在订单3的区间内,可用数量减去4,目前可用数量为-4,在订单3时可用数量变为小于0,需要修改订单的订单为订单3,答案更新为3

第三天:-5,小于0,原来可用数量为4,在订单1的区间内,-2,可用数量变为2,在订单2的区间内,-3,可用数量变为-1,小于零,需要修改订单的订单为订单2,订单2的顺序在订单3之前,按照题意,先到先得,答案更新为2

第四天:………………(按照上面继续模拟)

骗分大法神奇qwq

贴上代码

 var
n,m,i,j,k,ans:longint;
r,d,s,t,a,b:array[..] of longint;
flag:boolean;
begin
readln(n,m);
for i:= to n do
read(r[i]); //读入每天的可用教室数量
for i:= to m do
begin
readln(d[i],s[i],t[i]); //读入订单
a[s[i]]:=a[s[i]]-d[i];
a[t[i]+]:=a[t[i]+]+d[i]; //差分数组预处理
end;
k:=;
for i:= to n do
begin
k:=k+a[i];
b[i]:=r[i]+k; //差分
end;
ans:=maxlongint; //ans初始化
flag:=true; //标记是否满足所有订单
for i:= to n do //枚举每天的可用教室
if b[i]< then //如果可用教室数量小于0
begin
flag:=false; //不可能满足所有订单
for j:= to m do
if (i<=t[j]) and (i>=s[j]) then //在订单j的区间内
if r[i]-d[j]< then //如果减去当前订单所需的教室数量小于0
begin
if j<ans then //如果小于ans,则更新ans
begin
ans:=j;
break;
end;
end
else
r[i]:=r[i]-d[j]; //减去当前订单所需的教室
end;
if flag then writeln('')
else
begin
writeln('-1');
writeln(ans);
end;
end.

NOIP2012提高组day2 T2借教室的更多相关文章

  1. NOIP2012 DAY2 T2借教室

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...

  2. 【未完成0.0】Noip2012提高组day2 解题报告

    第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...

  3. noip 2012 Day2 T2 借教室

    一.暴力简述 甩链接.jpeg 首先我们不难看出,这道题————并不是一道多难的题,因为显然,第一眼看题目时便很容易地想到暴力如何打:枚举每一种订单,然后针对每一种订单,对区间内的每一天进行修改(做减 ...

  4. 【DFS】【最短路】【spfa】【BFS】洛谷P2296 NOIP2014提高组 day2 T2 寻找道路

    存反图,从终点dfs一遍,记录下无法到达的点. 然后枚举这些记录的点,把他们的出边所连的点也全部记录. 以上这些点都是无法在最短路中出现的. 所以把两个端点都没被记录的边加进图里,跑spfa.BFS什 ...

  5. 洛谷 3959 宝藏 NOIP2017提高组Day2 T2

    [题解] 状压DP. f[i]表示现在的点是否连接的状态是i. #include<cstdio> #include<cstring> #include<algorithm ...

  6. 刷题总结——疫情控制(NOIP2012提高组)

    题目: 题目背景 NOIP2012 提高组 DAY2 试题. 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都 ...

  7. 18/9/16牛客网提高组Day2

    牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algor ...

  8. NOIP2012 提高组 Day 2

    http://www.cogs.pro/cogs/page/page.php?aid=16 期望得分:100+100+0=0 实际得分:100+20+0=120 T2线段树标记下传出错 T1 同余方程 ...

  9. GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】

    国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...

随机推荐

  1. Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

    测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

  2. Power BI行级别安全性(数据权限管理)

    自从PowerBI 的DAX 函数 支持username() 或 userprincipalname()的函数后,我们就可以在Power BI中实现根据用户的行级数据权限的控制. username() ...

  3. mybatis调用oracle存储过程的几个参考例子

    首先写一个存储过程: create or replace procedure p_syn_equipment_20161205 is sqlstr ); begin --清空表 sqlstr := ' ...

  4. stylus 实践

    音乐分享: Broken Back - <Halcyon Birds> —————————————————————————————————————————————————————————— ...

  5. [原创] f2fs文件系统源代码分析 —— 基于3.8内核 (一)

    作者:高翔 <esxgx@163.com>本文著作权归作者所有,请在转载引用时保留原文网址. 在全文开始,首先记录f2fs被3.8主线merge的mailing list:[GIT PUL ...

  6. VS code 代码高亮

    因为平时经常切换笔记本.家里台式机.工作台式机用 VS code,遂发现笔记本中的 javascript 不像台式机中对象和方法语法高亮,只有简单的关键词高亮.后来找到原因系主题设置.[文件]-[首选 ...

  7. Flask+SQLAlchemy+alembic+Flask-RESTful使用

    前言 其实准备把这篇删掉,先写Flask-restful相关的,后来想想大体框架还是先写出来,这两天踩了很多坑,有的谷歌也没有答案.一直摸索也总算是开始了. 正文 SQLAlchemy/alembic ...

  8. 【算法】BILSTM+CRF中的条件随机场

    BILSTM+CRF中的条件随机场 tensorflow中crf关键的两个函数是训练函数tf.contrib.crf.crf_log_likelihood和解码函数tf.contrib.crf.vit ...

  9. vertx的HttpServer模块

    Start HttpServer /** * 启动 HttpServer * multi instances 采用 synchronized防止线程安全问题 * addHandlers 方法是acto ...

  10. 操作Excel

    1.成面积计算(比如一块区域的数据统一除1000) (1).选一个空格单元格输入公式 回车 (2).复制改单元格 >选中所有要计算的面积 >右键 >选择性粘贴 >选择数值 &g ...