题目传送门

 /*
贪心:官方题解:
首先我们考虑如何选择最左边的一个区间
假设最左边的区间标号是i, 那选择的另外两个区间的左端点必定要大于Ri
若存在i之外的j, 满足Rj<Ri, 那么另外两个区间的选择余地必定不会减少
因此,为了使另外两个区间有尽可能多的选择,我们选择一个右端点最小的区间作为最左边的区间是最好的
同理,我们选择一个左端点最大的区间作为最右边的区间,也将提供最多的选择
确定了这两个区间之后,只需判断是否存在一个区间位于它们中间且不交叉即可
本题的取模值十分特殊,用unsigned int的自然溢出可以达到同样的效果
时间复杂度O(N)
解题关键:if (mn_r < node[i].l && node[i].r < mx_l),存在这样的一个区间满足条件就YES!
反思:首先没有想到贪心的投机方法,用暴力DFS搜索超时,unsigned int的范围: 0 ~ 4294967295 这个取模自然溢出也是醉了:)
补充:HDOJ 2037 今年暑假不AC 升级版
*/
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <cmath>
#include <queue>
using namespace std;
const int MAXN = + ;
const long long INF = 0x3f3f3f3f;
struct Node
{
unsigned int l, r;
}node[MAXN]; int main(void) //赛码 1001 Movie
{
//freopen ("A.in", "r", stdin); int t, n;
unsigned int a, b, c, d;
scanf ("%d", &t);
while (t--)
{
scanf ("%d%d%d%d%d%d%d", &n, &node[].l, &node[].r, &a, &b, &c, &d); for (int i=; i<=n; ++i)
{
node[i].l = node[i-].l * a + b;
node[i].r = node[i-].r * c + d;
}
for (int i=; i<=n; i++)
{
if (node[i].l > node[i].r) swap (node[i].l, node[i].r);
} unsigned int mn_r = 4294967295UL, mx_l = ;
for (int i=; i<=n; ++i)
{
if (mn_r > node[i].r) mn_r = node[i].r;
if (mx_l < node[i].l) mx_l = node[i].l;
} if (mn_r > mx_l)
{
puts ("NO"); continue;
} bool flag = false;
for (int i=; i<=n; ++i)
{
if (mn_r < node[i].l && node[i].r < mx_l)
{
flag = true; puts ("YES"); break;
}
}
if (!flag) puts ("NO");
} return ;
}

 /*
贪心水题
*/
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std; const int MAXN = 1e2 + ;
const int INF = 0x3f3f3f3f;
struct Node
{
int l, r;
}node[MAXN]; bool cmp(Node x, Node y)
{
if (x.r == y.r) return x.l < y.l; return x.r < y.r;
} int main(void) //HDOJ 2037 今年暑假不AC
{
//freopen ("HDOJ_2037.in", "r", stdin); int n;
while (scanf ("%d", &n) == )
{
if (n == ) break; if (n == )
{
puts (""); continue;
} for (int i=; i<=n; ++i)
{
scanf ("%d%d", &node[i].l, &node[i].r);
if (node[i].l > node[i].r) swap (node[i].l, node[i].r);
} sort (node+, node++n, cmp); int cnt = ;
int tmp = node[].r;
for (int i=; i<=n; ++i)
{
if (node[i].l >= tmp)
{
tmp = node[i].r; ++cnt;
}
} printf ("%d\n", cnt);
} return ;
}

HDOJ 2037 今年暑假不AC

贪心 赛码 1001 Movie的更多相关文章

  1. 并查集+拓扑排序 赛码 1009 Exploration

    题目传送门 /* 题意:无向图和有向图的混合图判环: 官方题解:首先对于所有的无向边,我们使用并查集将两边的点并起来,若一条边未合并之前, 两端的点已经处于同一个集合了,那么说明必定存在可行的环(因为 ...

  2. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  3. 数学 赛码 1010 GCD

    题目传送门 /* 数学:官方题解 首先,数组中每个元素至少是1 然后对于任意一个询问Li, Ri, Ansi, 说明Li ~ Ri中的元素必定是Ansi的倍数,那么只需将其与Ansi取最小公倍数即可 ...

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

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

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

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

  6. ACM 五一杭电赛码"BestCoder"杯中国大学生程序设计冠军赛小记

    对于这项曾经热爱的竞赛,不得不说这是我最后一年参加ACM比赛了,所以要珍惜每一次比赛的机会. 五一去杭电参加了赛码"BestCoder"杯中国大学生程序设计冠军赛,去的队伍包括了今 ...

  7. 【2018 CCPC网络赛】1001 - 优先队列&贪心

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6438 获得最大的利润,将元素依次入栈,期中只要碰到比队顶元素大的,就吧队顶元素卖出去,答案加上他们期中 ...

  8. 个人训练记录-赛码"bestcoder"杯中国大学生程序设计冠军赛

    A.Movie 题意是给n个线段,要求求出是否存在三个不相交的线段,是的话输出yes,否则输出no.根据贪心的想法,可以先找出右端点r'最小的线段,他是三条线段中最左的那条,再找出左端点l'最大的线段 ...

  9. 【JavaScript】赛码网前端笔试本地环境搭建

    参考:https://hoofoo.me/article/2017-04-11/%E8%B5%9B%E7%A0%81%E7%BD%91%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AF ...

随机推荐

  1. zstu.4194: 字符串匹配(kmp入门题&& 心得)

    4194: 字符串匹配 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 206  Solved: 78 Description 给你两个字符串A,B,请 ...

  2. 新手选择使用 Linux 桌面的七个注意点

    导读 刚接触Linux桌面的用户该如何选择一款合适的Linux桌面环境呢?如果你习惯使用Windows或OS X,那么一想到要选择就让人犯难,那么你又该如何在十几个主要的Linux桌面.几十个次要的当 ...

  3. QEMU-KVM中的多线程压缩迁移技术

    导读 目前的迁移技术,都是通过向QEMUFILE中直接写入裸内存数据来达到传送虚拟机的目的端,这种情况下,发送的数据量大,从而会导致更高的迁移时间(total time)和黑宕时间(downtime) ...

  4. UITableView 委托方法总结

    http://blog.sina.com.cn/s/blog_7b9d64af01019x3t.html   总结: UITableViewDelegate row: heightForRow hea ...

  5. SQL注入自学[第二学:注入环境的简单突破]

    /* 原文出处:珍惜少年时 留给原创一个ZBD机会. 加号即空格 */ 00x1 判断是否含有注入 http://127.0.0.1/1.php?id=3 and 1=1-- 返回正确的页面. htt ...

  6. Coursera台大机器学习课程笔记14 -- Validation

    这节课是接着上节的正则化课程的,目的也是为了防止overfitting. 第一小节讲了模型的选择,前面讲了很多模型,那么如何做出正确的选择呢?我们的目标是选择最小的Eout目标函数.首先应避免视觉化选 ...

  7. HLG2040二叉树遍历已知前中,求后

    二叉树的遍历 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 60(34 users) Total Accepted: 34(30 us ...

  8. ZooKeeper 安装部署

    一.解压 tar -zxvf zookeeper-3.3.5.tar.gz 二.将zookeeper-3.3.4/conf目录下面的 zoo_sample.cfg修改为zoo.cfg,配置文件内容如下 ...

  9. 【Spring】Spring系列6之Spring整合Hibernate

    6.Spring整合Hibernate 6.1.准备工作 6.2.示例 com.xcloud.entities.book com.xcloud.dao.book com.xcloud.service. ...

  10. IE8 不支持html5 placeholder的解决方案

    IE8不支持html5 placeholder的解决方法. /** * jQuery EnPlaceholder plug * version 1.0 2014.07.01戈志刚 * by Frans ...