upc 真假鑑定 思維 模擬

2021-10-04 20:40:00 字數 1715 閱讀 6176

真假鑑定

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

有n堆硬幣依次排列,每一堆有a_i個。每堆硬幣全是真幣或全是假幣,真幣每個重5克,假幣每個重4克。你有一台電子天平,可以從每堆硬幣中挑出若干個進行一次稱量(也可以乙個都不選)。現在你想要知道,若要確定前1,2,……,n堆硬幣的真假,至少要稱量幾次。

輸入第一行乙個整數n,表示硬幣的堆數。

接下來一行n個整數a_i,表示每堆硬幣的數量。

輸出n行,每行乙個整數,第i行表示想要確定前i堆硬幣的真假至少要稱量幾次。

樣例輸入 copy

32 3 4

樣例輸出 copy11

1提示

對於10%的資料,n≤1

對於30%的資料,n≤2

對於60%的資料,n≤100

對於80%的資料,n≤1000

對於100%的資料,n≤10 ^ 5,a_i≤10 ^ 9

存在10%的資料,a_i=1

請教大佬之後,終於搞懂了。

根據給出的提示,可以知道當拿出來的每個組的個數為 1 2 4 8 … 的時候就可以唯一確定,所以問題轉換成前 i 個數中1 2 4 8 … 這樣組合的最小組數。

思路就是列舉每乙個數,找到 <= 當數的最大的2的冪,讓這個位置的冪數加1,對當前位置及之前的數,依次列舉1-30(指的是2的冪的位置,比如說 2 ^ 0 的位數為1,2 ^ 3 的位數為4),每種分兩種情況討論:

(1) 當當前的2的冪的個數 > 當前位數與方案數的乘積,說明方案數不夠,需要新增方案,新增的方案為 多出來的個數 / 當前位數,當不能整除的時候,還需要多出來乙個方案存多餘的。

(2)反之則在當前方案後面加上即可。

對於 5 5 5 這種的,顯然 5 可以表示成1 2 4 ,往前補位就好了,也就是說每次列舉到的位數,比如當前位數為4,前面需要構成能1 2 4 8 這樣的數列,而且每乙個數字一定可以放得下,因為列舉的方式是遞增的。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n=

100010

,mod=

1e9+

7,inf=

0x3f3f3f3f

;const

double eps=

1e-6

;int n;

int a[n]

,mp[n]

;ll fun[n]

;int

main()

}printf

("%d\n"

,ans);}

return0;

}

upc 潔淨無瑕(思維)

時間限制 1 sec 記憶體限制 128 mb 題目描述 小x是一位富豪,酷愛收藏寶石。在他的收藏櫃中,從左到右依次擺放著各種形態不一的鑽石。為了評價一顆鑽石的美觀程度,小x為每顆鑽石賦予了乙個潔淨度ai。小x認為,鑽石之間不能太衝突。他會從左到右依次看過去,若兩顆相鄰的鑽石,其中一顆的潔淨度為奇數...

球鞋真假難辨,毒APP鑑定幫你搞定

現如今,人們的生活水平提高了,更多的年輕人開始注重穿搭了,而這其中運動裝備,比如球鞋 球衣 椰子 帆布鞋,尤其是各種潮牌備受青睞,很多聯名成為了很多年輕人不斷追求的款式。甚至有人會為了一雙滿天星排上幾天幾夜的隊。但是我們都知道,不管什麼東西,只要需求的人多了之後,假貨程式設計客棧也會跟著層出不窮,而...

UPC 1790 模擬 潛伏者

時間限制 1 sec 記憶體限制 128 mb 提交 251 解決 58 提交 狀態 討論版 命題人 admin r 國和 s 國正陷入戰火之中,雙方都互派間諜,潛入對方內部,伺機行動。歷盡艱險後,潛伏於 s 國的 r 國間諜小 c 終於摸清了 s 用密碼的編碼規則 1.s 方內部欲傳送的原資訊經過...