hdu--4028--dp
这个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相关推荐
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- hdu 1171 dp(多重背包)
View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...
- HDU 4832(DP+计数问题)
HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...
- hdu 5086(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...
- hdu 2059(dp)
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
- HDU 3646 DP + 二分
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...
- Hdu 4293 DP
题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...
- hdu 3905(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...
- hdu 4472 dp
http://acm.hdu.edu.cn/showproblem.php?pid=4472 第一直觉找规律,第二直觉 把树拆成子树,然后递推或者DP 然后发现不行,然后才发现自己题都没读,,,, d ...
- hdu 1003 dp
确实十分经典的一题,但我是参照dicuss 的题目做的,真是惭愧啊, 希望可以多接触些dp类型的题,提高自己水平 格外注意 sum 的代表含义, #include<iostream> #i ...
最新文章
- 机器学习之--梯度下降和最小二乘法算线性回归
- Kinect学习(七):综合提取彩色、深度、人体骨骼点
- [PHP] - 性能加速 - 开启opcache
- 程序员为啥365天都背电脑包?这答案我服!
- 趣味娱乐小程序源码多流量主 趣味制作/藏头诗/隐藏图
- mac 允许任何源 软件安装 -- 在安全模式中没有显示
- 原创内容将成网络视频的一支奇军
- Linux之文件基础操作命令
- Qt -QQ音乐歌词桌面
- 心里窝火无语的图片_很无语的心情说说图片
- 为你的兔小巢加上实时消息推送
- 在计算机操作中粘贴的快捷键是什么,复制粘贴的快捷键,详细教您电脑怎么使用快捷键复制粘贴...
- 如何创建unity的菜单栏和窗口
- 集合之Map家族的TreeMap + Sort +Properties及Collections工具类和总结
- Kali Linux忘记密码怎么办?
- 王兴是怎么看待共享单车这块业务的
- 和菜鸟一起学产品之产品经理的自我管理能力
- 添加 polygon 网路
- mysql开源内库_记一次内衣渗透测试
- 3.4. Transactions
热门文章
- html语义化有哪些优点,语义化的HTML结构到底有什么好处?
- C 条件变量使用详解
- html ctf查找,Web CTF 解题思路总结—南京邮电大学攻防平台writeup
- 电梯tt服务器显示第二行啥意思,【大杂烩】〖其他〗奥的斯电梯服务调试器按键说明(TT)...
- 将html代码转换为dom,将HTML字符转换为DOM节点并动态添加到文档中
- 变频器服务器电路板维修,变频器线路板常见维修方法
- 微软project服务器搭建,Project Professional 版本(Project Server 2010 设置)
- postgresql 分区视图_PostgreSQL架构集中式到分布式主流架构总结
- css清除浮动的几种方法_web前端学习路线分享CSS浮动-清除浮动篇
- android调用虚拟摄像头方法,Android:如何在模拟器中使用网络摄像头?