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 ...
随机推荐
- JavaScript调Java
1.映射Java对象到JavaScript对象上 MainActivity.java package com.example.jsdemo; import android.os.Bundle; imp ...
- How to Install Hadoop on Ubuntu
安装教程,https://www.digitalocean.com/community/tutorials/how-to-install-hadoop-on-ubuntu-13-10
- javascript作用域链学习笔记
作用域链 "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." --权威指南 在JavaScript中,一切皆对象,包括函数.函数对象和其它对象 ...
- 利用ng-click、ng-switch和click-class制作切换的tabl
效果如下图,当分别点击1,2,3时,下面的不同颜色的div会切换 <html ng-app> <head> <title></title> <sc ...
- org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused in android
给Manifest加网络权限<uses-permission android:name="android.permission.INTERNET"/>
- 基础学习day10--异常、包
一.异常 1.1.异常定义 异常:--不正常,程序在运行时出现不正常情况 异常由来:其实也是现实生活中一个具体的事物,马可以通过JAVA的类的形式表现描述,并封装成类. Java对不正常情况描述后的, ...
- iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)
(一)属性传值 (二)代理(委托)传值 代理传值 适用于 反向传值 (从后往前传) 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewController)中 1.2 创建协议类型的 ...
- 打印 SpringMVC中所有的接口URL
采用junit test方式 1.配置 simple-test.xml <?xml version="1.0" encoding="UTF-8"?&g ...
- 团队管理_效率开会[持续更新ing]
1.明确开会目的,这个会议是用来解决什么问题,得出什么结果. 2.明确会议内容与流程,简要说明会议分几个部分,一步一步推进会议的进行. 3.保证参会人员守时参加,会议准时开始. 4.保证会议时间尽量为 ...
- Effective Java 44 Write doc comments for all exposed API elements
Principle You must precede every exported class, interface, constructor, method, and field declarati ...