题意

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

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

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

思路

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

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

②标记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. UE4射击小游戏原型

    尝试使用了下blueprint,不知道是bug还是不熟悉,blueprint有些地方运行的跟逻辑不太一样.不管ue4目前,快速做原型倒是蛮方便的.就等着官方发更多教程讲述关于新的matinee,Nav ...

  2. jq:jq开头为什么那么写

    转自:http://holysonll.blog.163.com/blog/static/2141390932013411112823855/ 用jQ的人很多人都是这么开始写脚本的: $(functi ...

  3. iOS 原生二维码扫描和生成

    代码地址如下:http://www.demodashi.com/demo/12551.html 一.效果预览: 功能描述:WSLNativeScanTool是在利用原生API的条件下封装的二维码扫描工 ...

  4. JavaScript匿名函数与托付

    <1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- C#匿名函数--& ...

  5. java 实现新浪微博内容计数器 Java问题通用解决代码

    http://www.mr3g.net/?p=220 参考sina的js版本而来,费弄最多的时间就是java对ansii码的判断了,js直接就是isascii()函数就可以实现了,java还要想办法 ...

  6. 解决eclipse中overlaps the location of another project: 'xxxx'

    找遍网络发现各种解释,最常见的一种是: new -> android project -> create project from exist source出现如下错误信息:Invalid ...

  7. 代码设置UIButton文字、图片位置

    假设有按钮rButton的 imageEdgeInsets和contentEdgeInsets可以设置按钮的标题和图片的位置,如下代码,设置标题居右 NSString * rBtnTitle = @& ...

  8. linux 内存分析

    http://blog.yufeng.info/archives/2456  这篇文章不错 值得看 http://www.361way.com/memory-analysis/5018.html

  9. window 效率神器:Wox

    官方网站 http://www.getwox.com/ 下载后以管理员身份运行,右下角可以看到Wox的图标.点击setting可以进入主界面 如果看不懂可以将语言设置为中文 默认快捷键是Alt + s ...

  10. oracle中的minus数据比对

    1.要有唯一索引或者主键作为前提,减少数据冲突的数量,如示例标红的地方:   2.当有in查询的时候,尽量用exists,这样能提高查询效率: create table TF_F_USER_DIFF1 ...