2019牛客暑假多校訓練營(第五場)

2021-09-25 21:17:13 字數 2611 閱讀 2370

矩陣快速冪,a^n,n特別大,想到求某數sum=sum*10+s[i]-'0';

可以把n一位一位拆開,ans=ans^10   *  st^(s[i]-'0'),指數相加所以分開相乘

十進位制優化類似快速冪!!!

#includeusing namespace std;

typedef long long ll;

const ll maxn=1e6+5;

ll x0,x1,aa,b,mod;

char n[maxn];

struct mat

;mat mm[15];

mat mul(mat p,mat q)}}

return ans;

}mat qpow(mat st,ll y)

st=mul(st,st);

y>>=1;

}return ans;

}void fun(mat st)

}int main()

return r;

}void query()

if(a == 1)

int y = (ll)b * pw(a-1, p-2) % p;

v = (ll)(v + y) * pw(y+x, p-2) % p;

int r = p;

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

printf("%d\n", r0)

query();

}int main()

題意:給出n,m,分別是s串,t串的長度,求s串的子串行數量,滿足組成的數字比t串表示的數字大。

當子串行長度大於t串時,直接用組合數處理

當子串行長度等於t串時,dp[i][j]表示s串長度為j+1,t串長度為i+1的位置,當前可拼出等於t串的數量

當s[j]>t[i]時,表示這個字串已經大於t串,剩餘的位直接取即可,直接加到答案中。

#includeusing namespace std;

typedef long long ll;

const ll maxn=3005;

const ll mod=998244353;

ll c[maxn][maxn],dp[maxn][maxn];

void f()

}}int main()

}for(ll i=0;i<=n;i++)

}for(ll i=0;i<=n;i++)

dp[0][i]=1;

for(ll j=1;j<=n;j++)

else if(s[j]>t[i])}}

cout《題意:給出多組兩個字母,和由它們組成的在原串中的子串行,求出原串。

簡單模擬題:處理出每個字母出現的行數

原串中0-n-1的位置列舉每0-m-1個字母,並記錄每一行遍歷到的位置。

#includeusing namespace std;

const int maxn=1e4+5;

int n,m;

int pos[30][15],cnt[15];

struct hang

e[50];

string str,ans;

bool judge(int v)

return true;

}int main()

for(int i=0;i題意:給出乙個矩形,三角形的三條邊長,求出是否存在這樣的三角形。

1. 若乙個三角形能擺在乙個矩形裡,總是能經過平移使得三角形至少有乙個頂點和矩形

的頂點重疊,且三角形的頂點仍在矩形裡

;2. 重疊了三角形的某個頂點和矩形的某個頂點後,我們可以把該重疊的點當旋轉軸,旋

轉三角形,使得三角形有另乙個點恰好在矩形的某個邊上

於是我們可以列舉三角形的哪個頂點和舉行的頂點重疊,以及三角形另乙個位在矩形邊上的

點是哪個,總是能列舉到乙個完全落在矩形裡面的三角形擺放位置

#include#define esp 1e-8

using namespace std;

struct node point[3];

double w, h;

int check(double a, double b, double c, int x, int y, int z) else

double jc = acos((a*a + b*b - c*c)/(2*a*b)); //通過余弦公式算出長度為a和長度為b的邊的夾角

jc += atan(point[y].y / point[y].x);

//算出長度為a的邊與x軸的夾角與上乙個結果加起來

// 得出長度為b的邊與x軸的夾角

//已知夾角便可算出第三個點的位置

point[z].x = cos(jc) * b;

point[z].y = sin(jc) * b;

//判斷 y點和x點在不在 w和h的範圍內

if(point[z].x >= 0-esp && point[z].x <= w+esp && point[z].y >= 0-esp && point[z].y <= h+esp)

else }

int main()

}

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

2019牛客暑期多校訓練營 第五場 題號標題 已通過 題解 討論 通過率團隊的狀態 adigits 2 1016 2378通過b generator 1 513 3524通過c generator 2 34 592已補d generator 3 4 23 未通過e independent set 1...

2020牛客暑期多校訓練營(第五場)

總結 f題添老師一發ac,i 題起初不會做在想怎麼化簡那個式子,後來就直接畫出了最優的圖,然後猜了一發2 3過了。ef 一級目錄 一級目錄 一級目錄 乙個包括n個音符的陣列,音符按下標1 n排列,表示音符由低到高。有兩個操作 drop 2 將第二高的音符移到最低的位置 即將倒數第二個移到第乙個。in...

2019牛客暑期多校訓練營(第五場)I題題解

給定乙個矩形區域,在裡面構造三個點使得其之間的距離等於給定的值 如圖所示,先取 0,0 作為第一點,然後分兩種情況 在x軸上或矩形右邊界找第二個點,最後用餘弦定理和角度關係求出第三點。注意 因為可能會出現超過w,h邊界的情況,我們可以列舉三個點對應放哪個位置來保證答案合法。很好寫 1 define ...