給定你n個酒杯的大小,
和你一大瓶酒 容量m,
要求1 每個杯至少放一半,奇數向上取整
2 容量大的杯子放的酒要比容量小的多
3 每個杯子裡都要有,並且是整數性質。
是周賽的題,開始時交了十幾遍,一直錯在第8個樣例。比賽完又自己開codeforce交了十幾次。。終於發現了錯誤的原因竟然是兩行的**的順序顛倒了,導致了乙個失誤。。。。
那就是在後來 把茶杯裡剩下的給其他酒杯倒得時候,要先減去酒杯的容量,在更改cup的大小。。
總體是乙個貪心,開始只是想的是每次 放一半,放完一半後,把剩下的一股腦的都放到最大的那個杯子裡,沒有考慮如果第乙個又放滿了怎麼辦。
後來看題解,發現了要從大到小一次再放。
(為什麼讓所有人都感到滿意,這裡是貪心的思想。)
#include
#include
#include
#include
using
namespace
std;
const
int maxn=3000;
struct node
;int cmp1(node a,node b)
int cmp2(node a,node b)
int main()
if(sum>w)
sort(v,v+m,cmp1);
w-=sum;
int t=m-1;
while(w>0)
else
}sort(v,v+m,cmp2);
for(int x=0;x<=m-1;x++)
cout
<" ";
//printf("%d\n",v[m-1].v);
return
0;}
codeforces1141D題解 暴力 貪心
給出兩個長度為 n 1 n 150000 的僅含有小寫字母和 的字串,詢問兩個字串最多能有幾對匹配的字元。每個字母都可以與和它相同的字元匹配,可以與任意字元匹配,匹配與位置無關 輸出最大匹配對數,以及每一對中兩個字元在字串中的位置 cf1141d created by hao on 2019 4 1...
Codeforces 587C 樹上倍增
題意 求樹上兩點路徑中的前 a 10 小的點權值。思路 類似lca倍增演算法來儲存 i 2 j 路上的 前 10 小個 的點權值。然後要寫乙個權值合併 具體求 u v 的話,就是先分別計算 和 減1是lca會重疊 然後再合併,輸出答案。include include include include ...
Codeforces 976C 題解報告
對資料進行排序 1 按左邊的數從小到大排 2 若左邊的數相等,則按右邊的數從大到小排。排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。比如2 13 2 12 1 11排序之後,變為 1 11 2 13 2 12因為12 13,則有 2,12 被包含在它的上乙個數 2,...