縣里讓做核酸檢測,做的時候到挺快,排隊排了一上午,又沒交
題目大意 : 參加比賽可以獲得一定的愉悅值,連續不參見會減少,求能獲得的最大愉悅值
show code
#include #include #include using namespace std;
typedef long long l;
const int n = 1e5 + 5;
int read(int x = 0, int f = 1, char c = getchar())
l f[n];
int n, a[n], p[n], q[n];
bool cmp(int x, int y)
l f(int x)
double cal(int x, int y)
void solve(int l, int r)
while (l < r && f[q[l]] + a[p[j]] - f(p[j] - q[l]) <= f[q[l+1]] + a[p[j]] - f(p[j] - q[l+1])) l++;
if (l <= r) f[p[j]] = max(f[p[j]], f[q[l]] + a[p[j]] - f(p[j] - q[l]));
}sort(p + l, p + r + 1, cmp);
solve(mid + 1, r);
}int main()
題目大意 :
show code
題目大意 : 從1~n中選出k個能組成所有序列(從小到大排序)按字典序排序後相鄰序列各位置差的絕對值
show code
#include using namespace std;
const int n = 2e6 + 5, m = 1e9 + 7;
int n, k, m, fac[n], fai[n], ans;
int pow(int a, int k, int ans = 1)
void pre(int n)
int c(int n, int m)
int main()
for (int i = 0; i <= n; ++i)
if ((ans += c(m-1+i, m-1)) >= m) ans -= m;
printf("%d\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...