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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

I - Washing clothes

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

題意:

有n個人會在某時間段來洗衣服,但是只有一臺洗衣機,當洗衣機被用時其他人只能手洗,手洗時間為y(題目給定),洗衣機的時間為x,x∈[1,y],問當x分別為[1,y]時,最短的洗衣時間是多少?

題解:

據我所知有兩個方法:
1.李超樹 2.貪心
李超樹我還不是很清楚,等學會了再更新。。
貪心的話其實就是想辦法優化,以為按照原題數據肯定是不可能暴力的,
根據題意:y肯定大于x
那我們就像最省時間的方法就是在y的時間內來洗衣機,因為一個人一旦手洗就不能再機洗,我們就看手洗時間等于多好啊機洗時間
記錄最大數為pos,也就是從pos到最后一個人,這期間是小于一次手洗時間,也就是都可以手洗
然后i從n到pos枚舉,記錄機洗所花時間的最大值,并于第pos個人手洗時間進行對比
也就是從第pos人開始,是手洗時間更長還是機洗時間更長

代碼:

#include<bits/stdc++.h> using namespace std; const int maxn=1e6+9; typedef long long ll; ll t[maxn];int main() {ios::sync_with_stdio(false);ll n,y;while(cin>>n>>y){ll sum=0;for(int i=1;i<=n;i++){cin>>t[i];}sort(t+1,t+1+n);for(ll x=1;x<=y;x++)//洗衣機 {ll pos=0;for(ll j=n-1;j>=1;j--)//從后向前找人 {int times=(n-j+1); if(y>1ll*x*times)continue;//當前人洗的時間等于多少洗衣機時間 else //當超過人洗時間,記錄此時j {pos=j;break;}}for(ll i=n;i>pos;i--){sum=max(sum,1ll*(t[i]+x*(n-i+1)));//不同時間段人用洗衣機所花時間 }if(pos)sum=max(sum,1ll*(t[pos]+y));if(x!=y)cout<<sum<<" ";else cout<<sum<<endl;}}} 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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