蓝桥杯 算法提高 拿糖果
来源:互联网 发布:中国对外贸易数据分析 编辑:程序博客网 时间:2024/05/22 04:58
哈哈,自己写,过了一道算法提高,开心
这题,就是想明白了就是一个从4开始到n的动态规划问题(因为1到3,dp数组对应的值都为0,因为不符合可以取糖果的题意)
用一个dp数组来代表动态规划数组,i代表此时所剩的糖果数
该题的动态规划转移方程为
dp( i )=max{dp( i - 2j)+j,dp[ i ]) (i>=4&&i>=2j)
这题还有一个点要注意,就是如果用函数取判断质数会超时,
所以要用一个判别素数的素数数组
是素数就另数组里保留0,不是就保留1,这样调用时就省去了栈调用
还有一个点,测试数据的《=100000,超出了int的范围,所以要用long int
最后就过啦
ac代码如下
#include <iostream>#include <cmath>#include <memory.h>using namespace std;long int n;long int dp[100000];int vis[100000];int main(){cin>>n;memset(dp,0,sizeof(dp));memset(vis,0,sizeof(vis));for(long int i=2;i<=n;i++){for(long int j=2;j<=sqrt(i);j++){if(i%j==0)vis[i]=1;break;}}for(long int i=4;i<=n;i++){for(long int j=2;j<=sqrt(i);j++){if(i<2*j)break;if(vis[j]==0&&i%j==0){dp[i]=max(dp[i-2*j]+j,dp[i]);//实现状态转移方程}}}cout<<dp[n]; //输出最终态return 0; }
阅读全文
0 0
- 蓝桥杯 算法提高 拿糖果
- 蓝桥杯算法提高 拿糖果
- 蓝桥杯 算法提高 拿糖果
- 蓝桥杯 算法提高 拿糖果
- 算法提高 拿糖果
- 算法提高 拿糖果
- 算法提高 拿糖果
- 算法提高 拿糖果
- 蓝桥杯练习:算法提高 拿糖果
- 蓝桥杯--算法提高:拿糖果(动态规划)
- 算法提高 拿糖果 DP
- 蓝桥杯 算法提高 拿糖果(筛法+动态规划)
- 蓝桥杯 ADV-205算法提高 拿糖果(动态规划)
- 蓝桥杯 ADV-205 算法提高 拿糖果 java版
- 蓝桥杯 算法提高 拿糖果(dfs+记忆化搜索)
- 蓝桥杯算法提高——拿糖果(数学+dp)
- 算法提高 拿糖果 线性DP
- 算法提高 拿糖果(动态规划)
- HDOJ1994 利息计算
- 如何用Java实现智能对话机器人
- 软件需求工程--需求分析
- 网站的高性能架构-存储性能优化
- BP算法(python)
- 蓝桥杯 算法提高 拿糖果
- Mac命令操作记录
- BZOJ4543/3522: [POI2014]Hotel加强版(洛谷P3565)
- 数据降维之PCA透彻讲解
- MVC,MVP 和 MVVM 的图示
- 计算机网络和英特网
- Spring学习,Bean不同配置方式比较
- vb.net 教程 8-15 数据库操作实例1
- Viewpager的轮播