1351:面朝大海 春暖花开 [ 数据加强版 ]
来源:互联网 发布:c语言设计 鸡兔同笼 编辑:程序博客网 时间:2024/04/30 10:11
1351:面朝大海 春暖花开 [ 数据加强版 ]
难度: 尊贵铂金 时间限制: 1000MS 空间限制: 64MB 提交数: 566 通过数: 19
题目描述:
依然选择那些大晴天的日子,再一次行走在孤单的海岸线,静静地种更多的花给自己看~
我们假设把海岸线分为n块,每块的分别标记为1...n,每块都可以种花,每次种花可以选择某个[left,right]的闭区间,每块种上一朵花.经过m次种花操作后,根据输入的区间,求该区间内花的总数.
输入描述:
多组输入
对每组输入,第一行有两个整数n m,分别代表总块数和种花的次数.(1 <= n, m <= 100000)
接下来的m行, 每行两个整数 L,R 代表[L,R]区间内每块种上一朵花.(1 <= L <= R <= n)
最后一行,输入两个整数 a,b 代表最后要查询的花的总数的区间.(1 <= a <= b <= n)
输出描述:
对每组输入,输出区间[a,b]内花的总数
样例输入:
5 2
1 5
1 2
2 3
样例输出:
3
#include <iostream>#include <algorithm> using namespace std;int main() {long int m = 0, n = 0;while (cin >> n >> m) { long int sum = 0,a = 0, b = 0, i; long int *num1 = new long int[m+1]; long int *num2 = new long int[m+1];for (i = 1; i <= m; i++) { //种花 cin >> num1[i] >> num2[i];} cin >> a >> b;for (i = 1; i <= m; i++) {if(num1[i] <= b && num2[i] >= a) { //慢慢逼近 取交集 sum += min(num2[i],b) - max(num1[i],a) + 1;}}cout << sum << endl; delete[] num1; delete[] num2;}return 0;}注:加强版要对基础版的代码进行优化,基础版的复杂度为平方次,将种花的区间以及数花的区间取交集,这样复杂度就成了一次方,就不会出现超时问题。
听说用树状数组和线段树更好,可是我这边的算法还没看懂,等看懂了,必定改进。。还是书看少了。哈哈哈哈哈
阅读全文
0 0
- 1351:面朝大海 春暖花开 [ 数据加强版 ]
- 1351:面朝大海 春暖花开 [ 数据加强版 ]
- 1350:面朝大海 春暖花开 [ 基础版 ]
- 1350:面朝大海 春暖花开 [ 基础版 ]
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海 春暖花开
- [转载]面朝大海 春暖花开
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海,春暖花开
- 面朝大海 春暖花开
- 面朝大海 春暖花开
- 面朝大海, 春暖花开
- 面朝大海 春暖花开
- 大数据分析,一文挖掘天猫双11各种值得关注的消费习惯、民生等信息!
- L1-043. 阅览室
- 谁将会杀死 Java?
- 1682亿背后丨一分钟看懂天猫双11
- VS2015使用经验总结
- 1351:面朝大海 春暖花开 [ 数据加强版 ]
- GitHub 上 10 月份最火的开源项目
- 面向资源的架构
- HDU 6237 A Simple Stone Game
- SpringBoot配置文件application.yml (application.properties)
- svn Checksum mismatch ………… 问题
- AD转换设计中的基本问题整理
- 51Nod 1202 子序列个数 线性DP(套路)
- 容斥原理---概念介绍