省選測試16

2022-02-17 18:56:06 字數 1752 閱讀 6863

好久沒有考場上 a題了

題目大意 : 構造出乙個 01 序列使得存在乙個 1 滿足這個 1 後面是 0,且這個 1 和後面的 0 交換後與原序列迴圈同構

101011010101

2 2 12 2 2 1

101010110101

2 2 2 12 2 1

1101110

12 112

1110110

112 12

show code
#include #include using namespace std;

const int n = 105;

int a[n], b[n], p[n];

void solve(int l, int k)

}bool judge(int l)

void next(int l)

}int main() }}

return 0;

}

題目大意 : 給定 n 個字串,每個串選乙個字首,以任意順序拼起來,令得到的串字典序最小

show code

#include #include #include using namespace std;

const int n = 55;

int n;

string ans;

struct node a[n];

bool operator < (const node &a, const node &b)

int main()

a[i].x = a[i].s.substr(0, x); y = x;

while (a[i].s.substr(y, x) == a[i].x) y += x;

a[i].y = a[i].s.substr(y);

for (int j = 1; j <= 6; ++j)

a[i].x += a[i].x;

}sort(a + 1, a + n + 1);

for (int i = n; i >= 1; --i)

cout << ans;

}

題目大意 : 給定一顆樹,第一次經過一條邊有花費,第一次到達乙個點會有收益,問從根到終點最小透支多少

show code

#include #include using namespace std;

const int n = 2e5 + 5;

int read(int x = 0, int f = 1, char c = getchar())

bool v[n];

int n, fa[n], f[n];

long long w[n], c[n], ans, sum;

int find(int x)

bool cmp(int x, int y)

sets(cmp);

int main()

while (!s.empty())

}printf("%lld\n", -ans);

return 0;

}

省選測試21

設 f i 為上一次參加的比賽是第 i 場的最大愉悅值 則 f i max f i f j frac a i j 對於隨機的資料,把列舉的範圍卡到 3000 即可 容易發現,如果沒有 a j leq a i 的限制,那麼就是乙個裸的斜率優化 dp 把 f i frac frac 看做 y 把 i 看...

省選測試9

這個名次已經是倒數了 感覺整場考試不是很在狀態,正解想不到,暴力分也沒有打滿 其實前兩道題仔細推一下還是能想出來的 t1 2 sat 有一段時間沒有打了 優化建圖的方式和之前的某道題挺像的,但是當時那道題沒改 這次算是補了乙個鍋 t2 的資料範圍折半列舉也不難想,實現時注意一下細節就行了 t3 有一...

省選測試28

題目大意 給乙個排列,翻轉k次,問最終逆序對個數的期望值 然後在用兩個字首和分別優化這3種轉移就好了 show code include define mod x using namespace std const int n 505,m 1e9 7 int n,k,a n f n n s1 n n...