计蒜客NOIP模拟赛(2) D2T2紫色百合
【问题描述】
“牵着你的手的是她,路边开满了紫色的百合花……”
你从梦中醒来,却依然忘不了梦中的她百合花,每朵百合花都有一个权值,在二进制下写成一行‘1’,第i朵紫色百合的权值在二进制下写成i个‘1’。你想挑出其中一些组成“一束百合花”且价值在二进制下恰好为一个‘1’后面P个‘0’,那么有多少种挑选方案呢?
定义“一束百合花”的价值为这些百合花组成的集合的所有子集的权值乘积的和(空集的权值乘积算1)。如价值为1和3组成的一束百合花价值为1+1+3+1*3=8
【输入格式】
一行两个正整数N,P,含义如题目中所示n,p<=100000
【输出格式】
一个整数代表方案数模 998244353 的结果
【样例输入1】
3 3
【样例输出1】
2
【样例输入2】
233 666
【样例输出2】
572514965
稍稍运用一下数学知识发现题目要求的是选出的集合每个元素+1之后的乘积等于2^P的方案数,取个log就变成了↓
在1~N选若干个数使得总和等于P,求方案数
然后用普通的背包DP可以就拿到60分了
然后我们发现,由于物品大小是1~N,所以最多选取O(sqrt(P))个物品,背包就满了
满分做法可以用状态f[i][j]表示选i个物品,占容量为j的方案数
由于每个背包是不同的,所以根据已选的最小的物品分类讨论一下:
如果最小的物品是1,相当于i-1个物品凑出了j-i的大小,然后整体+1
如果最小的物品不是1,相当于i个物品凑出了j-i的大小,然后整体+1
需要注意我们要防止出现选择了大小为N+1的物品的情况,所以需要减去
得到递推式f[i][j]=f[i-1][j-i]+f[i][j-i]-f[i-1][j-(N+1)]
时间复杂度O(Nsqrt(N))
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long lol;
lol Mod=;
int f[][];
lol ans;
lol n,p;
int main()
{lol i,j;
cin>>n>>p;
f[][]=;
for (i=;i*(i+)/<=p;i++)
{
for (j=i;j<=p;j++)
{
f[i][j]=f[i-][j-i]+f[i][j-i];
if (j>=(n+)) f[i][j]-=f[i-][j-n-];
if (f[i][j]<) f[i][j]+=Mod;
if (f[i][j]>=Mod) f[i][j]-=Mod;
}
ans=(ans+f[i][p])%Mod;
}
cout<<ans%Mod;
}
【问题描述】
“牵着你的手的是她,路边开满了紫色的百合花……”
你从梦中醒来,却依然忘不了梦中的她百合花,每朵百合花都有一个权值,在二进制下写成一行‘1’,第i朵紫色百合的权值在二进制下写成i个‘1’。你想挑出其中一些组成“一束百合花”且价值在二进制下恰好为一个‘1’后面P个‘0’,那么有多少种挑选方案呢?
定义“一束百合花”的价值为这些百合花组成的集合的所有子集的权值乘积的和(空集的权值乘积算1)。如价值为1和3组成的一束百合花价值为1+1+3+1*3=8
【输入格式】
一行两个正整数N,P,含义如题目中所示
【输出格式】
一个整数代表方案数模 998244353 的结果
【样例输入1】
3 3
【样例输出1】
2
【样例输入2】
233 666
【样例输出2】
572514965
【数据范围与约定】
测试点编号 |
N |
P |
1 |
≤ |
≤ |
2 |
≤ |
≤ |
3 |
≤ |
≤ |
4 |
≤ |
≤ |
5 |
≤ |
≤ |
6 |
≤ |
≤ |
7 |
≤ |
≤ |
8 |
≤ |
≤ |
9 |
≤ |
≤ |
10 |
≤ |
≤ |
计蒜客NOIP模拟赛(2) D2T2紫色百合的更多相关文章
- 计蒜客NOIP模拟赛4 D2T2 跑步爱天天
YOUSIKI 在 noip2016 的一道<天天爱跑步>的题爆零后,潜心研究树上问题,成为了一代大师,于是皮皮妖为了测验他,出了一道题,名曰<跑步爱天天>. 有一个以 1 为 ...
- 计蒜客NOIP模拟赛D2T2 直线的交点
伦伦刚刚在高中学习了解析几何,学会了计算两条直线的交点.这天,老师给她布置了一道作业.在平面上有 nnn 条直线,他们之间有若干交点.给定一对平板(两条平行的直线),问这有多少对直线,他们的交点在这一 ...
- 计蒜客NOIP模拟赛6 D1T1Diamond-square
Diamond-square 算法是一种能够用于生成噪声的算法,现在我们考虑这个算法的一个变种. 你有一个 2^n\times 2^n2n×2n 的网格,一共有 (2^n+1)^2(2n ...
- 计蒜客NOIP模拟赛4 D2T1 鬼脚图
鬼脚图,又称画鬼脚,在日本称作阿弥陀签,是一种经典游戏,也是一种简易的决策方法,常常用来抽签或决定分配组合. 下图就是一张鬼脚图,其包含若干条竖线和若干条横线.请注意,横线只能水平连接相邻的两条竖线, ...
- 计蒜客 NOIP模拟赛(3) D1T1火山喷发
火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 nnn 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 M轮,每轮造成 1点伤害,等 ...
- 计蒜客NOIP模拟赛(2) D1T1邻家男孩
凡是一个具有领导力的孩子.现实生活中他特别喜欢玩一个叫做 UNO 的纸牌游戏,他也总是带着其他小朋友一起玩,然后战胜他们.慢慢地,他厌倦了胜利,于是准备发明一种新的双人纸牌游戏. 初始时,每个人手中都 ...
- 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi
那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11 ...
- 计蒜客NOIP模拟赛4 D1T3 小X的佛光
小 X 是远近闻名的学佛,平日里最喜欢做的事就是蒸发学水. 小 X 所在的城市 X 城是一个含有 N 个节点的无向图,同时,由于 X 国是一个发展中国家,为了节约城市建设的经费,X 国首相在建造 X ...
- 计蒜客NOIP模拟赛4 D1T2小X的密室
小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1 号房间,而出口在 N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会单向地创造一条 ...
随机推荐
- 201621123040《Java程序设计》第2周学习总结
1.本周学习总结 关键词:Java中的字符串与数组 c语言基本语法的迁移 相关总结:在一周的学习过程中,我自主学习Java的基本语法,前期的相关语法与c语言的基本语法相近,也算是做到了很好的回顾:在郑 ...
- vue2 前端搜索实现
项目数据少的时候,搜索这样的小事情就要交给咱们前端来做了,重要声明,适用于小项目!!!!! 其实原理很简单,小demo是做搜索市区名称或者按照排名搜索. <div> <input t ...
- 使用SecureCRTP 连接生产环境的web服务器和数据库服务器
一.使用SecureCRTP 连接生产环境的web服务器 首先,需要知道以下参数信息: 1.web服务器的ip地址 2.服务器的端口号 3.会话连接的用户名和密码 4.服务器的用户名 ...
- Hibernate之深入Hibernate的配置文件
1.创建Configuration类的对象 Configuration类的对象代表了应用程序到SQL数据库的映射配置.Configuration类的实例对象,提供一个buildSessionFacto ...
- Hibernate之ORM与Hibernate
ORM: ORM是 Object /Relation Mapping,对象/关系数据库映射. 目前比较流行的编程语言,如java ,c#等,它们都是面向对象的编程语言,而目前比较主流的数据库产品,如O ...
- Mongodb 3 查询优化(语句优化、建索引)
一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...
- wamp的mysql设置用户名和密码
wamp下修改mysql root用户的登录密码 感谢作者:http://www.3lian.com/edu/2014/02-25/131010.html 1.安装好wam ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- 第一章 IDEA的使用
第一章 IDEA的使用 1.为什么要使用idea 最智能的IDE IDEA相对于eclipse来说最大的优点就是它比eclipse聪明.聪明到什么程度呢?我们先来看几个简单的例子. A.智能提示重 ...
- Mego开发文档 - 数据注释建模
数据注释建模 Mego框架使用一组约定来基于CLR类来构建模型.您可以指定其他配置来补充或覆盖通过约定发现的内容. 在 Mego 中所有的数据对象必须要有主键.这里需要声明与EF不同的是框架只支持数据 ...