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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CodeForces 670D2 Magic Powder - 2(二分+贪心)

發(fā)布時(shí)間:2024/1/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces 670D2 Magic Powder - 2(二分+贪心) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://codeforces.com/contest/670/problem/D2

簡(jiǎn)單的二分,二分所有可以做的餅干數(shù),然后遍歷就可以啦

#include <iostream> #include <stdio.h> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> using namespace std;typedef long long LL; #define N 210000 #define INF 0x3f3f3f3f #define met(a, b) memset (a, b, sizeof(a))struct node {LL one, sum;///做一個(gè)餅干需要的材料和已經(jīng)有的材料LL num, need;///當(dāng)前材料可以做的餅干數(shù)和做剩下的材料 }p[N];bool cmp (node a, node b) {return a.num < b.num; }LL n, k, L, R;LL Search () {LL l = L, r = R, maxn = 0;while (l<=r){LL mid = (l+r)/2, S = 0;for (int i=0; i<n; i++){if (p[i].num < mid){S += p[i].one-p[i].need;if (mid>p[i].num)S += (mid-1-p[i].num)*p[i].one;if (S > k) break;///第一次沒加上這個(gè)判斷條件WA在第128組測(cè)試數(shù)據(jù)上了}}if (S <= k){maxn = max (maxn, mid);l = mid+1;}else r = mid-1;}return maxn; }void Solve () {sort (p, p+n, cmp);L = R = p[0].num;for (int i=0; i<n; i++)R = max (R, (k+p[i].need)/p[i].one+p[i].num);LL ans = Search();printf ("%I64d\n", ans); }int main () {while (scanf ("%I64d %I64d", &n, &k) != EOF){met (p, 0);for (int i=0; i<n; i++)scanf ("%I64d", &p[i].one);for (int i=0; i<n; i++){scanf ("%I64d", &p[i].sum);p[i].num = p[i].sum / p[i].one;p[i].need = p[i].sum % p[i].one;}Solve ();}return 0; }

總結(jié)

以上是生活随笔為你收集整理的CodeForces 670D2 Magic Powder - 2(二分+贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。