每日一题 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. 【题解】选数字 [51nod1354]

    [题解]选数字 [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(am) T3 选数字 (select)(贪心)

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

  7. 1354 选数字 DP背包 + 数学剪枝

    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. 题解 CF1216C 【White Sheet】

    虽然也很水,但这道还是比前两道难多了... 题目大意:给你三个位于同一平面直角坐标系的矩形,询问你后两个是否完全覆盖了前一个 首先,最直观的想法应该是,把第一个矩形内部每个整数点检查一下,看看是否位于 ...

  2. Arm-Linux 移植 jpeg库

    背景: jpeg库的使用可以提高显示效率. host平台 :Ubuntu 16.04 arm平台 : S5P6818   jpeg    :v9c arm-gcc :4.8.1 主机准备: 运行以下脚 ...

  3. 是否应该学习qt源码(碰到问题的时候,或者文档对函数描述不清楚的时候,可以看一下)

    是否应该学习qt源码 如果你想调用某个函数,但是文档并没有清晰描述这个函数的功能的时候,你就需要去阅读源码,看看Qt究竟是怎么实现的.比如用QNetworkAccessManager发送一个QHttp ...

  4. Codeforces Round #588 (Div. 1) 简要题解

    1. 1229A Marcin and Training Camp 大意: 给定$n$个对$(a_i,b_i)$, 要求选出一个集合, 使得不存在一个元素好于集合中其他所有元素. 若$a_i$的二进制 ...

  5. 题解-CSA Round#18 Randomly Permuted Costs

    Problem CSA Round 18 题意概要:给定一个有重边有自环 \(n\) 点 \(m\) 边的有向无环图(DAG),每条边有其权值,每当你走到一个点 \(x\) 时,所有从 \(x\) 连 ...

  6. flutter从入门到精通二

    静态方法和静态属性(static): 通过static修饰的方法和属性称为静态方法和静态属性,注意静态方法和静态属性只能通过类名访问,不能通过对象访问. 静态方法不能访问非静态的属性和非静态方法,反正 ...

  7. Python 练习汇总

    1. Python练习_Python初识_day1 2. Python练习_Python初识_day2 3. Python练习_初识数据类型_day3 4. Python练习_数据类型_day4 5. ...

  8. SMARTY的简单实例写法

    访问页面main.php(后台页面) <?php include("../init.inc.php"); //引入入口文件 include("../DBDA.php ...

  9. py-1 语言介绍

    一.编程与编程语言 1.编程的目的 计算机的发明,是为了用机器取代并解放人力.而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑.电脑一样自动执 ...

  10. Python函数Day5

    一.内置函数 globals()    将全部的全局变量以字典的形式返回 locals()      将当前作用域的所有变量以字典的形式返回 a = 1 b = 2 def func(x): c = ...