枚举优化题(状态保存)——USACO3.1.3
2011-03-06 20:46
225 查看
输出第N个丑数
假设存在第k个丑数,然后想知道第k+1个丑数,可以通过枚举n个给定的质数与前k个丑数相乘,得出大于第k个丑数且最小的数,
但n个给定的质数与前k个丑数相乘时显然会浪费时间,可以开pr[]数组保存第i个给定的质数已经乘到第几个丑数了
思想:保存当前状态,避免重复计算……
View Code
假设存在第k个丑数,然后想知道第k+1个丑数,可以通过枚举n个给定的质数与前k个丑数相乘,得出大于第k个丑数且最小的数,
但n个给定的质数与前k个丑数相乘时显然会浪费时间,可以开pr[]数组保存第i个给定的质数已经乘到第几个丑数了
思想:保存当前状态,避免重复计算……
View Code
#include<stdio.h> int a[109]; int pr[109]; int cou[1000009]; int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i,j; for(i=1;i<=n;i++) { pr[i]=1; } for(i=1;i<=n;i++) { scanf("%d",&a[i]); } int add=1,min,temp,k; cou[1]=1; for(i=2;i<=m+1;i++) { min=0x7fffffff;//开到最大,不然会错 for(j=1;j<=n;j++) { temp=cou[pr[j]]*a[j]; while(temp<=cou[i-1]) { pr[j]++; temp=cou[pr[j]]*a[j]; } if(min>temp) { min=temp; } } cou[i]=min; } printf("%d\n",cou[m+1]); } }
相关文章推荐
- 【BZOJ 1592】[Usaco2008 Feb]Making the Grade 路面修整 dp优化之转移变状态
- 存储位置优化——把视图状态信息保存在服务端而非客户端
- 存储位置优化——把视图状态信息保存在服务端而非客户端
- USACO TRAINING 1.4.2 Packing Rectangles(状态压缩+枚举)
- USACO section Camelot(枚举+队列优化)
- USACO section Camelot(枚举+队列优化)
- bzoj3126[Usaco2013 Open]Photo 单调队列优化dp
- Vue中保存用户登录状态实例代码
- 知识教程 | 优化状态栏沉浸式效果
- 【模拟枚举】Arithmetic Progressions等差数列(Usaco_Training 1.4)
- 编程的有效方法--用枚举表示选项及状态
- java 对象序列化实现复杂UI对象状态的保存。
- Activity切换后,如i何保存上一个Activit的状态
- Android中保存和恢复Fragment状态的最好方法
- BZOJ 1599: [Usaco2008 Oct]笨重的石子( 枚举 )
- [转载]巧用二进制实现0/1状态的枚举
- Android课程---Activity中保存和恢复用户状态
- oracle优化(一) oracle数据库使用 TIMESTAMP(6)类型保存年月日时分秒
- 【Android Training - Performance】优化电池续航能力[Lesson 1 - 监测设备的电量与充电状态]
- listview中radiobutton选中状态保存