摘要: 题意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。问s币的金额经过交换最终得到的s币金额数能否增加。分析:这个题跟2240基本相似。也是利用bellman或者spfa进行松弛。细节也有不同,这个题指定了起始点。代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <cstring> 4 using namespace std 阅读全文
posted @ 2012-08-28 19:17 pushing my way 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些不同类型的货币和货币之间兑换的比例,求能否实现从一种硬币开始到自身结束后,实现盈利分析:1.一开始遇到这个题的时候,我首先想到的是dfs,在遍历的过程中如果遇到环的话进行判断,得出结果。但是这样考虑是不正确的。比如:A 1.0 BB 1.0 CB 5.0 DC 0.1 DD 1.0 Adfs时,如果先搜ABCDA是不成功的,如果这时标记搜过的D为舍弃,则ABDA就搜不到了。2.放弃dfs后,发现这里的思路跟寻找负权回路很相似,寻找负权回路是因为在执行过程中可以不断更新,而这里如果存在盈利的话,也可以不断更新。使用bellman-ford,必须保证图中每个点为起始点都没有回路。而使 阅读全文
posted @ 2012-08-28 17:43 pushing my way 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 题意:给一串数列,然后求其中的各个范围内的第k大数分析:划分树,具体分析见划分树算法。跟之前做过2104相比,这道题好象没有重复的元素。代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 //14256K 1813MS 7 //划分树 8 const int maxnum=100001; 9 struct tree 10 { 11 int array[ 阅读全文
posted @ 2012-08-28 17:03 pushing my way 阅读(426) 评论(0) 推荐(0) 编辑