鏈結ac.nowcoder.com/acm/problem/21613
其他題解除了二分答案都好他媽智...
來乙個暴力題解
首先我們知道要想最大值最小;就要盡可能的平攤每個人打的怪,那麼對於乙個比較大的怪,他只能有你較強的兵去打,同時你較強的兵可以打各種比他若的怪。
先對兵和怪排序
我們可以倒著乙個乙個考慮怪的數值,看有哪兵可以打這個怪,記錄\(lp\)表示之前可以打怪總兵數;\(pre\)表示這一輪能新增的可以打怪的兵;\(ans\)表示之前的最大值;為了盡可能平攤每個人打的怪,我們要讓當前的怪先平攤到新增的這部分然後考慮兩種情況;
1是平攤以後的最大值小於等於\(ans\)
2是平攤以後的最大值大於\(ans\)
很明顯可以發現若是第二種情況,我們可以將多出\(ans\)的部分向之前的那些兵那邊去補全,那麼能補多少使得值還是\(ans\)呢,這時候就發現還需要記錄乙個\(modd\)變數表示假設每個都填滿到\(ans\)後,還能空出多少個,那麼我們只要考慮\(modd\)的值即可知道什麼時候能把之前的都填到\(ans\),那麼填好之後如果還有多出,就要除以總人數,更新\(ans\)的值
而對於1,無需更新\(ans\)的值
對於1和2,操作後都要更新modd的值
這麼乙個乙個考慮完即可
但是我們會發現一種特殊情況,就是新的乙個怪並沒有更新出多的可以打的兵,那麼這時候就要乙個特判此種情況,新增的人又可以攤到modd上 如果多了再更新ans值(實際為情況1但是分母不能為0所以特判).
蠢人是這麼寫題的...
#include#define ll long long
using namespace std;
struct nodenum[55];
int cmp(node x,node y)
ll a[55],sum[55];
int main()
sort(a+1,a+n+1);
cin>>m;
for(int j=1;j<=m;j++)
for(int j=1;j<=m;j++)
sort(num+1,num+m+1,cmp);
if(num[m].b>a[n])
else
j--;
continue;
} k=res/pre+(1-((res%pre)==0));//新的一段如不貪的答案
if(kans)
else
} lp=lp+pre;
j--;
} cout<
牛牛的木板 牛牛的字元反轉
原題鏈結 題意 一段長n的序列,由0 1組成。可把m個0改1,求序列中最大連續1的個數。思路 尺取法 雙指標法 設定一對指標l,r。最開始都指向第乙個元素。l,r是區間左右端點,r指標先不斷往右遍歷,當區間內0的個數超過m時,l指標向右遍歷,要跳過乙個0,維持乙個區間內改了m個0的狀態 其間不斷用區...
打響「圍剿」病毒的戰役
從熊貓燒香終結以後,幾乎沒有任何病毒再次掀起大範圍 大規模的傳播破壞浪潮。在某個時刻,許多網民甚至一度認為,中國網際網路遍地是毒的時代已經過去了,大眾的網路安全意識和病毒防範意識已經伴隨著金山 騰訊 瑞星和安天等一系列安全和網際網路廠商的免費浪潮而加強。然而事實並非如此,從騰訊與金山網路近日的 網際...
迷路的牛牛
牛牛去犇犇老師家補課,出門的時候面向北方,但是現在他迷路了。雖然他手裡有一張地圖,但是他需要知道自己面向哪個方向,請你幫幫他。輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含乙個正整數,表示轉方向的次數n n 1000 接下來的一行包含乙個長度為n的字串,由l和r組成,l表示向左轉,r表...