[离散化]人潮最多的時段( Interval Partitioning Problem )

範例:人潮最多的時段( Interval Partitioning Problem )

一群訪客參加宴會,我們詢問到每一位訪客的進場時刻與出場時刻,請問宴會現場擠進最多人的時段。

換個角度想,想像會場門口裝著一支監視器。有訪客進入,會場就多一人;有訪客離開,會場就少一人。如此就很容易統計會場人數。遞增的標的是時刻,而不是訪客。

【註:這個技巧在中文網路上暱稱為「離散化」。】

  1. struct Guest {int arrival, leave;} g[10];
  2. bool cmp(const int& i, const int& j)
  3. {
  4. return abs(i) < abs(j);
  5. }
  6. void maximum_guest()
  7. {
  8. vector<int> time;
  9. for (int i=0; i<10; ++i)
  10. {
  11. time.push_back(+g[i].arrival);
  12. time.push_back(-g[i].leave);
  13. }
  14. sort(time.begin(), time.end(), cmp);
  15. int n = 0, maximum = 0;
  16. for (int i=0; i<time.size(); ++i)
  17. {
  18. if (time[i] >= 0)
  19. n++;
  20. else
  21. n--;
  22. maximum = max(maximum, n);
  23. }
  24. cout << "人潮最多的時段有" << maximum << "人";
  25. }

此處僅找出人數。找出人潮最多的時段,就留給各位自行嘗試吧。

UVa 688 972 10613 10585 10963

UVa 308 837

时间: 2024-10-20 20:45:35

[离散化]人潮最多的時段( Interval Partitioning Problem )的相关文章

笔试算法题(42):线段树(区间树,Interval Tree)

议题:线段树(Interval Tree) 分析: 线段树是一种二叉搜索树,将一个大区间划分成单元区间,每个单元区间对应一个叶子节点:内部节点对应部分区间,如对于一个内部节点[a, b]而言,其左子节点表示的区间为[a, (a+b)/2],其右子节点表示的区间为[1+(a+b)/2, b]: 对于区间长度为N的线段树,由于其单元节点都是[a, a]的叶子节点,所以其叶子节点数为N,并且整棵树为平衡二叉树,所以总节点数为2N-1,树的深度为log(N)+1: 插入操作:将一条线段[a, b]插入到

poj3277--City Horizon(线段树+离散化+扫描线)

City Horizon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16206   Accepted: 4414 Description Farmer John has taken his cows on a trip to the city! As the sun sets, the cows gaze at the city horizon and observe the beautiful silhouette

HDU 5381(The sum of gcd-莫队算法解决区间段gcd的和)

The sum of gcd Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 784    Accepted Submission(s): 335 Problem Description You have an array A,the length of A is n Let f(l,r)=∑ri=l∑rj=igcd(ai,ai+1..

POJ 3613 Cow Relays (Floyd + 矩阵快速幂 + 离散化 神题!)

Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5611   Accepted: 2209 Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race using the T (2 ≤ T ≤ 100) cow trails throughout

Oracle 11g 新特性:自动创建分区(Interval Partition)

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par

【译】x86程序员手册16-5.3联合使用段与分页转换

5.3 Combining Segment and Page Translation  联合使用段与分页转换 Figure 5-12 combines Figure 5-2 and Figure 5-9 to summarize both phases of the transformation from a logical address to a physical address when paging is enabled. By appropriate choice of options

Oracle 11g新特性 Interval Partition

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par

好站、好書、好詞推薦 不定時更新

http://oomusou.io/refactor/refactor-in-action/ 漸進式網路應用 https://medium.com/@murtazazaidi_/native-mobile-apps-vs-react-native-apps-vs-progressive-web-apps-be81b314cdec 開發者RoadMap https://github.com/kamranahmedse/developer-roadmap 其他技術性名詞紀錄 (慢慢整理 太多技術名詞

场景4 Data Warehouse Management 数据仓库

parallel 4 100% —> 必须获得指定的4个并行度,如果获得的进程个数小于设置的并行度个数,则操作失败 parallel_min_percent : 若设为100,则如上 ILM :信息生命周期管理 将休眠的数据高压缩放在低成本通道上(如磁带机) 将低访问量的数据低压缩放在访问效率低的设备上 将高访问数据不作压缩放在访问效率高的设备上 分区 (官方文档VLDB and Partioning Guide) 单张表容量大于2G, 则建议分区 1. 每个分区为一个独立的segment, 单