我嚴重懷疑這題是個卡常題。。。
最後把sort換成stable_sort才過去,人都傻了
首先要看對題啊,
上來整個雙重否定句,欺負我語文爛?那我也沒辦法嚶嚶嚶
大概意思就是,給你n個數,這些數顯然可以組成\(2^n\) 個數(每個數選或不選),要你選乙個數,問至少要多大才能夠有不多於(1好像還是很繞
總之就是這樣啦
首先考慮爆搜,可以拿到30分的好成績,因為n>20以後,\(o(2^n)\)的複雜度就萎了。那這時怎麼辦呢?
可以考慮類似於折半搜尋的方法,先處理出前n/2個數能夠拼出的所有數,再處理出後n/2個數能夠拼出的所有數,最後再二分答案。
**:
#include using namespace std;
typedef long long ll;
const int maxn=1500000+10;
const double eps=1e-9;
int b[50];
ll a[maxn],c[maxn];
int n,tot,cnt;
double p;
ll ss;
void dfs(int now,ll w)
dfs(now+1,w);
dfs(now+1,w+b[now]);
}bool cmp(int x,int y)
void dfs2(int now,ll w)
dfs2(now+1,w);
dfs2(now+1,w+b[now]);
}void dfs3(int now,ll w)
dfs3(now+1,w);
dfs3(now+1,w+b[now]);
}bool check(int x)
if(head>tot) break;
res+=tot-head+1;
} return reseps) ss++;
int l=1,r=a[tot]+c[cnt];
while(l<=r)
printf("%d\n",l);
}void solve()
solve2();
}int main()
聯賽模擬測試24 D 你相信引力嗎 單調棧
因為跨過最大值的區間一定是合法的,所以我們人為地把最大值放在最左邊 我們要統計的就是在最大值右邊單調不降的序列,可以用單調棧維護 需要特殊處理相同的情況 include include include include define rg register inline int read while ...
聯賽模擬測試24 聯合權值 改
考完之後聽說往年有一年聯賽考過一道類似的題,於是一下子又以為要涼涼了,自信一點,把以為去掉 我們不妨先來考慮如何統計總和,我們考慮列舉每乙個點作為中間點的時候對於答案的貢獻,暴力列舉會 t 到飛起,我們可以記錄以該點的所有出邊鏈結的點的權值總和,之後再對總和平方,就可以得到乙個部分重複的答案,重在了...
noip膜你賽day2第一題
題意 有乙個由0和1組成的陣列,定義一種新運算azui,1 azui 1 1,1 azui 0 0,0 azui 1 0,0 azui 0 1,給出乙個長度為n的該陣列,以及m個查詢l,r,表示將區間 l,r 從l乙個乙個azui到r的值。題解 額,先說說稍微複雜一點的做法,可以發現,這個azui運...