2019牛客暑期多校訓練營(第三場)

2021-09-25 14:02:09 字數 2667 閱讀 7841

目錄

b 、crazy binary string  (思維)

d 、big integer ( 數論 )

f 、planting trees(思維+單調佇列)

h、 magic line  (計算幾何)

j、 lru management (模擬)

題意:計算最長的01子串和子串行,其中01數量相同。

分析:對於子串那麼直接將0製成-1,1還是1計算字首和,然後相減為零的最大長度即為答案

對於子串行也就是計算最小的0 或 1 的數量。

#include using namespace std;

const int maxn=1e5+10;

char s[maxn];

int pre[maxn];

mapmp;

int main()else

}printf("%d %d\n",ans1,min(ans2<<1,(n-ans2)<<1));

return 0;

}

題意:

定義分析:

}題意:

給出乙個矩陣,計算最大的矩形使得所有元素的差值在m之內。

分析:同時注意每次不滿足條件的時候進行更新。還有注意細節

#include#define mm(a,b) memset(a,b,sizeof(a))

#define accelerate (ios::sync_with_stdio(false),cin.tie(0))

typedef long long ll;

typedef long double ld;

typedef unsigned long long ull;

#define pi acos(-1.0)

#define e exp(1.0)

//#define io

using namespace std;

const int inf=0x3f3f3f3f;

const int maxn=505;

int a[maxn][maxn];

int mn[maxn],mx[maxn];

int q1[maxn],q2[maxn];

int main()

}int ans=0;

for(int u=1;u<=n;u++);

typedef list::iterator iter;

int main());

it=lis.end();it--;

mp[s]=it;

ans=it->v;

}else);

cnt++;

auto it=lis.end();

it--;

mp[s]=it;

ans=v;

if(cnt>m)

}printf("%d\n",ans);

}elseelseelse if(v==1)elseelse}}

}}}return 0;

}

2019牛客暑期多校訓練營(第三場)F

這個學期終於結束了,暑假就要來了。然而,作為大學畢業要求的一部分,你必須在假期期間參加一些社會服務。最後,你決定加入乙個志願者團體,在山上植樹。為了簡化這個問題,讓我們用乙個n乘以n times n網格。讓我們給行編號1到n從上到下,給列編號1到n從左到右。用aij ij 表示第i行第j列的格仔的高...

牛客暑期多校訓練營B Boundary

給定n個點,然後確定乙個過原點的圓,要使這n個點盡可能多的存在與圓上,最後輸出最多的存在於圓上的點的個數 三點確定乙個圓,我們已知這個圓必定經過原點,所以再依次利用三點求圓心的公式列舉每兩個點與原點 三點不共線 確定的圓心,最後選擇確定次數最多的圓心構成的圓 include include incl...

2019牛客暑期多校訓練營(第三場) B題

題意 給你乙個長度為n的01字串,問該字串中01個數相等的最長子串和子串行分別是多少。分析 首先,大家要知道什麼是子串行,什麼是子串,子串行是不一定是連續的,它可以是原串中任意元素按照相對位置組成的序列,但是子串就不是了,子串一定是連續的,不可分割的按照絕對位置組成的序列。知道這個概念之後,大家可以...