这个dp我没做出来啊...其实不难..主要题意没理解好 fuck.

给你1-N这N个数  一共2^N-1个子集 每个子集的LCM值>=M的情况数有多少种

我也是醉了 这么个题目 给我套他那个题面 硬是没看懂 他在问什么 还是 英语太渣了

然后就是个 状态转移方程的考虑了

map<LL,LL>dp[size] 表示  前size个数 构成的lcm值为 it->first的情况为 it->second种

dp[ i ] = dp[ i-1 ]  //不添加第 I 个元素

dp[ i ][ i ] ++//第I个元素自身构成的集合

for it - >   begin() -  end()

dp[ i][ it->fist ] += it->second //第I个元素与前面的 I-1元素构成的集合组合出的情况

 1 //给你1-N 这N个数  问有多少个子集 该集合的LCM >= M
 2
 3 #include <iostream>
 4 #include <map>
 5 using namespace std;
 6
 7 const int size = 40;
 8 typedef long long LL;
 9 map<LL,LL>dp[size+5];//前 i 个数组合出的lcm值
10 map<LL,LL>::iterator it;
11
12 LL gcd( LL x , LL y )
13 {
14     return x % y == 0 ? y : gcd( y , x%y );
15 }
16
17 void init( int n )
18 {
19     dp[1][1] = 1;
20     for( int i = 1 ; i<=n ; i++ )
21     {
22         dp[i] = dp[i-1];
23         dp[i][i] ++;
24         for( it=dp[i-1].begin() ; it!=dp[i-1].end(); it++ )
25         {
26             dp[i][ it->first*i/gcd(i,it->first) ] += it->second;
27         }
28     }
29 }
30
31 int main()
32 {
33     cin.sync_with_stdio(false);
34     int n , t;
35     LL m , ans;
36     init( size );
37     cin >> t;
38     for( int k = 1 ; k<=t ; k++ )
39     {
40         cin >> n >> m;
41         ans = 0;
42         for( it = dp[n].begin() ; it!=dp[n].end() ; it++ )
43         {
44             if( it->first>=m )
45             {
46                 ans += it->second;
47             }
48         }
49         cout << "Case #" << k << ": " << ans << endl;
50     }
51     return 0;
52 }

View Code

转载于:https://www.cnblogs.com/radical/p/4078438.html

hdu--4028--dp相关推荐

  1. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  2. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  3. HDU 4832(DP+计数问题)

    HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...

  4. hdu 5086(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...

  5. hdu 2059(dp)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  6. HDU 3646 DP + 二分

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...

  7. Hdu 4293 DP

    题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...

  8. hdu 3905(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...

  9. hdu 4472 dp

    http://acm.hdu.edu.cn/showproblem.php?pid=4472 第一直觉找规律,第二直觉 把树拆成子树,然后递推或者DP 然后发现不行,然后才发现自己题都没读,,,, d ...

  10. hdu 1003 dp

    确实十分经典的一题,但我是参照dicuss 的题目做的,真是惭愧啊, 希望可以多接触些dp类型的题,提高自己水平 格外注意 sum 的代表含义, #include<iostream> #i ...

最新文章

  1. 机器学习之--梯度下降和最小二乘法算线性回归
  2. Kinect学习(七):综合提取彩色、深度、人体骨骼点
  3. [PHP] - 性能加速 - 开启opcache
  4. 程序员为啥365天都背电脑包?这答案我服!
  5. 趣味娱乐小程序源码多流量主 趣味制作/藏头诗/隐藏图
  6. mac 允许任何源 软件安装 -- 在安全模式中没有显示
  7. 原创内容将成网络视频的一支奇军
  8. Linux之文件基础操作命令
  9. Qt -QQ音乐歌词桌面
  10. 心里窝火无语的图片_很无语的心情说说图片
  11. 为你的兔小巢加上实时消息推送
  12. 在计算机操作中粘贴的快捷键是什么,复制粘贴的快捷键,详细教您电脑怎么使用快捷键复制粘贴...
  13. 如何创建unity的菜单栏和窗口
  14. 集合之Map家族的TreeMap + Sort +Properties及Collections工具类和总结
  15. Kali Linux忘记密码怎么办?
  16. 王兴是怎么看待共享单车这块业务的
  17. 和菜鸟一起学产品之产品经理的自我管理能力
  18. 添加 polygon 网路
  19. mysql开源内库_记一次内衣渗透测试
  20. 3.4. Transactions

热门文章

  1. html语义化有哪些优点,语义化的HTML结构到底有什么好处?
  2. C 条件变量使用详解
  3. html ctf查找,Web CTF 解题思路总结—南京邮电大学攻防平台writeup
  4. 电梯tt服务器显示第二行啥意思,【大杂烩】〖其他〗奥的斯电梯服务调试器按键说明(TT)...
  5. 将html代码转换为dom,将HTML字符转换为DOM节点并动态添加到文档中
  6. 变频器服务器电路板维修,变频器线路板常见维修方法
  7. 微软project服务器搭建,Project Professional 版本(Project Server 2010 设置)
  8. postgresql 分区视图_PostgreSQL架构集中式到分布式主流架构总结
  9. css清除浮动的几种方法_web前端学习路线分享CSS浮动-清除浮动篇
  10. android调用虚拟摄像头方法,Android:如何在模拟器中使用网络摄像头?