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...