题意

有两个人想去一起看电影,然后分别给出两个人 分别喜欢看的电影都在哪些天

然后 同一个人 不能连续看两天他不喜欢的电影

求他们最多可以看多少次电影

思路

先将两人喜欢看的电影进行排序,

① 选择两个人中喜欢看的电影中的天数次序小的进行观看

②标记FLAG 看了一个人的 下次选择另一个人的

③如果另一个人喜欢看的电影的天数次序大于上次那个人的天数次序 则返回②

④如果一个人喜欢看的电影的天数次序等于上次那个人的天数次序 则返回②

跳出循环条件

① 两个人的电影都选完了 则直接BREAK

② 两个人的电影其中一个选完,另一个人还有的选,则ANS + 1 再BREAK

AC代码

#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <climits>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits> using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll; const double PI = 3.14159265358979323846264338327;
const double E = exp(1);
const double eps = 1e-6; const int INF = 0x3f3f3f3f;
const int maxn = 1e6 + 5;
const int MOD = 1e9 + 7; int p[maxn], q[maxn]; int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &p[i]);
sort (p, p + n);
int m;
scanf("%d", &m);
for (int i = 0; i < m; i++)
scanf("%d", &q[i]);
sort(q, q + m);
int flag;
int vis = -1;
int i = 0, j = 0;
int ans = 0;
while (1)
{
if (vis == -1)
{
if ((i == n && j != m) || (i != n && j == m))
{
ans++;
break;
}
else if (i == n && j == m)
break;
if (p[i] < q[j])
{
vis = p[i];
ans++;
i++;
flag = 1;
continue;
}
else if (p[i] == q[j])
{
ans++;
i++;
j++;
continue;
}
else
{
vis = q[j];
j++;
ans++;
flag = 0;
continue;
}
}
else if(flag == 0)
{
if (i == n)
break;
for ( ; i < n; i++)
{
if (p[i] > vis)
{
vis = p[i];
i++;
ans++;
flag = 1;
break;
}
else if(p[i] == vis)
{
vis = -1;
i++;
break;
}
}
}
else if (flag == 1)
{
if (j == m)
break;
for ( ; j < m; j++)
{
if (q[j] > vis)
{
vis = q[j];
j++;
ans++;
flag = 0;
break;
}
else if(q[j] == vis)
{
vis = -1;
j++;
break;
}
}
}
}
cout << ans << endl;
}

Kattis - horrorfilmnight 【贪心】的更多相关文章

  1. Installing Apps Kattis - installingapps (贪心 + 背包)

    Installing Apps Kattis - installingapps Sandra recently bought her first smart phone. One of her fri ...

  2. Kattis - fairdivision 【贪心】

    题意 有一堆人 要给他们的朋友 买一个生日礼物,然后 每个人 给出自己的最大负担额度 并且给出礼物总价 然后要给出一种解决方案 尽量让 所有人的支出都接近平均,如果实在无法平均,那就让 先来的人 多处 ...

  3. Kattis - entertainmentbox 【贪心】

    思路 先将 N 个 电视节目 排序 根据 结束时间 ,结束的早的 排在前面 然后 弄 K个标记 记录 结束时间 然后 遍历一下 每次 如果能插入的话 插入到 结束时间最小的那个 队列里面去然后 每次插 ...

  4. 2016 acm香港网络赛 C题. Classrooms(贪心)

    原题网址:https://open.kattis.com/problems/classrooms Classrooms The new semester is about to begin, and ...

  5. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  6. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  9. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

随机推荐

  1. 51单片机 | 模拟PWM调制控制实验

    ———————————————————————————————————————————— PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - ...

  2. ASP.NET综合管理ERP系统100%源代码+所有开发文档

    该系统开发环境为:VS2010,数据库採用SQL Server,框架为ASP.NET. 源代码包含所有文档说明,代码简单易懂,凝视完整. 提示:假设没有安装水晶报表系统执行会报错,报表安装程序已经打包 ...

  3. UIView的endEditing:方法

    当视图收到endEditing:消息时,如果视图(或者其下的人和子视图)是当前的第一响应对象,就会取消自己的第一响应对象状态, 而且虚拟键盘也会消失(传入的参数代表是否需要强制取消第一响应对象状态.有 ...

  4. 【HttpClient4.5中文教程】【第一章 :基础】1.1运行请求(二)

    很多其它HttpClient4.5中文教程请查看:点击打开链接 ==================================================================== ...

  5. linxu 查看python解释器或者c/c++编译器的位置

    ubuntu环境下python相关ide的python解释器,它的默认位置在: usr/bin/python gcc和g++分别位于 usr/bin/gcc usr/bin/g++ 也可以用which ...

  6. 高盛CEO致大学毕业生:要与有野心的人为伍

    我认为讲的非常棒.年轻人就要这样. 高盛集团首席运行官(CEO)劳尔德-贝兰克梵(Lloyd Blankfein)周四在曼哈顿贾维茨中心參加了拉瓜迪亚社区大学的第41届毕业典礼并发表演讲.在面向约10 ...

  7. 为什么Goroutine能有上百万个,Java线程却只能有上千个?

      作者|Russell Cohen   译者|张卫滨   本文通过 Java 和 Golang 在底层原理上的差异,分析了 Java 为什么只能创建数千个线程,而 Golang 可以有数百万的 Go ...

  8. CSMA/CD解释与理解

    1. CSMA/CD含义 CSMA/CD即载波监听多点接入/碰撞检测,此协议是使用在总线型网络中的,不同计算机是通过多点接入的方式连接在一起.协议的重点在于监听和碰撞检测. 2. 为什么要监听和碰撞检 ...

  9. [转]基于fiddler的APP抓包及服务端模拟

    在HTTP接口的测试过程中,一般我们会按照如下的步骤进行: 1)测试环境的准备 2)HTTP消息体的构造 3)HTTP消息的发送及断言 如果我们可以拿到项目组的接口文档,并且HTTP后台服务是可以工作 ...

  10. 编辑器模式下如何实例化Prefab

    当我们在EditMode下需要用脚本批量添加prefab时,可以用 PrefabUtility.InstantiatePrefab(prefab) as GameObject; 注意:如果用GameO ...