【JZOJ6233】【20190627】心的旋律
题目
你需要构造一个\(n\)个点的二分图
定义\(F(A)\)表示左部点集\(A\)能够到达的右部中的点
使得满足 $ F(A) \lt |A| $ 的集合恰好有 $ k $ 个
\(1 \le n \le 32 \ , \ 0 \le k \le 2^n\)
题解
当$A = \emptyset $ 时满足\(F(A) \lt |A|\) ,当\(k = 2^n\)时无解
下面都考虑构造满足\(F(A) \ge |A|\) 的个数为\(k \ = \ 2^n - k\)
另\(F_{i+1}\)表示第\(i\)个点的F集合,令$ F_{i+1} \supset F_{i} $ ,记\(d_i = |F_{i}|\),即\(d_{i+1}-d_i = 0 / 1\)
那么结论是$d_i $的 \(2^n\) 个取值恰好一一对应了$ 1 \to 2 ^ n $ 的 $ k $ 值
并且存在一个更强的结论
证明:
考虑如何计算一个\(d_i\)的方案:\[\begin{align}
F&= \sum_{i=1}^{n} \sum_{j=1}^{d_i}(^{i-1}_{j-1})\\
&= \sum_{i=1}^{m} (^n_i) - (^{B_i - 1}_{\ \ \ i}) \\
\end{align}
\]记 $ d_i =1 $ 的位置为 $ B_ 1 \ , \ \cdots \ , \ B_m $ ,只需要证明
(注意组合数的一个竖列和主对角线求和是可化简的)
*1.若\(m_1 \lt m_2\) ,则\(F_1 \lt F_2\)
不妨考虑\(m , m + 1\) \(m \lt n\)
$F_{m+1} - F_{m} \ge (^n _m) - [ (^{n-m}_1 )+ ({n-m-1}_2)+\cdots+({n-1}_m) ] = (^{n-m-1}_0) \ge 1 $
由于前一半是和\(B_i\)独立的,所以多加一位的贡献可以覆盖后一半的贡献
*2.\(m_1=m_2\),记\(d_i\)形成的二进制数\(D1 \gt D2\) ,则\(F_1 \lt F_2\)
不妨考虑二进制位\(i\)和\(i+1\)的贡献 \((i \ge m)\)
\(F_{i} - F_{i+1} \ge (^i_m) - [(^{i-m}_1) +\cdots + (^{i-2}_{m-1}) + (^{i-1}_m) ] = (^{i-m}_0) \ge 1\)
说明二进制位不同可以覆盖后面所有二进制位的贡献
可以说明上面的所有结论
Code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=33;
typedef pair<ll,ll>pii;
int n,d[N];ll K,C[N][N];
pii a[N];
int main(){
freopen("circle.in","r",stdin);
freopen("circle.out","w",stdout);
scanf("%d%lld",&n,&K);
K=(1ll<<n)-K;
if(!K)puts("-1"),exit(0);
int cnt=0;
for(int i=0;i<=n;++i)C[i][0]=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)C[i][j]=C[i-1][j-1]+C[i-1][j];
for(cnt=0;C[n][cnt]<K;K-=C[n][cnt++]);
for(int i=n,now=0;i&&now<cnt;--i){
if(C[i-1][cnt-now-1]<K)K-=C[i-1][cnt-now-1];
else now++,d[i]=1;
}
for(int i=1;i<=n;++i)d[i]+=d[i-1];
for(int i=1;i<=n;++i,puts(""))
for(int j=1;j<=n;++j)printf(j<=d[i]?"1 ":"0 ");
return 0;
}
【JZOJ6233】【20190627】心的旋律的更多相关文章
- pygame系列_原创百度随心听音乐播放器_完整版
程序名:PyMusic 解释:pygame+music 之前发布了自己写的小程序:百度随心听音乐播放器的一些效果图 你可以去到这里再次看看效果: pygame系列_百度随心听_完美的UI设计 这个程序 ...
- 【breathandlife】气势磅礴、比较好听的旋律有哪些?
[breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...
- [deviceone开发]-心形点赞动画示例
一.简介 这个示例展示do_Animator组件的简单使用,通过点击"点赞"按钮,不断弹出心形图片,向上动画漂移到顶部消失.间隔时间和上下左右移动的步长都是一定范围的随机值.二.效 ...
- BZOJ 后缀自动机四·重复旋律7
后缀自动机四·重复旋律7 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的 ...
- WPF 如何画一颗心
如何用WPF画一个心. MainWindow.xaml <Window x:Class="Heart.MainWindow" xmlns="http://schem ...
- 你的眼睛背叛你的心:解决 .NET Core 中 GetHostAddressesAsync 引起的 EnyimMemcached 死锁问题
在我们将站点从 ASP.NET + Windows 迁移至 ASP.NET Core + Linux 的过程中,目前遇到的最大障碍就是 —— 没有可用的支持 .NET Core 的 memcached ...
- fir.im Weekly - 暖心的 iOS 持续集成,你值得拥有
一则利好消息,flow.ci 支持 iOS 项目持续集成,想试试的伙伴去 Gitter群 问问.首批尝鲜用户@阿米amoy 已经用 flow.ci 实现了基本的 iOS 持续集成,并详细记录整个 Bu ...
- CSS3制作心形头像
1.功能需求: 最近有一个基于微信开发的Mobile Web项目,是一个活动页面.功能需求:用户使用微信扫描二维码,然后授权使用微信登录,然后读取用户的昵称和头像,然后显示在一个饼图上面.头像需要有一 ...
- 如何用Python实现杨辉三角和心
1. 如何实现杨辉三角 import copy list=[] newlist=[] def Fibonacci(list,n): newlist.append(0) if n ==1: return ...
随机推荐
- C#读写设置修改调整UVC摄像头画面-倾斜
有时,我们需要在C#代码中对摄像头的倾斜进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...
- Spring项目中的数据库加密
有时候为了安全,我们需要对数据库密码进行加密: SpringDruid数据源加密数据库密码 当我们初步开始打造系统时,什么都没有一片空白,而数据源使用的是SpringDruid时,我们可以通过这篇博客 ...
- Spring Boot 的自动配置探究、自制一个starter pom
//TODO @Conditional @Condition
- 笔记:Java Language Specification - 章节17- 线程和锁
回答一个问题:多线程场景下,有时一个线程对shared variable的修改可能对另一个线程不可见.那么,何时一个线程对内存的修改才会对另一个线程可见呢? 基本的原则: 如果 读线程 和 写线程 不 ...
- 使用基础知识完成java小作业?强化练习-1.输入数组计算最大值-2.输出数组反向打印-3.求数组平均值与总和-4.键盘输两int,并求总和-5.键盘输三个int,并求最值;
完成几个小代码练习?让自己更加强大?学习新知识回顾一下基础? 1.输入数组计算最大值 2.输出数组反向打印 3.求数组平均值与总和 4.键盘输两int,并求总和 5.键盘输三个int,并求最值 /* ...
- cmd查找并杀死被占用的端口的进程
java开发启动server的时候经常会遇到端口被占用的错误提示, 如果不想更换服务配置的端口号,那么怎么解决端口被占用的情况呢? 1. cmd窗口输入netstat -ano ,在列表中查看被占用的 ...
- CTFd平台搭建以及一些相关问题解决
CTFd平台搭建以及一些相关问题解决 一.序言 因为想给学校工作室提高一下学习氛围,随便带学弟学妹入门,所以做了一个ctf平台,开源的平台有CTFd和FBCTF,因为学生租不起高端云主机所以只能选择占 ...
- vector中的push_back函数的意思是什么
push_back 就是在vector的末尾插入一个元素, vector 中的erase()函数,从指定容器删除指定位置的元素或者某段范围内的元素,删除之后,返回值也是一个迭代器,指向最后一个删除 ...
- 解决在页面中无法获取qrcode.js生成的base64的图片
应用场景 生成带二维码的推广海报图片 旧方法: 将用户自己的推广连接先通过qrcode.js生成二维码,然后再用后台返回的一张背景图片和二维码通过canvas绘制成一张海报. 问题 在部分安卓手机上获 ...
- 互斥锁的robust属性的介绍和使用
一个具体的场景:在多线程中,当一个线程获得锁之后异常退出后,应该怎么处理? 方案一 使用锁的robust特性 简单地讲,就是当拥有这个锁的线程挂了后,下一个尝试去获得锁的线程会得到EOWNWERDEA ...