第一题:
题目大意:给出N个人之间转账的手续X%,求出A转给B至少要多少钱才能使B得到100元。结果保留8位小数;N<=2000
解题过程:
1.很容易看出这题的图论模型,每条边的权值就是(1-X%),只要做一次最短路即可。
2.一开始怕中间计算的时候精度的损失(感觉8位小数精度要求比较高),打算保存分子分母,然后约分什么的,不过写起来比较麻烦,调了10分钟没搞出来,然后换成double直接除开,竟然AC了。 积累个经验。
第二题:
题目大意:给出数轴上N个位置,在其中放入M个点(M<=N),使得点与点之间的最小距离 尽可能大。 求最小距离。 N<=100000
解题过程:
1.看到最小的XX最大,或者最大的XX最小,马上想到二分答案,把找答案转化成判断性问题。二分最小距离D,然后根据贪心的原则,从左到右,能放就放(距离不小于D),看能否放入M个点。水题一次排过。。
第三题:
题目大意:给出N个数字(只会是1,2,3),要求用最少的交换次数从小到大排好序。
解题过程:
1.这题颠覆了以前我”交换次数最少的排序就是选择排序“的观点,实际上如果没有相同的元素,那么这个结论是正确的。
下面是一些排序的性质:
1.允许任意两个数字交换