时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

雷磊同学每日都沉浸在彩票的世界里,因为他相信凭借他的数学和计算机水平可以使他的中奖几率大大的提高,他是这么想的,他买的彩票是N(2<= N <= 35)选M(1<= M <= N)的彩票,在每次买的时候他都会注意售票中心给出的当轮彩票的一些提示信息,诸如:必然包含哪些数,必然不包含哪些数,必然有2连出现,而没有3连出现等等(注意:例如2 3 4 应该算为3连,而不能算为2连)。为了提高选票的效率,他想编写一个程序,来通过条件给他选出哪些是可以买的彩票。

输入:

line 1 :两个数N和M;
line 2 :第一个数表示必然包含i个数,后i个数说明包含哪i个数。
line 3 :第一个数表示必然不包含i个数,后i个数说明不包含哪i个数。
line 4...3+M : 分别表示从2连到M连的情况各有几次(-1表示一定没有,0表示不确定)。

输出:

所有的可能的选法,按递增的顺序排列,每个选法一行。

输入样例:

10 7
2 1 7
2 9 4
1
-1
1
0
0
0

输出样例:

1 2 5 6 7 8 10

提示:

本回买的是10选7的彩票,必然包含10和7,必然不包含4和9,必然有1个2连和1个4连,必然没有3连。
输出可能的结果 1 2 5 6 7 8 10.
#include <iostream> #include <string> using namespace std; int n, m, exist, nonexist; bool used[35]; int combin[35], non[35], result[35]; bool NonAppear(int n, int non[]) { for (int i = 0; i < nonexist; ++i) { if (non[i] == n) return true; } return false; } bool IsLegal() { int i, temp[35], count = 1; memset(temp, 0x00, sizeof(int) * 35); for (i = 0; i < m - 1; ++i) { if (result[i + 1] - result[i] == 1) ++count; else { if (count >= 2) ++temp[count - 2]; count = 1; } } if (count >= 2) ++temp[count - 2]; for (i = 0; i < m - 1; ++i) { if (combin[i] != temp[i] && combin[i] != 0 && !(combin[i] == -1 && temp[i] == 0)) return false; } return true; } void FindNumberLine(int step, int start) { if (step == m - exist) { int i, j = 0; for (i = 0; i < n; ++i) { if (used[i]) result[j++] = i + 1; } if (IsLegal()) { for (i = 0; i < m - 1; ++i) cout << result[i] << " "; cout << result[i] << endl; } } else { for (int i = start; i < n; ++i) { if (!used[i] && !NonAppear(i + 1, non)) { used[i] = true; FindNumberLine(step + 1, i + 1); used[i] = false; } } } } int main(void) { int i, temp; cin >> n >> m; memset(used, 0x00, sizeof(bool) * n); cin >> exist; for (i = 0; i < exist; ++i) { cin >> temp; used[temp - 1] = true; } cin >> nonexist; for (i = 0; i < nonexist; ++i) cin >> non[i]; for (i = 0; i < m - 1; ++i) cin >> combin[i]; FindNumberLine(0, 0); return 0; }

Muddy roads2相关推荐

  1. 【POJ - 2226】Muddy Fields(匈牙利算法 或 网络流dinic,二分图匹配,最小点覆盖,矩阵中优秀的建图方式 )

    题干: Rain has pummeled the cows' field, a rectangular grid of R rows and C columns (1 <= R <= 5 ...

  2. poj Muddy Fields

    Muddy Fields 原题去我创的专题里找.在文件夹首页. 题目: 给出N*M矩阵.当中*表示泥土,.表示小草.要你用最少的木板把泥土覆盖. 木板长度不限,可是仅仅能水平和竖直. 行列式二分匹配配 ...

  3. bzoj 1689: [Usaco2005 Open] Muddy roads 泥泞的路(模拟)

    1689: [Usaco2005 Open] Muddy roads 泥泞的路 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 445  Solved:  ...

  4. 洛谷:P6062 [USACO05JAN]Muddy Fields G

    题目链接:P6062 [USACO05JAN]Muddy Fields G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 此题重点在二分图的建图. 考虑放置木板的决策,由于可以重复 ...

  5. 51nod Muddy Fields 2856

    题意: 2856 Muddy Fields 1.0 秒 262,144.0 KB 80 分 5级题 在一个n*m的草地上有一些泥坑,现在可以用宽度为1,长度任意的长木板去覆盖泥坑,但是木板不能覆盖草地 ...

  6. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)

    题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...

  7. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...

  8. poj 2226 Muddy Fields 最小顶点覆盖

    题目链接:http://poj.org/problem?id=2226 这道题跟上一道很相似不同之处在于这里不是整行或者整列的删,而是连续的几个可以一起删,不连的不能删,这就要对原图进行处理,对原有的 ...

  9. poj 2226 Muddy Fields(合理建图+二分匹配)

    1 /* 2 题意:用木板盖住泥泞的地方,不能盖住草.木板任意长!可以重叠覆盖! '*'表示泥泞的地方,'.'表示草! 3 思路: 4 首先让我们回忆一下HDU 2119 Matrix这一道题,一个矩 ...

最新文章

  1. Python 测试开发从入门到高手成长之路
  2. python 面向对象(类)--学习笔记
  3. python去除中文停用词_删除停止词Python
  4. wxWidgets:wxToggleButton类用法
  5. 机器学习物语(3):回归问题
  6. Django05-1: 有名分组、无名分组与反向解析
  7. Vue使用Element-ui按需引入大坑
  8. python中run函数作用_Python run()函数和start()函数的比较和差别介绍
  9. Ant之build.xml详解
  10. PLC 控制柜常用电气元件整理表
  11. 范围求和 II-c语言解决
  12. python使用phone实现手机号归属地查询
  13. 支付宝签名php,支付宝快捷支付 PHP服务端签名
  14. 【GPLT】【2022天梯赛真题题解】
  15. Cesium视频融合
  16. 【速记】Android让View的显示超出父容器
  17. OpenX系列标准介绍(2):OpenDRIVE实例分析
  18. 清除flashback日志
  19. ModelSim仿真入门之一:软件介绍
  20. Energy 收购 VDD Tech

热门文章

  1. 无人机系列之图传技术
  2. LIN ldf文件配置
  3. sql server处理/压缩LDF文件
  4. 模拟键盘、鼠标 mouse_event keybd_event
  5. 基于Python的参考文献检索工具开发
  6. mysql 退出fdisk_Linux fdisk命令
  7. BeagleBone Black教程之BeagleBone Black使用到的Linux基础
  8. PDF怎么一键转word,简单操作便可以搞定
  9. Java解决高并发秒杀商品
  10. 选择器(标签、类、多类名、id、通配符、伪类)