问题可以这么理解——

构造一个$n+1$行$n$列的01矩阵$A$,满足:

1.第$i$列$n+1$个数的和为$a_{i}$

2.任意两行不完全相同

(对应关系:第$i$行第$j$列为1当且仅当第$i$次操作的集合包含$j$)

不妨将$a_{i}$从大到小排序,即$a_{1}\ge a_{2}\ge ...\ge a_{n}$,此时构造方案:

初始矩阵为0,$\forall 1\le i\le n$将第$i$列从第$i$行开始(包括第$i$行),下面$a_{i}$行填1(若行号大于$n+1$,则从第1行开始)

关于这一策略的正确性,即证明如此构造的矩阵$A$满足之前的两个条件:

对于第1个条件,由于$1\le a_{i}\le n$,显然成立

对于第2个条件,任取$i$和$j$(其中$1\le i<j\le n+1$),来证明第$i$行和第$j$行不完全相同——

取$(i,j]$中最小的$k$,满足$a_{k}+k>n+1$,对$k$分类讨论——

(1)不存在这样的$k$,必然有$a_{j}+j\le n+1$,此时$A_{i,j}=0$而$A_{j,j}=1$

(2)$k=i+1$,此时$A_{i,i+1}=0$而$A_{j,i+1}=1$

(3)不为以上两种情况,那么$a_{k-1}+(k-1)\le n+1$(否则显然取$k-1$)

注意到$a_{k-1}\ge a_{k}$,即$a_{k-1}+(k-1)+1\ge a_{k}+k$,前者$\le n+2$,后者$>n+1$,即两者都为$n+2$,也即$a_{k-1}+(k-1)=n+1$,此时$A_{i,k-1}=0$而$A_{j,k-1}=1$

综上,即得证

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1005
4 pair<int,int>a[N];
5 int n,ans[N][N];
6 int main(){
7 scanf("%d",&n);
8 for(int i=1;i<=n;i++){
9 scanf("%d",&a[i].first);
10 a[i].first*=-1;
11 a[i].second=i;
12 }
13 sort(a+1,a+n+1);
14 for(int i=1;i<=n;i++){
15 int x=a[i].second;
16 for(int j=i;j<i-a[i].first;j++)
17 if (j<=n+1)ans[j][x]=1;
18 else ans[j-(n+1)][x]=1;
19 }
20 printf("%d\n",n+1);
21 for(int i=1;i<=n+1;i++){
22 for(int j=1;j<=n;j++)printf("%d",ans[i][j]);
23 printf("\n");
24 }
25 }

[cf1261E]Not Same的更多相关文章

随机推荐

  1. 在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表

    在我的<FastReport报表随笔>介绍过各种FastReport的报表设计和使用,FastReport报表可以弹性的独立设计格式,并可以在Asp.net网站上.Winform端上使用, ...

  2. WinForm事件与消息

    WinForm事件与消息 消息概述以及在C#下的封装 Windows下应用程序的执行是通过消息驱动的.所有的外部事件,如键盘输入.鼠标移动.按动鼠标都由OS系统转换成相应的"消息" ...

  3. SpringPlugin-Core在业务中的应用

    前言 一直负责部门的订单模块,从php转到Java也是如此,换了一种语言来实现订单相关功能.那么Spring里有很多已经搭建好基础模块的设计模式来帮助我们解耦实际业务中的逻辑,用起来非常的方便!就比如 ...

  4. 从0到1使用Kubernetes系列(二):安装工具介绍

    该系列第一篇为:<从0到1使用Kubernetes系列--Kubernetes入门>.本文是Kubernetes系列的第二篇,将介绍使用Kubeadm+Ansible搭建Kubernete ...

  5. [对对子队]会议记录4.16(Scrum Meeting7)

    今天已完成的工作 何瑞 ​ 工作内容:完成成本和分数系统 ​ 相关issue:实现成本和分数系统的逻辑 ​ 相关签入:4.16签入1 吴昭邦 ​ 工作内容:对接流水线和成本和分数系统 ​ 相关issu ...

  6. BUAA-软件工程-个人总结与心得

    提问回顾以及个人总结 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习软件开发的过程,团队之间的写作 ...

  7. 2021.9.13考试总结[NOIP模拟52]

    T1 路径 考虑每一位的贡献,第$i$位每$2^i$个数会变一次,那么答案为$\sum_{i=1}^{log_2n} \frac{n}{2^i}$. $code:$ 1 #include<bit ...

  8. Python之@property详解及底层实现介绍

    转自:https://blog.csdn.net/weixin_42681866/article/details/83376484 前文 Python内置有三大装饰器:@staticmethod(静态 ...

  9. 在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。

    在Vue前端项目中,我这里主要是基于Vue+Element的开发,大多数情况下,我们利用Element的表格组件就可以满足大多数情况的要求,本篇随笔针对表格的展示和编辑处理,综合性的介绍几款表格组件的 ...

  10. ASP的调试技术解答

    一. 调试 ASP.NET 应用程序时出现"未将项目配置为进行调试"的错误信息 症状 当您在 Visual Studio .NET 中调试 ASP.NET 应用程序时,可能会出现下 ...