bzoj3056 升降梯口(组合数学+模拟)
可以发现每四个数一组(档一个就会转到其余3个),一共有n*n/4组,最后的答案一定是每组有一个1.那我们就可以按字典序顺序来循环每一个位置,直接算出未填的方案数,从而来决定这一位是否填1。
#include <cstdio>
#include <cstring>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 12
inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,bel[N][N],tot=0,cnt[N*N>>2];
ll k;
bool ans[N][N],f[N*N>>2];
int main(){
// freopen("elevator.in","r",stdin);n=read();k=read();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){if(bel[i][j]) continue;bel[i][j]=++tot;bel[j][n-i+1]=tot;bel[n-j+1][i]=tot;bel[n-i+1][n-j+1]=tot;}for(int i=1;i<=tot;++i) cnt[i]=4;for(int i=1;i<=n;++i)for(int j=1;j<=n;++j){if(f[bel[i][j]]) continue;if(cnt[bel[i][j]]==1){ans[i][j]=1,f[bel[i][j]]=1;continue;}ll res=1;cnt[bel[i][j]]--;for(int ii=1;ii<=tot;++ii) res*=cnt[ii];if(k>res) k-=res,ans[i][j]=1,f[bel[i][j]]=1,cnt[bel[i][j]]=1;}for(int i=1;i<=n;++i){for(int j=1;j<=n;++j) printf("%d",ans[i][j]);puts("");}return 0;
}
bzoj3056 升降梯口(组合数学+模拟)相关推荐
- 实验(三):单片机I/O口实验-模拟开关灯
一.实验目的与任务 实验目的: 1.掌握单片机I/O口输入输出使用: 2.掌握单片机I/O口位操作的编程. 任务: 1.根据要求编写程序,并写出原理性注释: 2. 检查程序运行的结果,分析一下是否正 ...
- IO口软件模拟IIC
一.IIC时序 IIC(Inter-Integrated Circuit, 内部集成电路)总线是飞利浦公司开发的两线式串行总线,用于短距离传输,常用语微控制器及其外围设备.它是由数据线SDA和时钟线S ...
- 一种基于IO口的模拟串口(LOG)实现方法
一.使用背景 当MCU的串口不够用时,可以通过IO模拟的方式将任意一个具有输出功能的管脚配置为串口输出,从而方便开发和调试. 二.实现原理 通过IO口模拟串口发送波形,配置对应的波特率等信息,然后映射 ...
- 3056: 升降梯口
题目链接 题目大意:-- 题解:-- 我的收获:emmmmmm~~~
- 单片机IO口模拟串口程序(发送+接收
单片机IO口模拟串口程序(发送+接收)[转] qcmc 发表于 - 2011-6-23 0:42:00 前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口.经过若干曲折并参考了一些 ...
- 串口发送程序linux,单片机IO口模拟串口程序(发送+接收
前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口.经过若干曲折并参考了一些现有的资料,基本上完成了.现在将完整的测试程序,以及其中一些需要总结的部分贴出来. 程序硬件平台:11. ...
- 【51单片机STC89C52】IO口模拟PWM控制SG90舵机
一.PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编 ...
- MCU模拟UART口
群里交流,有人问用IO口怎么模拟UART,19年做过一个项目,其中就有这个功能,测试后, 效果还可以,做下记录吧,希望能够对大家有所帮助. 一.设计思路 由于我的项目需要模拟UART能够同时实现RX和 ...
- 芯圣SQ013单片机IO口模拟串口 延时法
因为懒,许久未来更新,不过学习还是没有停止.今天我们介绍用芯圣SQ013模拟串口. 串口通讯概述 我们常用的串口通讯协议 为1个起始位+8个数据位+1位结束位.起始位为低电平,结束位高电平.一般我们常 ...
最新文章
- redis java驱动_Redis学习笔记之二 :在Java项目中使用Redis
- Android Jetpack组件之数据库Room详解(三)
- 工作169:vue项目报错[Vue warn]: Property “visible“ must be accessed with “$data.visible“ because properties
- libsvm python_LibSVM for Python 使用
- Interesting Finds: 2008.01.25
- Life is not fair, get used to it.
- tree 先序遍历 叶子结点_编程:按先序序列输出二叉树的叶子结点
- 用matlab如何画六边形,matlab怎样直接画出六边形
- Java开发手册、帮助文档
- MySQL连接navicat出现 2059 - authentication plugin ‘caching_sha2_password解决方法
- 常用的默认端口号(HTTP\HTTPS\FTP)
- matlab 模拟交易,股票量化投资策略模拟交易系统 [2017.01.19 更新]
- 用stream流来遍历处理list,筛选出符合条件的list
- 神棍节献礼之——POJ1111 Image Perimeters(bfs)
- 在3D城市模型中添加不同的纹理
- 录音转文字工具,支持6大语音识别引擎识别,非常好用的网赚工具!
- <Linux开发>--驱动开发-- 字符设备驱动(3) 过程详细记录
- 23-Travel旅游-签证
- Git - remove pushed file
- Android的USB通信(AOA连接)