zoj 1524 - Supermarket
来源:互联网 发布:淘宝上如何买到真牛排 编辑:程序博客网 时间:2024/06/05 01:19
题目:去超市购物,你有一个购物单,买东西按照商店的顺序,并且不能倒退,求最小花费。。
分析:dp,LCS。没有用LCS算法,代价是一样的,用串 B逆向的与串 A进行匹配(避免后效性);
这么写起来,觉得很像是单调队列优化的 LIS。。。代价等同LCS,T = O(MN)
说明:看错题目了,以为list 一定是非严格单调的,想用二分来的。。。(2011-9-24 12:34)
#include <stdio.h>#include <stdlib.h>#include <math.h>#define min( a, b ) ((a)<(b)?(a):(b))#define INF 10000001.0typedef struct node1{ int good; float cost;}food;food Food[ 100001 ];int list[ 101 ];float mval[ 101 ];int main(){ int n,m; while ( scanf("%d%d",&n,&m) && (m+n) ) { for ( int i = 1 ; i <= n ; ++ i ) scanf("%d",&list[ i ]); for ( int i = 1 ; i <= m ; ++ i ) scanf("%d%f",&Food[ i ].good,&Food[ i ].cost); for ( int i = 1 ; i <= n ; ++ i ) mval[ i ] = INF; mval[ 0 ] = 0.0; for ( int i = 1 ; i <= m ; ++ i ) for ( int j = min(n,m) ; j >= 1 ; -- j ) if ( Food[ i ].good == list[ j ] && mval[ j ] > mval[ j-1 ] + Food[ i ].cost ) mval[ j ] = mval[ j-1 ] + Food[ i ].cost; if ( fabs( mval[ n ] - INF ) < 0.1 ) printf("Impossible\n"); else printf("%.2f\n",mval[ n ]); } return 0;}
0 0
- ZOJ 1524 Supermarket
- ZOJ 1524 Supermarket
- zoj 1524 - Supermarket
- zoj 1524 Supermarket
- zoj 1731 Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket
- Supermarket Equipment
- pku1456 Supermarket
- zoj1731-Supermarket
- POJ1456 Supermarket
- poj1456 - Supermarket
- google测试第一题及
- 面向对象程序设计上机练习三(有默认参数的函数)
- Java-线程$等待唤醒机制(wait,notify)
- Oracle获取当天,当月,当年的数据
- Connection、PreparedStatement、Statement、ResultSet是JDBC编程常用的接口,请分别简述它们的作用?
- zoj 1524 - Supermarket
- 面向对象程序设计上机练习四(变量引用)
- 判断一个单链表是否有环及环的链接点
- hibernate 关联关系 一对一 外间关联 .
- 记忆化搜索
- 面向对象程序设计上机练习一(函数重载)
- 排序二叉树
- 九度OJ 1446 Head of a Gang -- 并查集
- 顺序表