HDU 4334 尺取 思維

2021-09-04 04:08:34 字數 1050 閱讀 3806

題意:在5個陣列中,每個陣列中取乙個數,5個數之和是否為0;

第一次我是用map標記前3個陣列的和,然後暴力跑後兩個陣列的迴圈,果然t了。。

網上又兩種做法:

① 處理前三個陣列的和,後兩個陣列的和,排序+列舉+二分。我自己沒試過不知道能過不

t *(n^3+n^2+log(n^3)+log(n^2)+ n^2*log(n^3))這是複雜度,我自己感覺會t.

② 尺取法:處理 1和2 陣列,處理 3和4 陣列 ,排序+取尺法。

設預處陣列 x (1,2和),y(3,4和),i=1,j=n*n,x=-num[5][sign] (sign=1-n)

如果x[i]+y[j]>x   則j--; 如果x[i]+y[j]/第二種方法**:

///#include///#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define mt(a,b) memset(a,b,sizeof(a));

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const double pai=acos(-1.0);

const double e=2.718281828459;

const int mod=1e9+7;

const int inf=0x3f3f3f3f;

ll num[6][205],x[40005],y[40005];

int t,n,flag;

bool judge(ll s)

return 0;

}int main()

if(flag)

printf("yes\n");

else

printf("no\n");

}return 0;

}

HDU 6103 列舉 尺取

題意 給出乙個字串,問兩個不相交的字串對稱相減的絕對值和小於等於 m的最長長度。思路 如果存在兩個不相交的字串,那麼必然兩個字串之間存在對稱軸,分為兩種 1.子串之間有奇數個其它字元,那麼列舉其中的字元。2.子串之間有偶數個其它字元,那麼列舉其中的空格。對稱軸確定之後,對對稱的串計算出其對稱相減的和...

HDU 6231 (二分 尺取)

所求的一定是a陣列中的原素,這點毋庸置疑,所以在a陣列中任意選則其中的乙個數x,若a的所有長度不小於k的連續子串行中第k大數不小於x的子串行一共有ans個,那麼x在所有第k大元素組成的數列中至少是第ans大數 因為ans n r,因為之前的x已經是第k大了,所以加上後面的元素,如果比他小,則沒有影響...

hdu 6231 二分 尺取

題意 給你乙個n個數的陣列,把這個陣列中長度大於等於k的區間中第k大的數取出來組成乙個新陣列,問你這個新陣列第m大是多少。可能有的人和我一樣沒去分開第k大和第k小的關係,比如陣列 1,2,3,4,5 第2大就是4,第2小就是2.思路 我們可以用尺取算出第k大大於等於x的區間個數有多少個。當我們了解這...