日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

护花

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 护花 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

  FJ出去砍木材去了,把N(2<=N<=100,000)頭牛留在家中吃草,當他回來的時候,發現奶牛們都跑到花園里吃花去了,為了減少損失,FJ打算把牛移到牛棚中去。
  每頭牛的位置離牛棚需要Ti分鐘(1<=Ti<=2,000,000),而且在等待被移走的過程中,每分鐘破壞Di(1<=Di<=100)朵花,無論多么努力FJ一次只能移動一只奶牛,移動一只奶牛到牛棚需要2×Ti分鐘(來回各一次)。
  寫一個程序安排移動順序使得損失的花最少。

Input

  第1行輸入一個整數N
  第2到N+1行每行包含兩個整數Ti和Di

Output

  輸出一個整數表示最少損失的花的數量

Sample Input

6
3 1
2 5
2 3
3 2
4 1
1 6

Sample Output

86

Data Constraint

Hint

【樣例說明】
FJ按照6、2、3、4、1、5的順序移走奶牛
.
.
.
.
.
.

分析

設:
第一頭牛時間為a,價格為b
第二頭牛時間為c,價格為d,

則必有2ad<<2bc
ad < bc
a < bc/d
a/b < c/d
多頭牛同理
所以把時間/價格從小到大排序即可
.
.
.
.
.

程序:
#include<iostream> using namespace std; int n; unsigned long long ans,s; int t[100001],d[100001]; float a[100001];void kp(int l,int r) {if (l>=r) return;int i=l,j=r;double mid=a[(l+r)/2];do{while (a[i]<mid) i++;while (a[j]>mid) j--;if (i<=j){a[0]=a[i];a[i]=a[j];a[j]=a[0];t[0]=t[i];t[i]=t[j];t[j]=t[0];d[0]=d[i];d[i]=d[j];d[j]=d[0];i++;j--;}}while (i<=j);kp(l,j);kp(i,r); }int main() {cin>>n;for (int i=1;i<=n;i++){cin>>t[i]>>d[i];a[i]=(float)t[i]/d[i];}kp(1,n);for (int i=1;i<=n;i++){ans+=s*d[i];s+=t[i]*2;}cout<<ans;return 0; }

轉載于:https://www.cnblogs.com/YYC-0304/p/9499956.html

總結

以上是生活随笔為你收集整理的护花的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。