Codeforces 442A Borya and Hanabi
有五种花色 外加 五种点数 共25张牌,每次有n张牌,主人知道这n张牌中有哪些牌,并且哪种牌有几张,但是不知道具体是哪张牌,他可以问某种花色,然后知道了哪几张是该花色,也可以问点数,然后就知道了哪几张是这个点数。最终可以把所有牌都确定下来,问最少要询问几次。
这个题目一开始想到枚举(事实证明最后就是枚举),然后又想到二分图去了,。。主要是这个花色对应点数,连成边之后太像二分图了,而且感觉为了得到所有的牌,隐隐约约有点像 DAG上的最小点覆盖。。。而且看了下样例,有点像,所以就去敲二分图去了,结果。。。擦。跪了
其实还是要回到枚举上面来,总共才10个点是不是,用个状态压缩才1000,关键是怎么判断当前枚举是合法的,正向考虑会比较复杂,我想了半天没想到一个比较轻松的方法,但是反向考虑就舒服多了,假设我枚举了k个点,也就是说这k个点(包括花色与点数)都是要询问的,那么不成立的条件有这样:
1.某种牌的两个端点都没询问,而且不止一次(如果只是一次的话,是可以的,因为主人知道所有的牌,这张牌放到最后即可)。
2.某种牌只访问了一个端点,但是这个端点又不止被访问一次(这样的话就肯定无法确定是哪张牌)
所以只要出现了以上两种情况中的一种,即不合法。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int mat[][];
char ch[]={'A','R','G','Y','W','B'};
int bitcount(int x)
{
if (x==) return ;
else return bitcount(x>>)+(x&);
}
bool judge(int x)
{
int num[];
memset(num,,sizeof num);
int tot=;
for (int i=;i<=;i++)
{
for (int j=;j<=;j++){
if (mat[i][j]){
if (((<<(i-))&x) && (!((<<(j-))&x))) num[i]++;
if ((!((<<(i-))&x)) && ((<<(j-))&x)) num[j]++;
if ((!((<<(i-))&x)) && (!((<<(j-))&x))) tot++;
}
}
}
//cout<<tot<<endl;
if (tot>) return ;
for (int i=;i<=;i++){
if (num[i]>) return ;
}
return ;
}
int main()
{
int n;
char s[];
while (scanf("%d",&n)!=EOF)
{
memset(mat,,sizeof mat);
for (int i=;i<n;i++){
scanf("%s",s);
int a=;
for (int i=;i<=;i++){
if (s[]==ch[i]){a=i;break;}
}
int b=s[]-''+;
mat[a][b]=;
// cout<<a<<" "<<b<<endl;
}
int ans=;
for (int i=;i<(<<);i++){
if (judge(i)){
ans=min(ans,bitcount(i));
}
//cout<<ans<<endl;
//if (ans==0) break;
}
printf("%d\n",ans);
}
return ;
}
Codeforces 442A Borya and Hanabi的更多相关文章
- Codeforces Round #253 (Div. 1) A. Borya and Hanabi 暴力
A. Borya and Hanabi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/442/p ...
- codeforces 422A A. Borya and Hanabi(暴力)
题目链接: A. Borya and Hanabi time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Codeforces Round #253 (Div. 1) A Borya and Hanabi
A. Borya and Hanabi time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces 442A
题目链接 A. Borya and Hanabi time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Codeforces Round #253 (Div. 2)——Borya and Hanabi
题目连接 题意: n表示有n个卡片.每一个卡片有一种颜色和一个数字(共五种不同的颜色和五个不同的数字). 事先知道每种卡片有几张.可是不知道详细的位置. 问须要几次提示就能够知道全部卡片的位置都在哪里 ...
- [CF442A] Borya and Hanabi (暴力bitmask)
题目链接:http://codeforces.com/problemset/problem/442/A 题目大意:给你n张卡片,你知道这n张卡片都是什么,但是不知道他们的位置.你每次可以请求朋友指出一 ...
- Codeforces Round 253 (Div. 2)
layout: post title: Codeforces Round 253 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- Codeforces442A
A. Borya and Hanabi time limit per test:2 seconds memory limit per test: 256 megabytes input:standar ...
- 【Codeforces Round #443 (Div. 2) A】Borya's Diagnosis
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟 [代码] #include <bits/stdc++.h> using namespace std; const ...
随机推荐
- SciPy 积分
章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...
- HihoCoder第五周:标准动态规划
这周的题目是最标准最简单的动态规划了,自己一直以来对动态规划都不是很理解,这次也是好好记录一下. 题目1 :数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 ...
- 2-10 就业课(2.0)-oozie:2、介绍和安装1
oozie的安装及使用 1. oozie的介绍 Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce.Pig等.那么,对于Oozie ...
- Program-Language
1. 主流编程语言 2. 编程语言分类 2.1 编译or解释 2.2 按照客观系统的描述可分为两类 2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...
- Day4 - I - Trucking HDU - 2962
A certain local trucking company would like to transport some goods on a cargo truck from one place ...
- SpringMVC 文件的上传、下载
文件上传 (1)下载添加2个jar包 commons-fileupload.jar commons-io.jar SpringMVC的文件上传依赖于Apache的FileUpload组件,需要下载添加 ...
- 如何在PHP中进行会话处理?
在PHP中会话处理是一个很重要的概念,它允许用户信息在网站或应用程序的所有页面上保持不变.下面本篇文章就来带大家学习一下PHP中会话处理的基础知识,希望对大家有所帮助. PHP中什么是会话(sessi ...
- 018、Java中除法的是用,解决除法计算精度问题
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- Jetbrains推出了一款新的编程字体Mono
今天看到新闻说Jetbrains推出了一款新的编程字体Mono,便到官网上下载试了一下, 在VS和VS Code中显示效果都非常不错,是并且支持连体,感兴趣的朋友可以到其官网下载试用一下.
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-question-sign
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...