这题做的我好苦啊,编码调试整整搞了一个多小时,而且调到天昏地暗才调出来。。

回归正题,这题是一道本人做过的比较烦,比较无聊的题之一。题意是一个人,在m个影星里有k个喜欢的影星,然后给出n场电影,每场电影给出演出的人的编号,0表示不确定,根据这些人的编号判断是否一定是最喜欢的电影(喜欢的影星最多的电影),或者一定不会是最喜欢的电影,或者是不确定。

做法是算出每场电影最少有多少个喜欢的影星和最多有多少个喜欢的影星,并且得出在所有电影中最少有多少个喜欢的影星和最多有多少个喜欢的影星。

如果分别用MIN和MAX来表示,则有三种情况:

1.如果这场电影的MIN不小于任意一场电影的MAX,则这场电影必为最喜欢的电影。

2.如果这场电影的MAX不大于任意一场电影的MIN,则这场电影绝对不会是最喜欢的电影

3.介于两者之间

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <string>
#include <map>
using namespace std;
#define N 107 int zero[N],vis[N],a[N];
int d[N][N];
int like[N],mlike[N];
map<int,int> mp; int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int m,k,chang,i,j,maxilike,ka,maximlike;
char ss[];
while(scanf("%d%d",&m,&k)!=EOF)
{
mp.clear();
for(i=;i<k;i++)
{
scanf("%d",&a[i]); //喜欢的影星编号
mp[a[i]] = ; //看编号知是否喜欢的影星
}
memset(zero,,sizeof(zero));
maxilike = maximlike = -;
scanf("%d",&chang);
for(i=;i<chang;i++)
{
scanf("%s",ss);
scanf("%d",&ka);
for(j=;j<ka;j++)
{
scanf("%d",&d[i][j]);
if(d[i][j] == )
zero[i]++;
}
if(ka == m)
{
maxilike = max(maxilike,k);
maximlike = max(maximlike,k);
mlike[i] = k;
like[i] = k;
}
else
{
int ca = ;
memset(vis,,sizeof(vis));
for(j=;j<k;j++)
vis[a[j]] = ;
for(j=;j<ka;j++)
{
if(mp[d[i][j]])
ca++;
vis[d[i][j]] = ;
}
int unvis = ;
for(j=;j<=m;j++)
{
if(!vis[j])
unvis++;
}
if(unvis < zero[i])
{
like[i] = ca + zero[i] - unvis;
mlike[i] = ca + min(zero[i],k-ca);
}
else
{
mlike[i] = ca + min(zero[i],k-ca);
like[i] = ca;
}
maxilike = max(maxilike,like[i]);
maximlike = max(maximlike,mlike[i]);
}
}
for(i=;i<chang;i++)
{
if(like[i] >= maximlike || (like[i] >= maxilike && mlike[i] == maximlike))
{
if(like[i] >= maximlike)
printf("0\n");
else
{
int flag = ;
for(j=;j<chang;j++)
{
if(j!=i && like[i] < mlike[j])
{
flag = ;
break;
}
}
if(flag)
printf("0\n");
else
printf("2\n");
}
}
else if(mlike[i] < maxilike)
printf("1\n");
else
printf("2\n");
}
}
return ;
}

Codeforces 234D Cinema的更多相关文章

  1. codeforces A. Cinema Line 解题报告

    题目链接:http://codeforces.com/problemset/problem/349/A 题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这 ...

  2. CodeForces 670C Cinema(排序,离散化)

    C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  3. CodeForces 670C Cinema

    简单题. 统计一下懂每种语言的人分别有几个,然后$O(n)$扫一遍电影就可以得到答案了. #pragma comment(linker, "/STACK:1024000000,1024000 ...

  4. Codeforces Round #350 (Div. 2)解题报告

    codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...

  5. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  6. Codeforces Round #350 (Div. 2) C. Cinema 水题

    C. Cinema 题目连接: http://www.codeforces.com/contest/670/problem/C Description Moscow is hosting a majo ...

  7. Codeforces Beta Round #10 B. Cinema Cashier 暴力

    B. Cinema Cashier 题目连接: http://www.codeforces.com/contest/10/problem/B Description All cinema halls ...

  8. 【26.83%】【Codeforces Round #380C】Road to Cinema

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. Codeforces #380 div2 C(729C) Road to Cinema

    C. Road to Cinema time limit per test 1 second memory limit per test 256 megabytes input standard in ...

随机推荐

  1. .NET Framework 4.0之Tuple(元组)

    Tuple,是函数式编程的概念之一,早见于Elang.F#等动态语言.Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存 ...

  2. [Architecture Design] CLK Architecture

    CLK.Prototype.Architecture 最近找数据,看到了博客园在不久之前,办了一个架构分享的活动:.Net项目分层与文件夹结构大全.看完之后觉得获益良多,接着也忍不住手痒,开始整理属于 ...

  3. HTML5中的canvas基本概念及绘图

    * Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...

  4. PHP控制前台弹出对话框

    应用场景: 微信授权登录过程中,需要用户确认,故衍生此需求: 相应的逻辑不放在前端的原因是,此部分逻辑属于偏功能业务,所以放在后端,方便统一管理. 解决办法: 通过php echo出javascrip ...

  5. SAP中获取当前用户相关信息的两个函数

    函数名:TH_USER_LIST作用:可以得到SM04界面显示样式的表. 函数名:TH_USER_INFO作用:可以得到当前特定用户的机器名.当前活动窗口数.IP地址等信息

  6. SharePoint 2010 文档管理之过期归档工具

    前言:使用过SharePoint的人都知道,SharePoint对于操作是便捷的,但是对于数据量承载却是不令人满意的,这样,就要求我们需要更加合理的使用,规范大家的使用规则和习惯,所以,定期清理不必要 ...

  7. 浅析LruCache原理

    Android用LruCache来取代原来强引用和软引用实现内存缓存,因为据说自2.3以后Android将更频繁的调用GC,导致软引用缓存的数据极易被释放. LruCache使用一个LinkedHas ...

  8. Purchase购物车实例分析

    源代码下载地址:http://code4app.com/ios/55655def933bf09d328b5141 此源代码从中学到以下四个知识点 第一:关于右边只有一个被选中的效果展现,左边部分代码内 ...

  9. 敏捷软件开发:原则、模式与实践——第12章 ISP:接口隔离原则

    第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法. 这个原则用来处理“胖”接口所存在的缺点.如果类的接口不是内敛的,就表示该类具有“胖”接口.换句话说,类的“胖”接口可以分解成多组 ...

  10. 敏捷软件开发:原则、模式与实践——第8章 SRP:单一职责原则

    第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因. 8.1 定义职责 在SRP中我们把职责定义为变化的原因.如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责.同时,我 ...