题意

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

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

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

思路

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

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

②标记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. Spring IOC源代码具体解释之容器初始化

    Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new C ...

  2. Yii 获得当前控制器和方法

    [怎样获得当前控制器和方法] 控制器:$this -> id ; 方法:$this->action->id ; 这主要是用在视图中,进行高亮显示. <div id=" ...

  3. C. Glass Carving (CF Round #296 (Div. 2) STL--set的运用 &amp;&amp; 并查集方法)

    C. Glass Carving time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  4. 真正的Java学习从入门到精通

    http://www.it.com.cn/f/edu/059/6/169189.htm 一. 工具篇JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行 ...

  5. sessionStorage / localStorage

    var referurl = document.referrer; //上级网址 if(referurl.indexOf('address_order')>0){ //判断是否是从上一级地址跳转 ...

  6. macOS10.12部署sonarqube5.6.3

    所需安装包已全部上传云盘:https://pan.baidu.com/s/1i5LvOCd 密码:s47e 1. 安装mysql 下载云盘的dmg包,一路默认安装,注意:一定要记住最后一步弹出的默认密 ...

  7. VM虚拟机内ubuntu无法连接到网络

    VM虚拟机内ubuntu无法连接到网络 解决:编辑网络,将网路都删除掉.又一次加入网络桥接和NAT链接. .又一次连接就可以,查看一下ip地址. 方法2: 虚拟机中新装ubuntu 编辑虚拟网络,先恢 ...

  8. linux pptp 服务端安装并正常上网

    linux 下 PPTP VPN 1.安装相关软件32位版:yum -y install ppprpm -Uvh http://poptop.sourceforge.net/yum/stable/rh ...

  9. Ocelot --API网关简单使用

    最近几个月一直在忙一个项目(感觉像是与世隔绝了),本来想好的是要写一些asp.net core 的一些简单使用上东西,也就放下了. 好在忙完了,也就重新开始写吧.写点什么呢?网上也有不少dotnet ...

  10. erlang的非平衡的二叉树的操作

    -module(tree1). -export([test1/0]). lookup(Key,nil) -> not_found; lookup(Key,{Key,Value,_,_}) -&g ...