问题可以这么理解——

构造一个$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. java集合类之LinkedList

    概述 a, 我们知道LinkedList它的数据存储方式是双向链表,基于链表存储的特性, LinkedList具有查询较慢(顺序访问)但增加/删除较快(虽然要遍历到指定位置, 但是相对于数组存储来说不 ...

  2. Linear Referencing Tools(线性参考工具)

    线性参考工具 # Process: 创建路径 arcpy.CreateRoutes_lr("", "", 输出路径要素类, "LENGTH" ...

  3. vue 动态菜单以及动态路由加载、刷新采的坑

    需求: 从接口动态获取子菜单数据 动态加载 要求只有展开才加载子菜单数据 支持刷新,页面显示正常 思路: 一开始比较乱,思路很多.想了很多 首先路由和菜单共用一个全局route, 数据的传递也是通过s ...

  4. HTML5元素背景知识

    目录 HTML5元素背景知识 语义与呈现分离 元素选用原则 少亦可为多 别误用元素 具体为佳,一以贯之 对用户不要想当然 元素说明体例 ol元素 元素速览 文档和元数据元素 文档和元数据元素 文本元素 ...

  5. TreeSet和TreeMap中“相等”元素可能并不相等

    TreeSet和TreeMap元素之间比较大小是借助Comparator对象的compare方法. 但有些时候,即便compare()返回0也不意味着这两个元素直观上相同. 比如元素是二元组[a,b] ...

  6. springcloud整合seata

    springcloud整合seata 一.背景 二.项目结构 三.实现功能: 四.项目使用到的技术 五.整合步骤 1.引入spring-cloud-starter-alibaba-seata jar包 ...

  7. CSP-S2021 退役记

    首先大家一起恭喜博主以5pts之差与省三擦肩而过!(nmd爷去年都省三今年成功打铁了) 果然这个菜鸡一年不如一年了 upd:T3死在多测上了,随便一个40+28的人可以吊打我 Day -2: 模拟赛, ...

  8. Linux资料 帮你理清思路

    很多同学接触linux不多,对linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机it行业从业人员,="" 掌握linux是一种很重要的 ...

  9. TCP/IP参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/104597450 学习课程:<2019王道考研计算机网络> 学习目的 ...

  10. 矩阵n次幂的计算

    1.归纳法 两大数学归纳法 题目一 2.递推关系 题目一 题目二 3.方阵 题目一 4.矩阵对角化(重点) 题目一 题目二 题目三 题目四 5.矩阵性质(综合) 题目一 题目二 对于副对角线: 题目三