洛谷P1582 倒水

2021-09-14 08:13:37 字數 665 閱讀 6795

題目描述

這道題經歷了 70 80 90 100的坎坷路程

易得2的次方個瓶子可以倒在一起,所以只需要每一次找出n中最大的2的次方的數,將n減去這個數,k–,直到k=1

然後找出比k大的最小2的次方數,用這個數減去k就是答案。

然而我只得了70分,後來我想是不是2的31次方是不是不能用int,果然改了long long後我高了10分

然後我繼續想會不會中間就把水倒完了,還沒有用到k個杯子,改了以後,果然又高了10分

最後 當k=1時,如果n=1,也是不用買新的了,果然這道題終於過了。

由此可見 思路對了 細節是多麼的重要

#include#include#includeusing namespace std;

int n,k,ans,fl;

long long a[35];

int main()

k--;

}int i;

if(fl==1||n==1)

for(i=1;i<=31;i++) if(a[i]>n) break;

ans=a[i]-n;

printf("%d",ans);

return 0;

}

洛谷P1582 倒水

一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...

洛谷P1582 倒水

一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...

洛谷P1582 倒水

一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 顯然在某些情況下cc無法達到目標,比如n 3,k 1。此時cc...