51nod P1354 选数字 题解

时间:2022-10-28 20:07:48

每日一题 day8 打卡

Analysis

背包+离散化

这题是我们一次模拟赛的T2,结果我的暴力全TLE了。

关键是如果将两个因数的乘积离散化在因数数组中之后等于这个乘积本身,说明a[j]*in离散化之后的下表可以通过+=ans[j]来计算

然后就可以愉快地dp啦~~~

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000+10
#define mod 1000000007
using namespace std;
inline int read()
{
int x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline void write(int x)
{
if(x<){putchar('-');x=-x;}
if(x>)write(x/);
putchar(x%+'');
}
int T;
int n,k,cnt;
int a[maxn],bf[maxn],ans[maxn];
int main()
{
T=read();
while(T--)
{
memset(ans,,sizeof(ans));
memset(a,,sizeof(a));
cnt=;
n=read();k=read();
for(int i=;i*i<=k;i++)
if(k%i==)
{
if(i*i==k)
{
a[++cnt]=i;
continue;
}
a[++cnt]=i;
a[++cnt]=k/i;
}
sort(a+,a+cnt+);
ans[]=;
for(int i=;i<=n;i++)
{
int in=read();
if(k%in!=) continue;
for(int j=cnt;j>=;j--)
{
int ls=lower_bound(a+,a+cnt+,a[j]*in)-a;
if(a[ls]==a[j]*in)
{
ans[ls]+=ans[j];
ans[ls]%=mod;
}
}
}
printf("%d\n",ans[cnt]);
}
return ;
}

请各位大佬斧正(反正我不认识斧正是什么意思)

51nod P1354 选数字 题解的更多相关文章

  1. 【题解】选数字 &lbrack;51nod1354&rsqb;

    [题解]选数字 [51nod1354] 传送门:选数字 \([51nod1354]\) [题目描述] 共 \(T\) 组测试点,每一组给定一个长度为 \(n\) 的序列和一个整数 \(K\),找出有多 ...

  2. 51nod1354 选数字

    01背包tle. 解题报告(by System Message) 类似于背包的DP,以乘积为状态.先把等选数字里面不是K约数的去掉.然后找出K的约数,进行离散化.然后dp[i][j]表示前i个数字乘积 ...

  3. 51nod 省选联测 R2

    51nod 省选联测 R2 上场的题我到现在一道都没A,等哪天改完了再写题解吧,现在直接写第二场的. 第二场比第一场简单很多(然而这并不妨碍我不会做). A.抽卡大赛:http://www.51nod ...

  4. 51nod 1770 数数字

    1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题  收藏  关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...

  5. 51 Nod 1354 选数字(体现动态规划的本质)

    1354 选数字  基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 当给定一个序列a[0],a[1],a[2],...,a[n-1] 和一个整数K时 ...

  6. Qbxt 模拟题 day3&lpar;am&rpar; T3 选数字 &lpar;select&rpar;&lpar;贪心&rpar;

    选数字 (select Time Limit:3000ms Memory Limit:64MB 题目描述 LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上 ...

  7. 1354 选数字 DP背包 &plus; 数学剪枝

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1354&judgeId=187448 其实这题和在若干个数字中,选 ...

  8. JSOI2015 一轮省选 个人题解与小结

    T1: 题目大意:现有一个以1为根节点的树,要求从1开始出发,经过下面的点然后最终要回到根节点.同时除了根节点之外各点均有一个权值(即受益,每个点上的收益只能拿一次,且经过的话必须拿),同时除了根节点 ...

  9. 51nod 1943 联通期望 题解【枚举】【二进制】【概率期望】【DP】

    集合统计类期望题目. 题目描述 在一片大海上有 \(n\) 个岛屿,规划建设 \(m\) 座桥,第i座桥的成本为 \(z_i\),但由于海怪的存在,第 \(i\) 座桥有 \(p_i\) 的概率不能建 ...

随机推荐

  1. Spring 框架的架包分析、功能作用、优点,及jar架包简介

    Spring 框架的架包详解    Spring的作用     Spring的优势  由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或 ...

  2. linux中who命令显示的tty、pts和&lpar;&colon;0&rpar;&lpar;&colon;0&period;0&rpar;是什么意思

    http://blog.csdn.net/cwj_beyond/article/details/6987345 http://unix.stackexchange.com/questions/7217 ...

  3. 字符串匹配算法之BF&lpar;Brute-Force&rpar;算法

    BF(Brute-Force)算法 蛮力搜索,比较简单的一种字符串匹配算法,在处理简单的数据时候就可以用这种算法,完全匹配,就是速度慢啊. 基本思想 从目标串s 的第一个字符起和模式串t的第一个字符进 ...

  4. 5&period;6 WebDriver API实例讲解(16-30)

    16.操作单选框 被测试的网页为Demo1. Java语言版本的API实例代码: public static void operateRadio(){ driver.get("file:// ...

  5. Volatile vs&period; Interlocked vs&period; lock

    今天在*上看到一个关于Volatile, Interlock, Lock的问题,发现回答的特别好,所以就想到把它翻译一下, 希望给那些对它们有疑惑的人提供点帮助 :假设有一个类 ...

  6. Flask中路由模块的实现

    在Flask中的路由功能主要通过修饰函数route实现,下面我们就来挖掘下route在源代码中是怎么分配视图函数的. def route(self, rule, **options): def dec ...

  7. Docker&lowbar;部署jenkins&lpar;dockerfile实现&rpar;

    docker+jenkins开始合体! 我用的是ubuntu14.04的基础镜像,具体的这里不做赘述. 我在/tmp/目录下建了一个Dockerfile文件: touch Dockerfile vi ...

  8. linux安装git方法

    用git --version命令检查是否已经安装 在CentOS5的版本,由于yum源中没有git,所以需要预先安装一系列的依赖包.在CentOS6的yum源中已经有git的版本了,可以直接使用yum ...

  9. 分析RedisRDB和AOF两种持久化机制的工作原理及优劣势

    一.RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only(追加)的模式写入一个日志文件中,在redi ...

  10. KTV项目之3个ListView的跳转和加载歌手图片

    第一个ListView: 第二个ListView: 第三个ListView: 定义一个KTVUtil类,在里面定义一个静态变量保存歌手图片 //定义一个静态变量保存歌手图片路径 public stat ...