注意到
有些糖果
太貴,我
們不可能
買得
起注意到有些糖果太貴,我們不可能買得起
注意到有些糖
果太貴,
我們不可
能買得起不妨
開乙個數
組按照糖
果從大到
小排序,
統計當前
的糖果價
值和su
mn
不妨開乙個陣列按照糖果從大到小排序,統計當前的糖果價值和sumn
不妨開乙個數
組按照糖
果從大到
小排序,
統計當前
的糖果價
值和su
mn 第一次
遍歷,剔
除掉那些
根本買不
起的糖果
,得到新
的sum
n第一次遍歷,剔除掉那些根本買不起的糖果,得到新的sumn
第一次遍歷,
剔除掉那
些根本買
不起的糖
果,得到
新的su
mn 那麼可
以完整得
買這些糖
果m/s
umn次
,加到答
案上去,
m還剩n
%sum
n那麼可以完整得買這些糖果m/sumn次,加到答案上去,m還剩n\%sumn
那麼可以完整
得買這些
糖果m/
sumn
次,加到
答案上去
,m還剩
n%su
mn 然後再
從1迴圈
到n,硬
模擬買掉
部分能買
得起的糖
果然後再從1迴圈到n,硬模擬買掉部分能買得起的糖果
然後再從1循
環到n,
硬模擬買
掉部分能
買得起的
糖果 下一次
遍歷,再
剔除掉那
些不可能
買得起的
糖果,重
復上面的
步驟
下一次遍歷,再剔除掉那些不可能買得起的糖果,重複上面的步驟
下一次遍歷,
再剔除掉
那些不可
能買得起
的糖果,
重複上面
的步驟
雖然看起來每次遍歷都需要o(n)得複雜度,但是因為每次都會剔除糖果
時間複雜度完全ok
#include using namespace std;
typedef long long ll;
const int maxn=2e5+10;
ll n,m,a[maxn],sumn,ans,s[maxn];
bool com(ll a,ll b)
int main()
sort(s+1,s+1+n,com);
ll top=1,shu=n;
while(1)
if(sumn==0||top==n+1) break;
if(m>=sumn)//能全部全掉就全部選
for(int i=1;i<=n;i++)//這裡可以用樹狀陣列二分來優化
}cout<}
擴充套件型歸併排序(模板 仿函式)
寫了乙個類似stl中的sort用法的歸併排序,可以以函式形式傳入排序規則。include include include include using namespace std template class mergesort private 排序規則 function func 歸併排序 void...
python 仿函式 C 仿函式
c 的標準庫stl裡面有6大部件,其中之一為仿函式。初始看到這一名字可能讓人摸不著頭腦 函式倒是挺容易理解,何故又起個仿函式的名字呢?本文將帶你揭開它看起來挺讓人迷惑但是實際上很簡單的面紗。仿函式,看名字就知道它肯定和函式有什麼關聯,但是也肯定和函式有什麼區別。函式主要是一塊接收輸入引數然後按照一定...
仿射函式和仿射組合
假設f是乙個矢性函式,若它可以表示為f x1,x2,xn a1x1 a2x2 anxn b,其中ai可以是標量,也可以是矩陣,則稱f是仿射函式。矢性函式定義 標性函式f x ax b 即我們通常見到的函式 其中a x b都是標量。維基百科的解釋 affine combination,a certai...