摘要:
首先我们需要枚举$K$,对每个$K$我们都要从最左端开始来考虑$N$头牛的情况,此时最坏情况下需要进行$N-K+1$次反转操作,而每次操作又要反转$K$头牛,于是总的复杂度为$O(N^3)$。 对区间反转的部分考虑使用差分,每次只修改$i \sim i+k−1$,通过前缀和求解每一位是否反转。 反转 阅读全文
摘要:
二分 问题显然具有二段性。 每一步过程中$E=2*E-h[i]$,$n$的范围为$10^5$,中间过程可能溢出。 观察到如果中间某步满足$E \ge maxh$,则之后过程$E$的值一定非负,可以抵达终点。 const int N=1e5+10; int h[N],maxh; int n; bool 阅读全文
摘要:
签到题。 int n; int main() { cin>>n; int res=0; for(int i=0;i<n;i++) { int score,w; cin>>w>>score; res+=w*score; } cout<<max(res,0)<<endl; //system("pause 阅读全文
摘要:
思路 枚举$1 \sim 9$的全排序 枚举分界处的位置 时间复杂度:\(O(9! \times 9 \times C_8^3)\) int path[10]; bool vis[10]; int n; int ans; void dfs(int u) { if(u == 9) { int a=0; 阅读全文
摘要:
题意 给出两个序列作为二叉树的先序序列和后序序列,序列内数字各不相同,判断是否能唯一确定一棵二叉树。输出任意一棵符合的二叉树的中序序列。 思路 以上图为例进行说明,该图左的二叉树对应的先序序列和后序序列如该图右所示。 可以知道的一点是,先序序列的第一个结点和后序序列的最后一个结点都表示根结点,因此一 阅读全文
摘要:
自测时间为2021年春季考试前一天下午$5:00 \sim 8:00$。 7-1 The Closest Fibonacci Number (20 分) The Fibonacci sequence $F_n$ is defined by $F_{n+2} = F_{n+1} + F_n$ for 阅读全文
摘要:
额,这不是和1143 Lowest Common Ancestor (30 分)一模一样吗。 const int N=10010; int fa[N]; unordered_map<int,int> pos; int pre[N],in[N]; bool vis[N]; int n,m; int b 阅读全文
摘要:
好家伙,$unordered_map$一直有一两个点超时,换成数组就过了,看来$STL$实现的哈希表还是没数组快啊。 向上标记法。 const int N=10010; int fa[N]; unordered_map<int,int> pos; int pre[N],in[N]; bool vis 阅读全文
摘要:
数据范围小,用的暴力搜索法。 同步前进法。 const int N=110; int fa[N]; int dep[N],width[N]; int maxh,maxw; int n; int LCA(int u,int v) { if(dep[u] < dep[v]) swap(u,v); whi 阅读全文
摘要:
水~,基于层序遍历。 树高最坏情况下为$n$,即为一条链。 const int N=35; unordered_map<int,int> pos; unordered_map<int,PII> tree; unordered_map<int,int> dep; int in[N],post[N]; 阅读全文