省選測試1

2022-02-17 19:36:53 字數 1995 閱讀 3814

我好菜啊

題目大意 : 給定每次可以翻的長度,有m種,問最後把這些硬幣翻到指定狀態的最少次數

show code

#include #include #include const int n = 1e4 + 5;

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

int n, k, m, a[105], p[25], tot, d[n], c[25][25], q[n], l, r, f[1<<20|5];

bool b[n];

int main()

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

a[i] = read();

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

if (b[i]) p[++tot] = i;

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

}for (int j = 1; j <= tot; ++j)

c[i][j] = d[p[j]];

}int s = (1 << tot) - 1;

memset(f, 0x3f, s * 4);

for (; s >= 1; --s)

}printf("%d\n", f[0] > 1e9 ? -1 : f[0]);

return 0;

}

題目大意 :

show code

題目大意 : 求乙個排列的乙個lis 和 lds,滿足找出的兩個子串行沒有交集

show code

#include #include #include const int n = 5e5 + 5, m = 1e9 + 7;

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

int n, a[n], lis, lds, len1[n], len2[n], stk[n], tp, g[n];

int num1[n], num2[n], sum, s[n];

bool v[n];

struct node1

}t1[n];

void add1(int x, int w, int num)

}node1 ask1(int x)

return ans;

}struct node2

}t2[n], f[n];

void operator += (node2 &a, const node2 &b)

}void add2(int x, int k, node2 w)

node2 ask2(int x)

void add3(int x, int w, int k)

node1 ask3(int x)

int main()

memset(t1 + 1, 0, sizeof(node1) * n);

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

memset(t1 + 1, 0, sizeof(node1) * n);

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

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

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

printf("%d\n", lis);

while (tp) printf("%d ", stk[tp--]);

memset(t1 + 1, 0, sizeof(node1) * n);

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

}puts("-1");

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...