貪心 UVa1612 猜名次(浮點數精度問題)

2021-08-20 15:09:56 字數 1089 閱讀 4264

1.讀題:本題的題目需要好好理解一下,剛開始給的是id依次1~ n的得分,然後再給的是rank1~ rank n的id,題目說的不是很清楚。

2.基本思路就是貪心。為了使後面選手的選擇空間更大,rank靠前的選手因盡能力分高,這道題就僅此而已了。另外id並列的情況也很容易分析,詳情可以看**。

3.本題要考慮浮點數精度的問題。比較明智的做法是,由於給的和輸出的都是兩位小數,所以輸入時乘100,輸出時除100。

#include 

#include

#include

#include

#include

#define _for(i,a,b) for(int i = (a); i<(b); i++)

using

namespace

std;

const

int maxn = 20000;

struct node a[maxn],b[maxn]; // b為原始輸入,a為按rank排好序的

int n;

int score(int last, int i) ;

sort(temp, temp + 8, greater() ); // sort降序排列的方法,不要忘了()

if (a[i - 1].id < a[i].id)

else

return -1;

}int main()

int t;

_for(i, 0, n)

int last = 300000 + 100;

_for(i, 0, n)

if (last == -1) printf("case %d: no solution\n", ++kase);

else

printf("case %d: %.2f\n",++kase,(double)last/100);

}return

0;}

1.讀入的浮點數往往有誤差,比如9.53讀成9.5299999999這種,這時候為了避免可以使用round函式,其功能是四捨五入。不過講道理這種誤差這麼大的情況少見,所以只要記得遇到了可以用round就可以了。

uva1612 直接根據題意貪心

思路 三門分數,然後就是8種組合,先預處理出來每種組合,然後就是根據題意去貪心了,然前面的分數在滿足條件的情況下盡量高。author crazy ac jamesqi time 2015 file name pragma comment linker,stack 1024000000,1024000...

uva 10382題解(貪心)

題目大意 有一塊草坪,長為l,寬為w,在它的水平中心線上有n個位置可以安裝噴水裝置,各個位置上的噴水裝置的覆蓋範圍為以它們自己的半徑ri為圓。求出最少需要的噴水裝置個數。8 20 2 5 34 1 1 27 2 10 2 13 3 16 2 19 4 3 10 1 3 59 3 6 13 10 1 ...

UVA 11729 簡單貪心

新增鏈結描述 結論 根據完成的時間排序。證明 假設交代任務時間為a,完成任務時間為b。選取n個人之中的兩個人進行觀察,這兩個人之間的順序對其他人不產生影響,假設b1 b2,當b1在前面的時候,二者為max1 a1 a2 b2,a1 b1 當b1在後面的時候max2 a2 b2,a1 a2 b1 因為...