摘要:
#include<bits/stdc++.h> #define int long long using namespace std; int a[5][5]; int read() { int sum,k=1;char s; while(s=getchar(),s<'0'||s>'9') if(s= 阅读全文
摘要:
第一种是一个排列内部的可以直接统计 \(ans=m!*(n-m+1)*(n-m)!\) 第二种是两个排列的连接部分 对于一个排列$p$,考虑在字典序下它的下一个排列q是什么样子的: 其实是p的最长下降后缀的前一位与最长下降后缀里比它大的最小的数交换位置,之后这个后缀从下到大排列 $p$合法一定是小于 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/11179/D 考虑暴力$dp$ $dp[i][j]$代表算入了i个点,总度数为j的方案数 \(dp[i][j]=max(dp[i-1][j-k]+f[k]) (1<=k<=n-1)\) 最后的答案便是$dp[n][n*2-2] 阅读全文
摘要:
2021.9.23 昨晚由于不明原因所以觉得今天请假军训去实验室划水 https://codeforces.com/gym/103202/problem/I 考虑把时针和分针每分钟转过的角度同时乘以 $ \frac{HM}{2\Pi } $ 所以现在要统计0<=t<HM t*(H-1) mod HM 阅读全文
摘要:
T1 设end(i)代表以$i$为结尾的路径个数 设$f[i][j][k][l]$代表考虑了$i$个点 其中有j/k个点是$end$为奇的白/黑点 暴力就是$O(n^4)$的 发现转移的式子其实只跟j/k是否为0有关 并不关心他的具体值 所以只需要记录是否出现即可 复杂度$O(n)$ T2 容斥 设 阅读全文
摘要:
设$f[i][j]$代表至少有$i$行$j$列满足条件,期望还有多少次结束 四种转移很简单,转移到自身的那个移一下项即可 设$f[i]$代表从$i$到$n$的最优期望时间 设$a[i]$代表第$i$小的$f$所对应的点 则有:$f[a[i]]=\sum\limits_{j=1}^{i}f[a[j]] 阅读全文
摘要:
T1 n行不是n列!95分没了 设$dp[i][j][k]$代表考虑到了第i行一共选了j个且第i行是k的方案数 可以转移到的位置可以预处理处理 复杂度$O(nm 64)$ T2 考虑二分答案mid 假如选了一个集合S 那么要求最小化$ans= cut(S)+\sum_{i\in S}sum[i] 2 阅读全文
摘要:
把序列排序后 问题转化为子序列两两之间的异或和大于等于k 用户$Trie$树优化$dp$ 因为不满足单调性所以不能用二分来优化 $ans=\sum_{i=1}^{n}n%i$ $ans=\sum_{i=1}^{n}(n n/i i)$ $ans=n^2 \sum_{i=1}^{n}i (n/i)$ 阅读全文
摘要:
T1 神仙LNC打法: 维护一个小根堆,里面有k+1个元素,每次取出堆顶便是当前位置的值 题解打法: 向左走的步数是左边大于它的个数与k取min 向右走的步数是从前往后数第k个比当前值大的数所在位置与当前位置直接的小于当前值的数 T2 矩阵a[i][j]=L[i]=<j<=R[i] 那么行列式的正负 阅读全文
摘要:
$T1$ 听说DY讲过,但是咋就一点印象也没有捏 首先证明一下这道题的关键性质: 点燃一个战队后一个区间内的所有战队都会被引燃 假设$km,bm$代表最小能被直接引燃的战队 则有$bmkx$ 假如存在一个$y(kxbybmby bx$ $y$一定会被引燃后的$m$引燃 所以可以得出上述结论 现在问题 阅读全文