[题解] LuoguP6075 [JSOI2015]子集选取
ps: 下面\(n\)和\(k\)好像和题目里的写反了。。。将就着看吧\(qwq\)
暴力打个表答案就出来了?
先写个结论,答案就是\(2^{nk}\)。
为啥呢?
首先你需要知道,因为一个集合是另一个集合的子集这个东西,集合中的一个元素对其他元素并不会有影响,完全可以把元素分开来看,然后将答案乘起来。
那么转化成一个好像好解决点的问题,就是\(k = 1\)时怎么做。
因为只有一个元素,在加上要求是\(A_{i,j} \subseteq A_{i-1,j},A_{i,j} \subseteq A_{i,j-1}\),所以这个三角矩阵一定是上面一部分有这个元素,而下面一部分没有,比方说两个用一个元素构成的满足要求的\(5 \times 5\)的三角矩阵

(0表示该集合没有这个元素,1表示有)
注意到虚线所描出来的轮廓,对于一个\(n \times n\)的三角矩阵,只有一个元素的方案数就是从左下角那个点走\(n\)步,每一步只能向上或向有走的方案数,因为这样走出的路径一定是一个合法的轮廓,轮廓的上面就代表有该元素,下面就没有。
那么这样的方案数就是\(2^n\)。
因为有\(k\)种元素,所以乘起来就是\(2^{nk}\)
快速幂算一下就好了。
\(Code:\)
#include <bits/stdc++.h>
using namespace std;
const int P=1e9+7;
inline int fpow(int x,int y){
int ret=1; for(x%=P;y;y>>=1,x=1ll*x*x%P)
if(y&1) ret=1ll*ret*x%P;
return ret;
}
int main(){
int n,m; scanf("%d%d",&n,&m);
printf("%d\n",fpow(2,1ll*n*m%(P-1)));
return 0;
}
[题解] LuoguP6075 [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 ...
- bzoj 4475: [Jsoi2015]子集选取
233,扒题解的时候偷瞄到这个题的题解了,,GG 暴力发现是2^(nm),然后就是sb题了 #include <bits/stdc++.h> #define LL long long us ...
- 洛谷 P6075 [JSOI2015]子集选取
链接:P6075 前言: 虽然其他大佬们的走分界线的方法比我巧妙多了,但还是提供一种思路. 题意: %&¥--@#直接看题面理解罢. 分析过程: 看到这样的题面我脑里第一反应就是DP,但是看到 ...
- 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 JSOI2015子集选取(动态规划)
数据范围过大说明这个题和组合一点关系也没有,答案基本上肯定是ab的形式了.暴力打表感觉不太好写,找到当年的题面发现还有个样例是6 40 401898087,于是暴力找ab=401898087的数,发现 ...
- 【BZOJ4475】 [Jsoi2015]子集选取
题目描述 数据范围 \(1\leq N,K \leq 10^9\) \(solution\) 集合S中每个元素互不影响,不妨依次考虑其中一个元素在三角形中的出现情况 问题转化为一个\(0/1\)的三角 ...
- [JSOI 2015] 子集选取
4475: [Jsoi2015]子集选取 Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 363 Solved: 255[Submit][Status] ...
随机推荐
- Netty实现原理和使用
参考: https://www.jdon.com/concurrent/netty.html Java NIO原理和使用 参考:https://www.jdon.com/concurrent/nio% ...
- LeetCode206. Reverse Linked List(反转链表)
题目链接:https://leetcode.com/problems/reverse-linked-list/ 方法一:迭代反转 https://blog.csdn.net/qq_17550379/a ...
- 修饰者模式(装饰者模式,Decoration)
1. 装饰者模式,动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更加有弹性的替代方案. 2.组合和继承的区别 继承.继承是给一个类添加行为的比较有效的途径.通过使用继承,可以使得子类在拥有 ...
- 080、Java数组之二维数组的定义及使用
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 使用Hibernate+MySql+native SQL的BUG,以及解决办法
本来是mssql+hibernate+native SQL 应用的很和谐 但是到了把mssql换成mysql,就出了错(同样的数据结构和数据). 查询方法是: String sql = " ...
- GET乱码以及POST乱码的解决方法
GET乱码以及POST乱码的解决方法 作者:东坡下载 来源:uzzf 发布时间:2010-10-14 11:40:01 点击: 一.GET乱码的解决方法 在tomcat的server.xml文件 ...
- BZOJ1019 汉诺塔/洛谷P4285 [SHOI2008]汉诺塔
汉诺塔(BZOJ) P4285 [SHOI2008]汉诺塔 居然是省选题,还是DP!(我的DP菜得要死,碰见就丢分) 冥思苦想了1h+ \(\to\) ?! 就是普通的hanoi NOI or HNO ...
- 第二单元总结:基于synchronize锁的简单多线程设计
单元统一的多线程设计策略 类的设计 电梯 每部电梯为一个线程. 电梯从调度器接收原子指令,知晓自己的状态(内部的人/服务的人.运行方向.所在楼层) 原子指令包括且仅包括: 向上走一层 / 向下走一层 ...
- HIWORD HIBYTE
#include "pch.h" #include <iostream> #include<Windows.h> int main() { ; WORD i ...
- vue :src 不显示的解决方案
一定要将静态资源引入 [ require("@/assets/") ],绑定到 模型绑定的:src 数据中 动态的数据才能有效 <template> <d ...