B. Cubes for Masha
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Absent-minded Masha got set of n cubes for her birthday.

At each of 6 faces of each cube, there is exactly one digit from 0 to 9. Masha became interested what is the largest natural x such she can make using her new cubes all integers from 1 to x.

To make a number Masha can rotate her cubes and put them in a row. After that, she looks at upper faces of cubes from left to right and reads the number.

The number can't contain leading zeros. It's not required to use all cubes to build a number.

Pay attention: Masha can't make digit 6 from digit 9 and vice-versa using cube rotations.

Input

In first line integer n is given (1 ≤ n ≤ 3) — the number of cubes, Masha got for her birthday.

Each of next n lines contains 6 integers aij (0 ≤ aij ≤ 9) — number on j-th face of i-th cube.

Output

Print single integer — maximum number x such Masha can make any integers from 1 to x using her cubes or 0 if Masha can't make even 1.

Examples
input
3
0 1 2 3 4 5
6 7 8 9 0 1
2 3 4 5 6 7
output
87
input
3
0 1 3 5 6 8
1 2 4 5 7 8
2 3 4 6 7 9
output
98
Note

In the first test case, Masha can build all numbers from 1 to 87, but she can't make 88 because there are no two cubes with digit 8.

思路:

暴力模拟,一个数字里面每个骰子有且至多能用一次

 #include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int weishu(int num) {
if(num>=&&num<=) return ;
if(num>=&&num<=) return ;
if(num>=&&num<=) return ;
return ;
}
bool exist(int ans[][], int rec[], int len) {
if(len==) {
int a=rec[];
if(ans[][a]||ans[][a]||ans[][a]) return true;
} else if(len==) {
int a=rec[],b=rec[];
if((ans[][a]&&ans[][b])
||(ans[][a]&&ans[][b])
||(ans[][a]&&ans[][b])
||(ans[][a]&&ans[][b])
||(ans[][a]&&ans[][b])
||(ans[][a]&&ans[][b]))
return true;
} else if(len==) {
int a=rec[],b=rec[],c=rec[];
if((ans[][a]&&ans[][b]&&ans[][c])
||(ans[][a]&&ans[][b]&&ans[][c])
||(ans[][a]&&ans[][b]&&ans[][c])
||(ans[][a]&&ans[][b]&&ans[][c])
||(ans[][a]&&ans[][b]&&ans[][c])
||(ans[][a]&&ans[][b]&&ans[][c]))
return true;
}
return false;
}
int main(){
int ans[][],n,num,bns[][],rec[];
memset(ans,,sizeof(ans));
/*read*/
scanf("%d",&n);
for(int i=;i<=n;++i) {
int flag[]={};
for(int j=;j<;++j) {
scanf("%d",&num);
if(flag[num]==) {
ans[i][num]++;
flag[num]=;
}
}
}
/*slove*/
int result=;
for(int i=;i<=;++i) {
if(i==) {
result=;
break;
}
int len=weishu(i);
int temp=i;
memcpy(bns,ans,sizeof(ans));
memset(rec,-,sizeof(rec));
for(int j=;j<=len;++j) {
int r=i%;
rec[j]=r;
i=i/;
}
i=temp;
if(!exist(ans,rec,len)) {
result=i-;
break;
}
}
printf("%d\n",result);
return ;
}

优化暴力模拟,不可能出现比99大的数字,因为如果要出现比99大的数字,那么需要有1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9这样的话已经有18个数字,即使三个骰子也只是刚好18个数字。其中必不可少的是数字0,加上就是19。所以不可能出现比99大的数字。

 #include <bits/stdc++.h>
using namespace std;
int main() {
int n,ans[][],vis[];
memset(vis,,sizeof(vis));
scanf("%d",&n);
for(int i=;i<=n;++i) {
for(int j=;j<=;++j) {
scanf("%d",&ans[i][j]);
}
}
for(int i=;i<=n;++i) {
for(int j=;j<=;++j) {
vis[ans[i][j]]=;
for(int k=;k<=n;++k) {
if(k==i) continue;
for(int l=;l<=;++l) {
vis[ans[i][j]*+ans[k][l]]=;
}
}
}
}
for(int i=;i<=;++i) {
if(!vis[i]) {
printf("%d\n",i-);
break;
}
}
return ;
}

codeforces 887B Cubes for Masha 两种暴力的更多相关文章

  1. codeforces 792CDivide by Three(两种方法:模拟、动态规划

    传送门:https://codeforces.com/problemset/problem/792/C 题意:给你一个字符串,要求让你删除最少个数的元素,使得最终答案是没有前导0并且是3的倍数. 题解 ...

  2. Codeforces Round #466 (Div. 2) B. Our Tanya is Crying Out Loud[将n变为1,有两种方式,求最小花费/贪心]

    B. Our Tanya is Crying Out Loud time limit per test 1 second memory limit per test 256 megabytes inp ...

  3. Codeforces Beta Round #13 E. Holes 分块暴力

    E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Des ...

  4. Sql Server 聚集索引扫描 Scan Direction的两种方式------FORWARD 和 BACKWARD

    最近发现一个分页查询存储过程中的的一个SQL语句,当聚集索引列的排序方式不同的时候,效率差别达到数十倍,让我感到非常吃惊 由此引发出来分页查询的情况下对大表做Clustered Scan的时候, 不同 ...

  5. Codeforces Round #369 (Div. 2) A B 暴力 模拟

    A. Bus to Udayland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. Codeforces Round #329 (Div. 2) A. 2Char 暴力

    A. 2Char Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/593/problem/A De ...

  7. linux尝试登录失败后锁定用户账户的两种方法

    linux尝试登录失败后锁定用户账户的两种方法 更新时间:2017年06月23日 08:44:31   作者:Carey    我要评论   这篇文章主要给大家分享了linux尝试登录失败后锁定用户账 ...

  8. 寒假集训——搜索 D - Cubes for Masha

    #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h&g ...

  9. ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板)

    ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板) 题意 题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000 这 ...

随机推荐

  1. 使用phpexcel类读写excel文件

    使用原生php读写excel文件的博文地址: 基于使用原生php读写excel文件的不靠谱,本文将简单介绍如何使用第三方类库phpexcel来读写excel文件. 首先,需要到githut下载phpe ...

  2. MongoDB理解

    1. 什么是MongoDB (1)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. (2)MongoDB 是一个 ...

  3. Memcached查找命令

    Memcached各个查找命令的语法格式都类似,且有相同的参数和参数含义,先将可能出现的各个参数的意义说明如下 key:键值 key-value 结构中的 key,用于查找缓存值. noreply(可 ...

  4. CSS3新增伪类汇总

    :root 选择文档的根元素,等同于 html 元素 :empty 选择没有子元素的元素 :target 选取当前活动的目标元素 :not(selector) 选择除 selector 元素意外的元素 ...

  5. 利用Tkinter和matplotlib两种方式画饼状图

    当我们学习python的时候,总会用到一些常用的模块,接下来我就详细讲解下利用两种不同的方式画饼状图.首先利用[Tkinter]中的canvas画布来画饼状图: from tkinter import ...

  6. 从Matlab文件中读取mxArray类型变量-部分代码分析

    这是我做的笔记,看到这个代码时觉得处理有点妙,做笔记记录之. 部分源代码: .... int main(int argc,char** argv) { char name[_FILE_NAME_LEN ...

  7. HTML学习笔记 cs2D3D展示基础 第十四节 (原创) 参考使用表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 修改oracle服务器端字符集

    ----设置字符集步聚------- conn /as sysdba; shutdown immediate; startup mount; alter system enable restricte ...

  9. eclipse构建maven+scala+spark工程

    前提条件 下载安装Scala IDE build of Eclipse SDK 构建工程 1.新建maven工程 2.配置项目信息 3.新建scala对应的Source Folder 4.添加scal ...

  10. 关于 ElesticSearch 安装

    ElesticSearch windows 下安装步骤 1. 配置 JAVA_HOME 环境变量,因为作者是一个java开发人员,这是基本配置,就不多做赘述 2. 安装ElasticSearch 从官 ...