JAVA(HDU)杭电ACM 2955
来源:互联网 发布:最短哈密顿回路算法 编辑:程序博客网 时间:2024/05/16 15:44
动态规划题目
注意概率是相乘而不是相加
import java.util.Scanner;public class Main { public static void main(String args[]){ int n,i,j,s; Scanner scan = new Scanner(System.in); n = scan.nextInt(); for(s=0;s<n;s++){ float p = scan.nextFloat(); int bankNumber = scan.nextInt(); //每个银行有点钱 int[] M = new int[bankNumber]; //概率 float[] Pro = new float[bankNumber]; //记录所有银行的总价值 int totalM = 0; //读取数据 for(i=0;i<bankNumber;i++){ M[i] = scan.nextInt(); totalM += M[i]; Pro[i] = scan.nextFloat(); } float[] dp = new float[totalM+1]; dp[0] = 1; for(i = 1;i<=totalM;++i) dp[i] = -1; //dp[j] :在0-i个银行中,抢到money为j时风险的最小值 for(i=0;i<bankNumber;i++){ for(j=totalM;j>=M[i];j--){ dp[j] = max(dp[j],dp[j-M[i]]*(1-Pro[i])); }//endfor }//end for //找到指定概率条件下最大的价值 for(j = totalM;j >= 0 ;j--){ if(dp[j] >= 1-p){ System.out.println(j); break; } }//end for } } private static float max(float i, float j) { return (i>=j?i:j); }}
0 0
- JAVA(HDU)杭电ACM 2955
- JAVA(HDU)杭电ACM 1421
- JAVA(HDU)杭电ACM 1421
- 杭电 HDU ACM Coder (STL)
- hdu 杭电acm 1002
- 杭电ACM HDU 1004
- 杭电ACM HDU 1002
- 杭电ACM HDU 1008
- 杭电ACM HDU 1013
- 杭电ACM HDU 1014
- 杭电 acm Saving HDU
- 杭电 HDU ACM 圆桌会议
- 杭电 HDU ACM Milk
- 杭电ACM--HDU-1061
- 杭电ACM--HDU-1425
- 杭电ACM-HDU 1982
- 杭电 HDU ACM 1002
- ACM 杭电hdu 2602 Bone Collector(01背包)
- Linux内核分析:实验八
- Android View设置背景为selector的注意事项
- 诗经--有匪君子,桃之夭夭
- 批处理常用命令总结
- BOM知识点
- JAVA(HDU)杭电ACM 2955
- jquery 规范
- 点击一键切换让文本从不可以编辑到编辑状态
- socketNio
- 前端开发学习笔记08---JavaScript-2
- CSDN-markdown编辑器使用帮助
- 第八周项目2-用对象数组操作长方柱类
- Android-生成签名文件apk打包
- android网络监听