codevs1217 借教室 题解

题意

/中文题惯例不翻译

笺释

这道题确实不好过,内存方面和时间方面要求都相当严格呢。
思路的话无非二分人数,最小第一个人就要取消掉,最大的话m个人都能满足,并且第i个人能满足的话,i个人之前的一定也满足(否则在之前就取消掉了)。
但是如何确定第i个人能否满足呢,这道题用到的是差分数组的方法,

int check(int x)
{int ans=0;//pre[i]:差分数组 里面存的是能让ans代表第i天所需教室的数字for(int i=1;i<=n;i++){pre[i]=0;}for(int i=1;i<=x;i++){pre[s[i]]+=d[i];pre[t[i]+1]-=d[i];}for(int i=1;i<=n;i++){ans+=pre[i];if(ans>r[i]){return 0;}}return 1;
}

具体想表达的感觉就已经完全被表达出来了,不知道能不能说明白呢,时常为此感到困惑。
互相理解果然是需要双方的共同努力才行的呢,不过对于我来说,也确实存在着诸多表达方面的问题,不过自己能否理解自己呢,我想,总是要让自己多多少少或是完完全全地理解自己才行的。

完整代码

#include<bits/stdc++.h>
#define MAXN 1000005
using namespace std;
int n,m;
int r[MAXN];
int d[MAXN],s[MAXN],t[MAXN];
int pre[MAXN];
int check(int x)
{int ans=0;//pre[i]:差分前缀数组 里面存的是能让ans代表第i天所需教室的数字for(int i=1;i<=n;i++){pre[i]=0;}for(int i=1;i<=x;i++){pre[s[i]]+=d[i];pre[t[i]+1]-=d[i];}for(int i=1;i<=n;i++){ans+=pre[i];//  printf("%d %d\n",ans,i);if(ans>r[i]){return 0;}}return 1;
}
int solve()
{int l=1;int r=m;while(l<=r){//printf("%d %d\n",l,r);int mid=(l+r)>>1;if(check(mid)){l=mid+1;}else{r=mid-1;}}if(l<=m){printf("-1\n%d\n",l);}else{printf("0\n");}return 0;
}
int main()
{scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&r[i]);}for(int i=1;i<=m;i++){scanf("%d %d %d",&d[i],&s[i],&t[i]);}solve();
}

转载于:https://www.cnblogs.com/SoniciSika/p/9034208.html

codevs1217 借教室 题解相关推荐

  1. tyvj 2075 借教室 题解

    P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...

  2. [NOIP2012] 借教室

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

  3. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

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

  4. 【每日一题】7月1日题目精讲 借教室

    来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 文章目录 题目描述 题解: 差分: 二 ...

  5. 借教室(codevs 1217)

    1217 借教室 2012年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description ...

  6. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

  7. NOIP2012 D2 T2借教室

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

  8. P1083 借教室(差分+二分)

    https://www.luogu.org/problem/P1083 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教 ...

  9. 借教室(洛谷-P1083)

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

最新文章

  1. button 去掉原生边框
  2. peleenet测试
  3. 局域网ip地址不够用怎么解决?
  4. #1407 : 后缀数组二·重复旋律2 (不可重叠最长重复子串问题)
  5. Python断言方法:assert
  6. linux eclipse安装、新建并运行java程序
  7. mysql 事件 函数_MySQL 自定义函数和存储过程的使用
  8. 用perl发送http请求
  9. 在Array原型链上扩展remove,contain等方法所遇到的坑
  10. div+css页面布局实战
  11. TM1620芯片使用
  12. 怎么追学计算机的女生,怎样去追比较文静,不爱说话的女生!!!!!
  13. PCB板上的字母代表哪些元器件?一文看全!
  14. 零基础如何学 Web 前端开发?
  15. 常用视频质量评价库以及下载地址
  16. IT英语中英文对照:著名的软件产品
  17. status_breakpoint谷歌浏览器如何解决?
  18. idea激活码?学生如何白嫖使用idea?
  19. 数据管理系统之数据模型
  20. LinuxProbe学习笔记(十三)

热门文章

  1. SQL进阶五:SQL完整性约束
  2. 【.Net MF网络开发板研究-01】IP地址设定及简单web演示
  3. getvalue函数怎么使用_Java中的构造函数——通过示例学习Java编程(14)
  4. [bzoj2467][中山市选2010]生成树_快速幂
  5. Java并发编程(十四)并发容器类
  6. Servlet中使用getInputStream进行文件上传
  7. 阿里云+wordpress搭建个人博客网站【小白专用的图文教程】
  8. 【加】德鲁·卡宾森 - 质量效应3:天罚(2013年6月26日)
  9. SQL Cookbook:一、检索记录(1)从表中检索所有行和列
  10. 我的一些小想法(聊以一笑……)