排序+中位數性質
int a[100010];
void sort(int l,int r)
return false;//如果所有的都不滿足,那麼這個平均數就一定不滿足
}int main()
while(r-l>1e-5)
printf("%d\n ",int(r*1000));
return 0;
}兩邊的牛高 中間的牛矮資料範圍很大所以我們可以使用差分但是題目最高又限制了最高的牛所以我們還需要查重
int main()
)) );
hi[a+1]--;
hi[b]++;}}
for (int i = 1; i <= n; i++)
return 0;
}炸彈的範圍是r,可以看成每個城市的影響範圍是r,找出最多的重疊部分就可以了
用到二維字首和
const int m=5010;
int n,m,s[m][m];
int main()
for(int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
s[i][j]+= s[i-1][j] + s[i][j-1]-s[i-1][j-1];
int res=0;
for(int i=r;i<=n;i++)
for(int j=r;j<=m;j++)
res=max(res,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]);
cout<
以每個矩形的高度為準,向兩邊擴充套件,直到遇到比它矮的為止
每個矩形的高度都是》=0的,為了使得每個矩形的兩側都有矮於它的矩形,
所以往兩側放了兩個-1的矩形h[0] = h[n + 1] = -1;
由於有-1矩形的存在,不會有任何矩形的高度 hh 滿足 −1>=h−1>=h,所以棧不會空
因此可以省略棧中是否有元素的判斷條件tt >= 0
#include#includeusing namespace std;const int n=100010;
int h[n],q[n],l[n],r[n];
int main()
tt=0;
q[0]=n+1;
for(int i=n;i;i --)
long long res=0;
for(int i=1;i<=n;i ++)
res=max(res,(long long )h[i]*(l[i]+r[i]-1));
cout題目中的操作都是在資料的最後一位所以可以用對頂棧就是top對著top的棧
using namespace std;
int sum[n],f[n],sul[n],sur[n],t1,t2;
int main()
if(a=="d")
if (t1) t1--;
if(a=="l") if (t1) sur[++t2] = sul[t1--];
if(a=="r")
if (t2)
if(a=="q")
}queueteam;
queueperson[n];
string ss;
while(cin>>ss&&ss!="stop")
if(ss=="dequeue")
long long res=int_min;
q.push_back(0);
for(int i=1;i<=n;i++)
res=max(res,s[i]-s[q.front()]);
while (!q.empty() && s[q.back()] >= s[i])
q.pop_back();
q.push_back(i);
}cout<
寒假集訓二補題與題解
統計字首個數,一想到字串的字首,我們就應該想到字典樹,這個和字典一樣的字首樹.這道題目是字典樹模板的略微改動,我們發現這道題目和一般字典樹的查詢不一樣,字典樹一般查詢是看這個字串是否出現,而這道題目這是統計這個字串出現的次數.includeusing namespace std const int ...
寒假集訓四補題與題解
採摘花生也需要單位1的時間 最後只需退回馬路上即可,不需要返回起點,退回馬路所需的時間即為當前位置的行號 include include includeusing namespace std int n,m,t int bu,sum int a 22 22 struct you hh 22 22 b...
1 28寒假集訓 1(補題)
學不會今天的內容 種樹,只能補補昨天的題了otz 先補了個昨天的g題 竟因沒反應過來priority queue是優先佇列沒有寫qaq太菜了 kattis guessthedatastructure 題意 給n行資料,如果是1就塞進去,2就拿出來,判斷是佇列還是優先佇列還是棧,都不是就輸出impos...