[cf1261E]Not Same
问题可以这么理解——
构造一个$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的更多相关文章
随机推荐
- python-docx 页面设置
初识word文档-节-的概念 编辑一篇word文档,往往首先从页面设置开始,从下图可以看出,页面设置常操作的有页边距.纸张方向.纸张大小4个,而在word中是以节(section)来分大的块,每一节的 ...
- 11.5.1 LVS-DR 实验
lvs-server VIP:10.211.55.99 DIP:10.211.55.23 负载均衡器 rs01 RIP:10.211.55.24 后端服务器 rs02 RIP:10.211.5 ...
- 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境
作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...
- 1. SSTI(模板注入)漏洞(入门篇)
好久没更新博客了,现在主要在作源码审计相关工作,在工作中也遇到了各种语言导致的一些SSTI,今天就来大概说一下SSTI模板注入这个老生常谈的漏洞 前言 模板引擎 模板引擎(这里特指用于Web开发的模板 ...
- 从网络通信的演进过程彻底搞懂Redis高性能通信的原理(全网最详细,建议收藏)
我们一直说Redis的性能很快,那为什么快?Redis为了达到性能最大化,做了哪些方面的优化呢? 在深度解析Redis的数据结构 这篇文章中,其实从数据结构上分析了Redis性能高的一方面原因. 在目 ...
- 重庆邮电大学第十一届ACM程序设计竞赛-网络选拔赛 C题
1008: 偷袭 时间限制: 1.000 sec 内存限制: 128 MB 武林要以和为贵,张麻子不讲武德来偷袭马老师的亲传弟子. 马老师有n个亲传弟子,每个弟子有一个武力值a[i]. n个弟子中只有 ...
- Kubernetes client-go 源码分析 - Reflector
概述入口 - Reflector.Run()核心 - Reflector.ListAndWatch()Reflector.watchHandler()NewReflector()小结 概述 源码版本: ...
- 如何从一台OPC Server访问多个PLC
项目中遇到如下情况: 1. 整条生产线由多个PLC分别控制,但是所有PLC在同一个局域网内.PLC采用西门子的S7-200 Smart 2. 客户希望在操作工站的电脑(跟PLC在同一个局域网内)上提供 ...
- 自定义注解结合切面和spel表达式
在我们的实际开发中可能存在这么一种情况,当方法参数中的某些条件成立的时候,需要执行一些逻辑处理,比如输出日志.而这些代码可能都是差不多的,那么这个时候就可以结合自定义注解加上切面加上spel表达式进行 ...
- 加法运算替代 牛客网 程序员面试金典 C++ Python
加法运算替代 牛客网 程序员面试金典 题目描述 请编写一个方法,实现整数的乘法.减法和除法运算(这里的除指整除).只允许使用加号. 给定两个正整数int a,int b,同时给定一个int type代 ...