【BZOJ4475】 [Jsoi2015]子集选取
题目描述
.png)
数据范围
\(1\leq N,K \leq 10^9\)
\(solution\)
集合S中每个元素互不影响,不妨依次考虑其中一个元素在三角形中的出现情况
问题转化为一个\(0/1\)的三角形\(\{A_{i,j}\}\),用\(0\)表示选了,\(1\)表示没选,那么如果\(A_{i,j}\)为\(1\),则\(A_{i,j}\)左边和上边都是\(1\)
考虑\(n\)比较小的情况,可以DP
\(f_i\)表示一个\(i*i\)的三角形的方案数
对于\(f_i\),第\(i\)行一定是一段\(1\)和一段\(0\)拼起来,枚举\(1\)的长度\(j\),前\(j\)列的元素都必须选\(1\),其他列除去第\(i\)行构成一个长为\((i-j-1)\)的三角形,填法为\(f_{i-j-1}\)种
最后加上是第\(i\)行全选\(1\)的情况,只有\(1\)种
\(f_i=1+\sum_{j=0}^{i-1}f_{i-j-1}=1+\sum_{j=0}^{i-1}f_j\)
\(f_0=1\)
不妨令\(S_i=\sum_{j=0}^if_j\)
原式\(f_i=1+S_{i-1}\)即\(S_{i-1}=f_i-1\)
则有
\(S_i-S_{i-1}=(f_{i+1}-1)-(f_i-1)\)
即 \(f_i=f_{i+1}-f_{i}\)
\(f_{i+1}=2*f_i\) 且\(f_0=1\)
得\(f_n=2^n\)
\(ans={f_n}^k=2^{nk}\)
#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std;
const int MOD=1000000007;
int n,k;
inline int qpow(int x,int k){
	int s=1;
	while(k){
		if(k&1) s=s*x%MOD;
		k>>=1;
		x=x*x%MOD;
	}
	return s;
}
signed main()
{
	scanf("%lld%lld",&n,&k);
	printf("%lld\n",qpow(2,n*k));
	return 0;
}
												
											【BZOJ4475】 [Jsoi2015]子集选取的更多相关文章
- BZOJ4475[Jsoi2015]子集选取——递推(结论题)
		
题目描述 输入 输入包含一行两个整数N和K,1<=N,K<=10^9 输出 一行一个整数,表示不同方案数目模1,000,000,007的值. 样例输入 2 2 样例输出 16 可以发现 ...
 - BZOJ4475 [Jsoi2015]子集选取
		
Description 有一些\(\{1\dots n\}\)的子集\(A_{i,j}, 1\leq j\leq i\leq k\)共\(\frac{k(k+1)}2\)个,满足\(A_{i,j}\s ...
 - BZOJ4475 JSOI2015子集选取(动态规划)
		
数据范围过大说明这个题和组合一点关系也没有,答案基本上肯定是ab的形式了.暴力打表感觉不太好写,找到当年的题面发现还有个样例是6 40 401898087,于是暴力找ab=401898087的数,发现 ...
 - BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
		
Description Input 输入包含一行两个整数N和K,1<=N,K<=10^9 Output 一行一个整数,表示不同方案数目模1,000,000,007的值. Sample In ...
 - [BZOJ4475][JSOI2015]子集选取[推导]
		
题意 题目链接 分析 显然可以看成一个位数为 \(n\) 的二进制数然后每一位分开考虑然后求和.最后的答案是 \(w^n\) 的形式. 考虑一个dp. 定义状态 \(f_{i}\) 表示选择了长度为 ...
 - 【BZOJ4475】子集选取(计数)
		
题意: 思路: #include<cstdio> #include<cstdlib> #include<iostream> #include<algorith ...
 - [题解] LuoguP6075 [JSOI2015]子集选取
		
传送门 ps: 下面\(n\)和\(k\)好像和题目里的写反了...将就着看吧\(qwq\) 暴力打个表答案就出来了? 先写个结论,答案就是\(2^{nk}\). 为啥呢? 首先你需要知道,因为一个集 ...
 - bzoj 4475: [Jsoi2015]子集选取
		
233,扒题解的时候偷瞄到这个题的题解了,,GG 暴力发现是2^(nm),然后就是sb题了 #include <bits/stdc++.h> #define LL long long us ...
 - 洛谷 P6075 [JSOI2015]子集选取
		
链接:P6075 前言: 虽然其他大佬们的走分界线的方法比我巧妙多了,但还是提供一种思路. 题意: %&¥--@#直接看题面理解罢. 分析过程: 看到这样的题面我脑里第一反应就是DP,但是看到 ...
 
随机推荐
- Matlab适配器模式
			
适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器.对象适配器以及接口适配器,本文根据https://blog.csdn.net/u012359453/article/details/791 ...
 - (转) Python3—UnicodeEncodeError 'ascii' codec can't encode characters in position 0-1
			
(转)python(三):Python3-UnicodeEncodeError 'ascii' codec can't encode characters in position 0-1 python ...
 - MyCat - 数据库中间插件
			
什么是MyCat 是目前最流行的分布式数据库中间插件 为什么使用MyCat 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经 ...
 - nodeJS从入门到进阶一(基础部分)
			
一.Node.js基础知识 1.概念 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是JavaScript的运行环境 Node.js 使用了一个事件驱动.非阻塞 ...
 - JavaScript学习笔记(6月份)
			
由于笔记比较杂,本身学习程度并不理想,所以暂时没有整理这些繁杂的笔记. ps:博客园markdown用起来和看起来都舒服太多了,这才是我了解的那个markdown,又回来了! 笔记 DOM对象 doc ...
 - Android为TV端助力之解析序列话的JSON
			
解析json时报错default constructor not found. class............. 比如 public class MediaRepBean implements P ...
 - 【python】文件操作
			
基本语法 open("文件名","访问方式") # 1. 打开文件 file = open("README.txt") # 2. 读取文件内 ...
 - PDF 补丁丁 0.6.2.3572 测试版发布
			
近日有网友反馈 3571 测试版的补丁丁无法正常工作.请下载新发布的 3572 版本.
 - windows安装redis服务
			
下载地址: https://github.com/microsoftarchive/redis/releases 解压. git执行:
 - MySQL Percona Toolkit--pt-osc与online DDL选择
			
pt-osc和online ddl选择 1.如果表存在触发器,不能使用pt-osc.2.如果新增唯一索引,不建议使用pt-osc,以免数据丢失.3.修改索引.外键.列名时,优先选择使用ALGORITH ...