【题目描述】

小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件。

(1)每次取出的球的个数两两不同。

(2)每次取出的球的集合两两不包含。

包含是指,对于两次取球,对于取的数目少的那次取球的所有球都出现在取的数目多的那次取球中,例如{1,2}和{1,2,4},{1,2}和{2,3}则不算作包含。

而小A现在突然想知道他最多能进行多少次这样的操作,并希望你能给出具体的取球方案。

【输入样例】

一个整数n。

【输出样例】

第一行一个数k,表示能进行的最多次数。

接下来k行,每行第一个整数p,表示这次取的球数,接下来p个数表示这次取的球的编号,编号只需要不同,不需要按照顺序输出,本题设有spj。

对于每个测试点,每组数据第一行正确可以获得20%的分,如果第一行和方案均正确获得100%的分。

【样例输入】

4

【样例输出】

2

1 1

2 2 3

【备注】

对于30%的数据,n<=7。

对于50%的数据,n<=20。

对于70%的数据,n<=100。

对于100%的数据,4<=n<=1000。

【题目分析】

首先对于30%甚至50%的数据,打表是完全没问题的,那么对于可打表的数据,我们可以发现一个规律:最多可以取的次数为n-2,并且恒成立,下面给出证明:

(1):n为奇数

n最小为5,此时最大次数为3,可为{1},{2,3},{2,4,5},对于7,我们可以在每一组后添1个7,因为原组合不互相包含,那么加上一个7后仍不互相包含,然后将6作为单独一组,以此类推,所有为奇数的n均可以用这种方式构造出。

(2):n为偶数

同(1),n最小为4,最大次数为2,{1},{2,3},对于6可以在每一组后添1个6,因为原组合不互相包含,那么加上一个6后仍不互相包含,然后将5作为单独一组,以此类推,所有为偶数的n均可以用这种方式构造出。证毕。

然后这道题就比较简单了,代码见下:

【代码~】

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1010;int n,num;
int f[MAXN<<1][MAXN];int main()
{scanf("%d",&n);printf("%d\n",n-2);f[num=MAXN][0]=f[MAXN][1]=1;if(n&1){for(int i=5;i<=n;i+=2){num--;f[num][f[num][0]=1]=i-1;for(int j=num+1;j<=num+i-4;++j)f[j][++f[j][0]]=i;for(int j=1;j<=i-2;++j)f[num+i-3][j]=j;f[num+i-3][0]=i-2;}}else{f[num+1][0]=2;f[num+1][1]=2,f[num+1][2]=3;for(int i=6;i<=n;i+=2){num--;f[num][f[num][0]=1]=i-1;for(int j=num+1;j<=num+i-4;j++) f[j][++f[j][0]]=i;for(int j=1;j<=i-2;j++) f[num+i-3][j]=j;f[num+i-3][0]=i-2;}}for(int i=num;i<num+n-2;++i){printf("%d",f[i][0]);for(int j=1;j<=f[i][0];++j)putchar(' '),printf("%d",f[i][j]);cout<<endl;}return 0;
}

转载于:https://www.cnblogs.com/Ishtar/p/10010850.html

NOIP模拟 数球(思维题)相关推荐

  1. NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」

    工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...

  2. 闵梓轩大佬のnoip模拟题D1 总结 2017/10/26

    背景 题目概括 T1 题面 分析 90分算法 满分算法 T2 题面 分析 部分分算法 满分算法 满分代码 T3 题面 分析 代码 总结 背景 这道题目是去年的金牌大佬闵梓轩在一年前出的一套noip模拟 ...

  3. 一些noip模拟题一句话题解

    Problem A: 序列 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 12  Solved: 9 [Submit][Status][Web Bo ...

  4. codeforces 有意思的思维题 1 ~ 15

    codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...

  5. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  6. Noip 模拟练习5

    Noip 模拟练习5 满分300,本人240.修正后300. 难度中等. 太空密码 Description 人类一直致力于探索地外文明,为此科学家们建造了一个巨大的射电望远镜 用于接收宇宙射线.一天从 ...

  7. NOIP模拟赛 四校联考 递推 + 分类讨论 + 树上期望

    NOIP 模拟题 题目名称兔子被子蚊子 源程序文件名rabbit.cpp quilt.cpp mosquito.cpp 输入文件名rabbit.in quilt.in mosquito.in 输出文件 ...

  8. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. 因果AI诊断模型登上nature:模拟专业医师思维,诊断罕见疾病,超越SOTA算法

    来源:AI科技评论 本文约2000字,建议阅读5分钟. 因果AI系统打破了传统的根据症状诊断疾病的诊断方式,通过使用"反事实问题"缩小患者可能出现状况的范围. 如何才能提高人工智能 ...

最新文章

  1. Python中提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position
  2. linux 目标文件格式,Linux工具 - NM目标文件格式分析
  3. KDD Cup 2019 AutoML Track冠军深兰科技DeepBlueAI团队技术分享 | 开源代码
  4. SAP Spartacus 3.0 的一些变化
  5. Mac Generating Pods project Abort trap: 6
  6. Android保存图片到本地相册
  7. 20190501-编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串...
  8. GDAL交流 QQ群
  9. git 使用分支基础
  10. 美观实用的BeautifulReport测试报告
  11. C++第三方库HPSocket数据的发送与接收
  12. 算法帝国:华尔街交易怪兽的核武器缔造史
  13. Photoshop将图片转为RGB颜色模式 您还不会吗?
  14. 大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:1.外观模式概念
  15. teeth mirror牙小护牙膏让你唇红齿白,亮白笑容不是梦
  16. oppo小布机器人_oppo小布小布没反应
  17. 【Linux】僵尸进程(Z状态)和孤儿进程
  18. for in 中的index
  19. android指南针校准 代码_android 指南针app源码(亲测可用)
  20. 御坂坂的C++学习之路(7)

热门文章

  1. 2022-2028年中国环保设备行业投资分析及前景预测报告
  2. 2022-2028年小型风电产业投资及前景预测报告
  3. Redis 笔记(08)— 事务(一次执行多条命令、命令 watch/multi/exec/discard、错误处理)
  4. 分享2020 几个好用的ip地址归属地查询
  5. 2018半年总结:走过的路
  6. logging.basicConfig函数
  7. 八种基本类型的包装类你真的懂了?
  8. ARM NEON指令集优化理论与实践
  9. 2021年大数据ELK(二十四):安装Kibana
  10. 2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️