Crossing River 題解 貪心

2022-06-10 17:03:06 字數 1032 閱讀 3604

t組資料(t<=20)

給你n個人(n<=1000)過河,每個人都有權值,一條船,每次船最多運2個人,每次的花費為兩個人的較大花費

求所有人都過河需要的最小花費

經典的過河問題,記錄一下

先將權值從小到大排序一下

每次運兩個人顯然有兩種最優的方法

1:先運(a[1],a[2])過去,a[1]回來,再運(a[n],a[n-1])過去,a[2]回來

cost1=a[n]+2*a[2]+a[1]

2:先運(a[n],a[1])過去,a[1]回來,再運(a[n-1],a[1])過去,a[1]再回來

cost2=a[n]+a[n-1]+2*a[1]

然後當n只有三個的時候特判一下即可

#include#include#include#include#include#include#include#include#include#include#include//#include#define fi first

#define se second

#define debug printf(" i am here\n");

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef pairpii;

const ll inf=0x3f3f3f3f3f3f3f3f;

const int maxn=1000+5,inf=0x3f3f3f3f,mod=1e9+7;

const double eps=1e-5;

int n,a[maxn];

int main()

sort(a+1,a+1+n);

int ans=0;

while(n>3)

if(n==1)else if(n==2)else

printf("%d\n",ans);

}return 0;

}

Crossing River(貪心演算法)

include includeusing namespace std int f int n,int a 遞迴的思想 f n 2,a for int i 1 i n 1 2 i a n 1 2 1 a n f n 1 2 1,a return sum int main for int i 0 iti...

沒有題解的題解

考試要寫題解,可我不會寫,然後就變成了沒有題解的題解了 frist.評價 這是一道只考讀入的題。題面 n m的方陣,輸出被 包圍的 0 的個數。做法 讀入 本題難點 然後做一遍遍歷,將在方陣邊緣的0全部做一遍dfs遍歷將與其連成一塊的 0 全部變成 然後數一遍有幾個 0 就可以了。還在完善中,只能給...

題解 LibreOJ 6229 題解

題目鏈結 給定 n 求 f n sum n sum i frac i,j bmod 10 9 7 1 le n le 10 9 首先,這個求和範圍有些不爽,利用對稱性轉化一下得 f n frac 12 left n sum n sum n frac i,j right 然後推一下式子 begin s...