题目传送门

 1 /*
 2     贪心:官方题解:
 3         首先我们考虑如何选择最左边的一个区间
 4         假设最左边的区间标号是i, 那选择的另外两个区间的左端点必定要大于Ri
 5         若存在i之外的j, 满足Rj<Ri, 那么另外两个区间的选择余地必定不会减少
 6         因此,为了使另外两个区间有尽可能多的选择,我们选择一个右端点最小的区间作为最左边的区间是最好的
 7         同理,我们选择一个左端点最大的区间作为最右边的区间,也将提供最多的选择
 8         确定了这两个区间之后,只需判断是否存在一个区间位于它们中间且不交叉即可
 9         本题的取模值十分特殊,用unsigned int的自然溢出可以达到同样的效果
10         时间复杂度O(N)
11     解题关键:if (mn_r < node[i].l && node[i].r < mx_l),存在这样的一个区间满足条件就YES!
12     反思:首先没有想到贪心的投机方法,用暴力DFS搜索超时,unsigned int的范围: 0 ~ 4294967295 这个取模自然溢出也是醉了:)
13     补充:HDOJ 2037 今年暑假不AC 升级版
14 */
15 #include <cstdio>
16 #include <iostream>
17 #include <algorithm>
18 #include <cstring>
19 #include <string>
20 #include <map>
21 #include <vector>
22 #include <set>
23 #include <cmath>
24 #include <queue>
25 using namespace std;
26 const int MAXN = 10000000 + 10;
27 const long long  INF = 0x3f3f3f3f;
28 struct Node
29 {
30     unsigned int l, r;
31 }node[MAXN];
32
33 int main(void)        //赛码 1001 Movie
34 {
35     //freopen ("A.in", "r", stdin);
36
37     int t, n;
38     unsigned int a, b, c, d;
39     scanf ("%d", &t);
40     while (t--)
41     {
42         scanf ("%d%d%d%d%d%d%d", &n, &node[1].l, &node[1].r, &a, &b, &c, &d);
43
44         for (int i=2; i<=n; ++i)
45         {
46             node[i].l = node[i-1].l * a + b;
47             node[i].r = node[i-1].r * c + d;
48         }
49         for (int i=1; i<=n; i++)
50         {
51             if (node[i].l > node[i].r)    swap (node[i].l, node[i].r);
52         }
53
54         unsigned int mn_r = 4294967295UL, mx_l = 0;
55         for (int i=1; i<=n; ++i)
56         {
57             if (mn_r > node[i].r)    mn_r = node[i].r;
58             if (mx_l < node[i].l)    mx_l = node[i].l;
59         }
60
61         if (mn_r > mx_l)
62         {
63             puts ("NO");    continue;
64         }
65
66         bool flag = false;
67         for (int i=1; i<=n; ++i)
68         {
69             if (mn_r < node[i].l && node[i].r < mx_l)
70             {
71                 flag = true;    puts ("YES");    break;
72             }
73         }
74         if (!flag)    puts ("NO");
75     }
76
77     return 0;
78 }

 1 /*
 2     贪心水题
 3 */
 4 #include <cstdio>
 5 #include <iostream>
 6 #include <algorithm>
 7 using namespace std;
 8
 9 const int MAXN = 1e2 + 10;
10 const int INF = 0x3f3f3f3f;
11 struct Node
12 {
13     int l, r;
14 }node[MAXN];
15
16 bool cmp(Node x, Node y)
17 {
18     if (x.r == y.r)    return x.l < y.l;
19
20     return x.r < y.r;
21 }
22
23 int main(void)        //HDOJ 2037 今年暑假不AC
24 {
25     //freopen ("HDOJ_2037.in", "r", stdin);
26
27     int n;
28     while (scanf ("%d", &n) == 1)
29     {
30         if (n == 0)    break;
31
32         if (n == 1)
33         {
34             puts ("1");        continue;
35         }
36
37         for (int i=1; i<=n; ++i)
38         {
39             scanf ("%d%d", &node[i].l, &node[i].r);
40             if (node[i].l > node[i].r)    swap (node[i].l, node[i].r);
41         }
42
43         sort (node+1, node+1+n, cmp);
44
45         int cnt = 1;
46         int tmp = node[1].r;
47         for (int i=2; i<=n; ++i)
48         {
49             if (node[i].l >= tmp)
50             {
51                 tmp = node[i].r;    ++cnt;
52             }
53         }
54
55         printf ("%d\n", cnt);
56     }
57
58     return 0;
59 }

HDOJ 2037 今年暑假不AC

转载于:https://www.cnblogs.com/Running-Time/p/4473917.html

贪心 赛码 1001 Movie相关推荐

  1. 赛码网输入输出总结+真题演练

    赛码网输入输出总结 前言 类型一:测试组数不固定,每组三行数据 踩坑记录1 踩坑记录2 类型2 测试组数不定,输入数据中有指定行数的多行输入(赛码网找老乡题最完美答案) 类型三:一组数据,有指定行数的 ...

  2. 赛码浪潮笔试题库软件实施岗位_赛码 -HRTechChina中国人力资源科技-向上的力量!...

    "赋能数据,丈量未来"互联网校园招聘交流年会暨赛码IT人才数据白皮书发布会在京成功举办 1月9日由中智赛码主办的"赋能数据丈量未来-互联网校园招聘交流年会暨赛码IT人才数 ...

  3. 赛码网算法: 上台阶 ( python3实现 、c实现)

    上台阶 题目描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法. 输入输入数据首先包含一个整数n(1<=n<=1 ...

  4. 赛码网算法: 军训队列( python实现 )

    军训队列 题目描述 某大学开学进行军训队列训练,将学生从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列剩下的依次向前靠拢,再从头开始进行一至三报数,凡报到三的 ...

  5. 赛码行测题库_京东财务人员面试经验|面试题 - 职朋职业圈

    面试过程: .网申 不得不说,毕竟互联网公司,网申界面设计的比一些知名外企人性化太多,你边填写就可以边保存,完全不要担心突然网卡了啥都没了. (吐槽一下百威英博,我是借了一台windows才顺利填完网 ...

  6. 牛客网赛码网 输入输出格式

    目录 牛客网&赛码网输入输出 牛客网 单行输入 多行输入,每一行是一个测试样例 多个测试用例,每个测试用例有多行 赛码网 单个输入,单个输出 单行多个输入,单行多个输出,空格分割 多个测试案例 ...

  7. 牛客网赛码网输入输出总结(python版)

    1. 单行输入: n, m = map(int, sys.stdin.readline().strip().split()) 对该行中所有元素取整型后赋给等式左边若干参数 2. 多行输入: 先获取第一 ...

  8. 牛客网赛码网 输入输出格式 pythonC++

    牛客网&赛码网 输入输出格式 python&C++ Note: 你的程序需要stdin(标准输入)读取输入,然后stdout(标准输出)来打印结果,举个例子,你可以使用c语言的scan ...

  9. 【赛码网 牛客网】输入输出总结(python版)

    1. 单行输入 n, m = map(int, sys.stdin.readline().strip().split()) 对该行中所有元素取整型后赋给等式左边若干参数 2. 多行输入: 先获取第一行 ...

最新文章

  1. .net core在vs开发环境下脱离iis运行
  2. Linux内核学习笔记
  3. HDU 1232 -畅通工程(并查集)
  4. 2009设计大餐 Adobe CS4 全集下载
  5. How to make a Logical Volume ON AIX5.3
  6. XML与web开发-01- 在页面显示和 XML DOM 解析
  7. 【C#】byte[]数据转化相关操作
  8. 用python建立三元一次方程_python简单的三元一次方程求解实例
  9. instantclient19\12\11版本下载
  10. 【毕业设计】物联网智能温控风扇设计与实现 - stm32 单片机 嵌入式
  11. mdf导入虚拟主机mysql_MYSQL导入mdf文件
  12. oracle实例由,Oracle 数据库的实例由( )组成
  13. 《ChatGPT》自动写代码、写作文,使用教程来了
  14. PostgreSQL基础(概念篇)
  15. 哆啦A梦的超级计算机,哆啦A梦的体内究竟有什么?其实你真的低估了这个蓝胖子...
  16. 向量中断、中断向量、向量地址3个概念是什么关系?
  17. 英雄会第一届在线编程大赛解题思路
  18. c语言入门篇:注释定界符详解
  19. vue点击图片查看大图使用插件 vue-photo-preview
  20. 张长水主任当选2018年IEEE Fellow!中国大陆17位当选者清华占了5位 !(附完整名单)

热门文章

  1. C++面试题:多态,虚函数,纯虚函数
  2. Java基础篇:简单介绍一下final
  3. 基于OpenCV的计算机视觉入门(2)图片几何变换入门
  4. python generator与coroutine
  5. Android-动画-view 动画笔记
  6. [BZOJ3684]大朋友和多叉树
  7. WdatePicker日历控件用法
  8. weblogic 集群配置
  9. 创建ServiceArea
  10. 我的2013——不平凡的第一次