2018牛客多校3

2021-08-21 20:06:01 字數 3361 閱讀 6410

h    diff-prime pairs

1*3 1*5 1*7 1*11.。。。。。

2*3 2*5 2*7 2*11.。。。。。

3*3 3*5 3*7 3*11.。。。。

4*3 4*5 4*7 4*11.。。。。打個素數表 ,用素數篩一遍    

#includeusing namespace std;

bool a[11111111];

int zs[11111111];

int main()

}while(cin>>n)

ans=ans*(ans-1);

for(int i=2;i<=n;i++)

if(lss<=1)break;

ans=ans+lss*(lss-1);

}cout4維01揹包 記錄答案

要用2進製來存答案。。。。。

#includeusing namespace std;

const int n=40;

int dp[n][n][n][n];

long long path[n][n][n][n];

struct node

b[n];

int main()

for(int i=0;ij distance to work

求乙個圓交多邊形面積與多邊形面積的比值為(1-(p/q))

二分一下

#include"bits/stdc++.h"

using namespace std;

const int mx = 222;

const double eps = 1e-12;

const double pi = acos( -1.0 ) ;

inline double sqr( double x )

inline int dcmp( double x )

struct point

point( double _x , double _y ): x(_x) , y(_y) {}

void input()

// double norm()

friend point operator + ( const point &a , const point &b )

friend point operator - ( const point &a , const point &b )

friend point operator * ( const point &a , const double &b )

friend point operator * ( const double &a , const point &b )

friend point operator / ( const point &a , const double &b )

friend bool operator == ( const point &a , const point &b )

bool operator < ( const point &a )const

};typedef point vector;

double dot( point a , point b )

double cross( point a , point b )

double length(vector a)

int n,m;

point p[205];

int circleinterline( point a, point b, point o, double r, point *p )

}if ( dcmp(delta) > 0 )

return 0;

}double ********_area( point a, point b )

double sector_area( point a, point b, double r )

double calc( point a , point b , double r )

else

}else

else

}}double area_circleandpolygon( point *p , int n , point o , double r )

return fabs( res ) ;}

double polygonarea(point *p,int n)

void work(long double &sums, point o,double p, double q)

double ans = (l+r)/2;

printf("%.12f\n",ans);}

int main()

long double sums = polygonarea(p,n);

scanf("%d",&m);

for(int i = 1; i <= m; i++)

}

e sort-string

用map爆記憶體。

要想到 只有會迴圈的字串才能出現重複的按照題意 出現的串

比如 abcdabcdabcd 這樣 abcd 重複出現了k次,那麼答案就k 0,4,8.。。。。。

那麼如果是 abcdabcdabcdz 這樣儘管前面有迴圈,但是最後有乙個z ,那麼就不迴圈了,那麼答案就是1 0 1 /n  1 0 2。。。這樣

所以就要用到kmp中的next陣列的定義:

對於乙個字串的長度為len ,   next[i]陣列表示將第i個字元去掉,看s[0]~s[i-2] 和 s[1]~s[i-1]這兩段裡面的重複出現的子串的最大長度(對於第乙個子串我從頭往後看,對於第二個子串我們從後往前看)。例如 aaaa  next[4]=3;再例如 abababab i=8的話,就是比較 abababa 和bababab這2個子串,根據上方括號的規則,那麼就是ababab重複了,那麼next[8]=6;

對於這道題,我們要求的是整個串中的最小迴圈長度,我們發現 上面的8-6=2以及4-3. 剛好是最小迴圈。

也就是說,對於乙個長度為len的字串來講,len-next[len]=最小迴圈長度,那麼如果字串本身不迴圈,那麼可以知道next[len]=0;  那麼len-next[len]=len,也就是該字串自己迴圈了一次,也就是沒有長度小於len的迴圈子串。且答案符合題意。

#includeusing namespace std;

#define ll long long

#define maxn 1000010

char s[maxn];

int len, next[maxn];

void makenext(int tlen) else

}}int main()

return 0;

}

牛客多校2018四 A

很顯然地發現對於某個位置的乙個1或2,它對答案的貢獻與之前進行了多少秒有關,所以趕緊打個表看一看,就發現對於某乙個1來說,它對答案的貢獻就是 t 2 2 t是之前經過的時間,對於2的情況,打出假設輸入的數列是 2 02 002 0002 的表,就發現答案分別是3,9,21,45,93 對這個答案數列...

2018牛客多校7

有點難度啊。a minimum cost perfect matching 隊友搞的 應該不難 把二進位制寫出來看看 includeusing namespace std define ll long long int define lson rt 1,l,m define rson rt 1 1,...

2018 牛客多校 2

problem a problem b 考慮第二種優惠,每乙個物品如果原價購買了,那麼向可以免費拿的那個物品連一條邊 在樹上被指向的那個點是父親 如果不考慮環的話,考慮樹上dp。設 f i 0 表示買掉以 i 為根的子樹需要的最小花費,設 f i 0 表示買掉以 i 為根的子樹並且 i 這個點是原價...