当前位置: 首页 > news >正文

CF37C

将每个 01 串看作一个二进制数,将长度从小到大排序,对于当前第 \(i\) 个串,首先在第 \(i-1\) 个串的基础上加 \(1\)(如果不能加 \(1\) 即爆位数则无解),如果长度相同则无需任何操作,否则按照缺少的长度从后面补 \(0\)。这样做能保证长度短的不为长度长的前缀,且尽可能的多填数。

#include<iostream>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
struct L{int v,id;int c[1010];L(){c[0]=1;}
}a[1010],ans[1010];
int n,flag,pp[1010];
bool cmp(L x,L y){return x.v<y.v;
}
bool add(int i){for(int j=a[i].c[0];j>=1;j--){if(a[i].c[j]==0){a[i].c[j]=1;return true;}a[i].c[j]=0;}return false;
}
signed main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i].v,a[i].id=i;sort(a+1,a+n+1,cmp);a[1].c[0]=a[1].v;for(int i=1;i<=a[1].v;i++)a[1].c[i]=0;for(int i=2;i<=n;i++){for(int j=0;j<=a[i-1].c[0];j++)a[i].c[j]=a[i-1].c[j];if(!add(i)){cout<<"NO";return 0;}a[i].c[0]=a[i].v;// cout<<a[i].c[0]<<endl;}for(int i=1;i<=n;i++)ans[a[i].id]=a[i];cout<<"YES\n";for(int i=1;i<=n;i++){for(int j=1;j<=ans[i].c[0];j++)cout<<ans[i].c[j];cout<<'\n';}return 0;
}
http://www.zskr.cn/news/3254.html

相关文章:

  • 支持类 Unix 语法 ``:Windows 下用 PowerShell 7 优化 npm 和 VS Code
  • 初赛程序阅读做题要点
  • 模拟堆(手写堆 的五大操作)
  • 完整教程:简单介绍一下Clickhouse及其引擎
  • 矩阵分解
  • 容斥原理
  • 简历优化全攻略:如何写出吸引HR的简历?
  • bashrc的一些配置记录
  • MyEMS与开源浪潮:如何重塑全球能源管理的未来格局
  • doms.ul.querySelectorvs document.querySelector:DOM查询的层级关系
  • Pwn2Own Automotive 2025 决赛日:49个零日漏洞与88万美元奖金揭晓
  • MyEMS在行动:揭秘开源能源管理系统如何重塑工业与楼宇的能效未来
  • 题解:P14015 [ICPC 2024 Nanjing R] 生日礼物
  • HyperWorks许可回收机制
  • flutter开发window打包成exe可执行文件的步骤
  • 基于Linux系统的定制软件安装硬件设备选型指南
  • c++之is_trivially_default_constructible
  • 猫树分治
  • AI导航生成寻路点-FindPathToLocationSynchronously
  • 智聘无界:AI 破解全球化招聘合规、成本与人才匹配难题的实践路径
  • Flink 与Flink可视化平台StreamPark教程(CDC功能)
  • GAS_Aura-Setting Up Auto Running
  • 源码调试-带你了解下车牌识别的深度学习模型-LPRNet
  • charles破解-在线生成激活码
  • 内部排序-直接插入排序冒泡排序快速排序对比
  • C++ auto关键字
  • ARM主板:低功耗高性能的嵌入式计算核心
  • Gin 模板系统深度解析:客服系统实战开发
  • 系统盘爆了,.vscode,.android占内存太多,使用mklink命令符号链接
  • Acrobat Pro DC 2025下载及破解安装教程,附永久免费免激活中文破解版Acrobat Pro DC安装包(稳定版)