2017 09 23校訓練題題解

2021-08-08 16:04:56 字數 2158 閱讀 6017

t1

題解定義f[i][j]表示i次操作後x的數值為j的概率。dp轉移可以轉化為矩陣乘法形式,利用矩陣快速冪進行優化。但是我們發現轉移還是矩陣的形式,而且是迴圈矩陣的形式。迴圈矩陣快速冪

#include#include#include#include#include#include#includeusing namespace std;

inline int read()

while (ch <= '9' && ch >= '0')

return x * flag;

}#define rep(ii, aa, bb) for (int ii = aa; ii <= bb; ii++)

#define drp(ii, aa, bb) for (int ii = aa; ii >= bb; ii--)

#define ha 1000000007

#define ll long long

#define mod 1001

int n, m, mod, a;

ll ans[mod][2], t[mod][2] = {};

int anspos = 0, tmppos = 0;

int mult(ll x)

return ret;

}void matrixmult()

tmppos ^= 1;

rep(i, 1, mod - 1) t[i][tmppos] = 0;

rep(i, 1, mod - 1) rep(j, 1, mod - 1)

t[i * j % mod][tmppos] += t[i][tmppos ^ 1] * t[j][tmppos ^ 1] % ha;

rep(i, 1, mod - 1) t[i][tmppos] %= ha;

m >>= 1; }}

int main()

t2對於任意一列,兩行之間的差相等」是乙個很重要的性質.這告訴我們:每一列差分後得到的結果相同.每一行差分後的結果也相同.於是我們對行列分別用帶權並查集維護行之間,列之間的差分關係.如果差分關係出現矛盾(兩行之間的差值可以推導出兩種可能)則無解.如果差分關係沒有矛盾,則需要求出整個矩陣中能推導出的最小值判斷是否小於0.這裡的推導方法是:維護差分關係的並查集必然分成了多個連通塊.一種直觀的方法是,列舉乙個關於行的連通塊,再列舉乙個關於列的連通塊,這兩個連通塊相交產生的格仔中的最小值位於列和行的最小值的交點.這樣的時間複雜度是很高的.實際上我們只需考慮每個關於列的連通塊.對於乙個關於列的連通塊,我們求出這個連通塊中數值最小的一列.考慮這個連通塊中所有的已知數字,每個已知數字都可以求出數值最小的一列中某乙個數值.在這些數值中取最小值即可,實現的時候,只需用每個已知數字求出這個連通塊中某一列的最小值,再從這一列的最小值轉換到最小的一列的最小值.

#include#include#include#include#include#include#includeusing namespace std;

inline int read()

while (ch <= '9' && ch >= '0')

return x * flag;

}#define rep(ii, aa, bb) for (int ii = aa; ii <= bb; ii++)

#define ll long long

#define n 200001

struct point pp[n];

int r, c, n;

int fa[n];

int w[n], st[n], mi[n];

bool cmpr(const point &a, const point &b)

int find(int x)

bool merge(int a, int b, int c)

else return w[a] == w[b] + c;

}bool judge()

rep(i, 0, r)

rep(i, 0, r) if (fa[i] == i && st[i] + mi[i] < 0) return false;

return true;

}int main()

return 0;

}

t3 題面太暴力,題太水(雖然我沒寫),不掛了

多校訓練 The Oculus

題目 題意 乙個正整數可以用斐波那契數列數列表示。bi取1表示存在當前第i個斐波那契數,取0則為不存在。現給定a,b,c斐波那契數列表示,問a b與c修改哪一位b後相等。思路 直接判斷兩個數相等?如下 一直沒過。include using namespace std typedef long lon...

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

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

牛客網多校訓練 訓練技巧

常州大學組織了新生寒假訓練一共n天,每天訓練可以獲得的訓練效果是ei。但是如果連續訓練超過k天,萌新們會受不了而被勸退。現在負責人想知道,如何安排能保證萌新不會被勸退並且能獲得最大的訓練效果。第一行 兩個用空格隔開的整數 n和k,1 n 100000,1 k n 第二行到n 1行 第i 1行有乙個整...