傳送門
搜尋,剪枝
首先可以二分答案迭代加深,假設要買 $p$ 臺
那麼肯定賣**最小的 $p$ 臺
再來個 $a*$ ,設搜到當前情況時,有 $waste$ 的錢一定要被浪費(其實就是某些學校剩下的錢連最便宜的都買不起)
設最便宜的 $p$ 臺電腦總價值為 $sum$ ,所有學校的總錢數為 $s$,那麼我們最多浪費 $s-tot$,如果 $waste>s-tot$ 就直接返回
但是顯然還是不夠
看看資料發現相同**的電腦和相同初始錢數的學校數量很多
不妨使搜尋時保證,對於相同**的電腦,購買的學校的初始錢數單調不增,顯然這樣不會影響搜尋時的正確性
然後就可以跑過了
#include#include#include
#include
#include
using
namespace
std;
typedef
long
long
ll;inline
intread()
while(ch>='
0'&&ch<='
9')
return x*f;
}const
int n=5e5+7
;int
n,m,mon[n],cst[n],ans;
ints,sum[n],mx,las[n];
bool
gg;void dfs(int pos,int
waste)
int r=las[cst[pos]];
for(int i=r;i;i--)
las[cst[pos]]=r;
}bool check(int
p)int
main()
printf(
"%d\n
",ans);
return0;
}
370 區間加法
題目描述 假設你有乙個長度為 n 的陣列,初始情況下所有的數字均為 0,你將會被給出 k 個更新的操作。其中,每個操作會被表示為乙個三元組 startindex,endindex,inc 你需要將子陣列 a startindex endindex 包括 startindex 和 endindex 增...
LeetCode Python 370 區間加法
假設你有乙個長度為n的陣列,初始情況下所有的數字均為0,你將會被給出k 個更新的操作。其中,每個操作會被表示為乙個三元組 startindex,endindex,inc 你需要將子陣列a startindex endindex 包括 startindex 和 endindex 增加inc。請你返回k...
Azkaban3 70安裝過程記錄
1.安裝前的環境 centos7,jdk1.8 2.配置azkaban前需要先安裝如下工具 git gcc,g 1 git 安裝 參考 2 gcc,g 安裝 yum install gcc gcc c 4.解壓 tar zxvf azkaban 3.70.0.tar.gz 5.解壓後 cd azka...