Codeforces 234D Cinema
这题做的我好苦啊,编码调试整整搞了一个多小时,而且调到天昏地暗才调出来。。
回归正题,这题是一道本人做过的比较烦,比较无聊的题之一。题意是一个人,在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的更多相关文章
- codeforces A. Cinema Line 解题报告
题目链接:http://codeforces.com/problemset/problem/349/A 题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这 ...
- CodeForces 670C Cinema(排序,离散化)
C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...
- CodeForces 670C Cinema
简单题. 统计一下懂每种语言的人分别有几个,然后$O(n)$扫一遍电影就可以得到答案了. #pragma comment(linker, "/STACK:1024000000,1024000 ...
- Codeforces Round #350 (Div. 2)解题报告
codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- Codeforces Round #350 (Div. 2) C. Cinema 水题
C. Cinema 题目连接: http://www.codeforces.com/contest/670/problem/C Description Moscow is hosting a majo ...
- Codeforces Beta Round #10 B. Cinema Cashier 暴力
B. Cinema Cashier 题目连接: http://www.codeforces.com/contest/10/problem/B Description All cinema halls ...
- 【26.83%】【Codeforces Round #380C】Road to Cinema
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 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 ...
随机推荐
- H5调用Android拨打电话
1.AndroidAndJSInterface.java class AndroidAndJSInterface { /** * 该方法将被js调用,用于加载数据 */ @JavascriptInte ...
- java微信开发(wechat4j)——设置响应微信参数
设置响应微信参数 wechat4j框架官方文档: https://github.com/sword-org/wechat4j/wiki
- Linux 学习手记(3):Linux基本的文件管理操作
复制文件和目录 在Linux中使用命令cp来复制文件或者目录,使用方式: cp 源文件(文件夹) 目标文件(文件夹) cp命令常用参数: -r 递归复制整个目录 -v 显示详细信息 移动.重命名一个文 ...
- SHAREPOINT 工作流审批权限问题
继续我们上次的工作流,我们发现所有人都有审批权限,这和我们正常的逻辑相反,正常应该是只有审批人才有权限,其它人只能查看,如下 这样解决,同样为SpecialPermissions 绑定到新成员 > ...
- [C/C++] VS 2015 C++ 插件
Visual Studio2015 Community一些必备插件 ReSharper C++ 各种语言版本的代码重构,代码风格,代码修正功能,非常强大,可惜不是免费的,不过好在可以破解呢. Vias ...
- 极光推送和百度lbs android sdk一起使用使用proguard 混淆的问题
主要是http得类被混淆后,导致apk定位失败.经过确认,保留apache 的http类就好了 # To enable ProGuard in your project, edit project.p ...
- C++map类型
map是键-值对的集合,可以理解为关联数组,可以使用键作为下标来获取一个值 本文地址:http://www.cnblogs.com/archimedes/p/cpp-map.html,转载请注明源地址 ...
- 【读书笔记】iOS-Xcode-模拟器操作的一些快捷键
Cmd+1/2/3 可以切换模拟器的显示比例. Option+Shift 可以在模拟器中调出双指拖动效果. Option 可以在模拟器中调出双指放大缩小效果. Comma ...
- 【读书笔记】iOS-UIWindow-密码框
一,工程结构,如下图所示: 二,代码 PasswordInputWindow.h #import <UIKit/UIKit.h> @interface PasswordInputWindo ...
- UITextField 基本属性使用
//设置文本框 透明度 tf.alpha = ; //设置文本颜色 tf.textColor = [UIColor orangeColor]; //设置文本文字 格式 tf.font = [UIFon ...