A. Extreme Subtraction

把这个数组差分一下,发现操作一的作用是把 \(d_1\) 的大小分给 \(d_i\),而操作二的作用是把 \(d_i\) 减去任意值,目标是把 \(d\) 的值都变为 \(0\)。对于 \(d\) 中大于 \(0\) 的值,就直接用操作二就行了;对于小于 \(0\) 的值,那它只能用 \(d_1\) 补偿;所以就比较一下 \(b_1\) 和 \(- \sum\limits_{i=2}^n[b_i<0]\times b_i\)的大小就行了。

B. Identify the Operations

遍历 \(b\),找到 \(b_i\) 在 \(a\) 中的位置,那么只能删除它左边的那个或右边的那个;但假如左边那个是将来的 \(b\) 的话,那就不能删了;同时会发现,删左边和删右边对序列的影响都是一样的,都是从两个能删的数变成两个能删的数。那就很简单了。

fin >> n >> m;
int mn = 1e9 + 1e2, mx = -1e9 - 1e2, ans = 1;
for (int i = 1; i <= n; i++) fin >> a[i];
for (int i = 1; i <= m; i++) fin >> b[i];
for (int i = 1; i <= n; i++) pnt[a[i]] = i;
for (int i = 1; i <= n; i++) vis[i] = 0;
for (int i = 1; i <= m; i++) vis[pnt[b[i]]] = true;
vis[0] = vis[n + 1] = true;
for (int i = 1; i <= m; i++)
{
(ans *= 2 - vis[pnt[b[i]] - 1] - vis[pnt[b[i]] + 1]) %= mod;
vis[pnt[b[i]]] = false;
}
fout << ans << Endl;

C. Graph Transpositions

惯例分层图。但是分层图的深度特别大怎么办?我们发现,\(2^{18}\) 次方就已经大于 \(n\) 了,所以暂且只建这么 \(18\) 层。

如果这 \(18\) 能到,那就 OK 了。如果不能,那就有讲究了。我们发现这时我们的第一追求是层数少,然后才是这层内的距离近。所以我们可以一层一层拓展,就可以保证层数少。

这么做还是 \(O(n^2)\)的,还需要加上一个剪枝——若当前点在以前的层中已经访问,那就不用再走它,于是复杂度就对了。还有就是 \(18\) 层以后的图上,存的 \(dis\) 就不用包括 \(2^k\) 次方了,就可以处理需要取模的最小值了。

D. Sum

神奇结论题:最多只有一列选了一部分,其他列要么全选要么不选。证明使用反证法就行了。这样问题就从多重背包变成了扣点一个点的 0/1 背包。这个问题可以使用分治或分块处理。

inline update(vector<u64>& f, int sze, u64 val) {
for (int i = k - sze; i >= 0; i--) {
f[i + sze] = max_(f[i + sze], f[i] + val);
}
} u64 ans; void solve(int l, int r, vector<u64> f)
{
if (l == r) {
for (int i = 0; i <= min_(k, m[l]); i++) {
ans = max_(ans, f[k - i] + a[l][i]);
}
return;
}
int mid = (l + r) >> 1; vector<u64> fl = f, fr = f;
for (int i = l; i <= mid; i++) update(fr, m[i], a[i][m[i]]);
for (int i = r; i > mid; i--) update(fl, m[i], a[i][m[i]]);
solve(l, mid, fl); solve(mid + 1, r, fr);
}

Codeforces Round #681 (Div. 1) Solution的更多相关文章

  1. Codeforces Round #466 (Div. 2) Solution

    从这里开始 题目列表 小结 Problem A Points on the line Problem B Our Tanya is Crying Out Loud Problem C Phone Nu ...

  2. 老年OIer的Python实践记—— Codeforces Round #555 (Div. 3) solution

    对没错下面的代码全部是python 3(除了E的那个multiset) 题目链接:https://codeforces.com/contest/1157 A. Reachable Numbers 按位 ...

  3. Codeforces Round #545 (Div. 1) Solution

    人生第一场Div. 1 结果因为想D想太久不晓得Floyd判环法.C不会拆点.E想了个奇奇怪怪的set+堆+一堆乱七八糟的标记的贼难写的做法滚粗了qwq靠手速上分qwqqq A. Skyscraper ...

  4. Codeforces Round 500 (Div 2) Solution

    从这里开始 题目地址 瞎扯 Problem A Piles With Stones Problem B And Problem C Photo of The Sky Problem D Chemica ...

  5. Codeforces Round #607 (Div. 1) Solution

    从这里开始 比赛目录 我又不太会 div 1 A? 我菜爆了... Problem A Cut and Paste 暴力模拟一下. Code #include <bits/stdc++.h> ...

  6. Codeforces Round #578 (Div. 2) Solution

    Problem A Hotelier 直接模拟即可~~ 复杂度是$O(10 \times n)$ # include<bits/stdc++.h> using namespace std; ...

  7. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)【ABCDF】

    比赛链接:https://codeforces.com/contest/1443 A. Kids Seating 题意 构造一个大小为 \(n\) 的数组使得任意两个数既不互质也不相互整除,要求所有数 ...

  8. Codeforces Round #525 (Div. 2) Solution

    A. Ehab and another construction problem Water. #include <bits/stdc++.h> using namespace std; ...

  9. Codeforces Round #520 (Div. 2) Solution

    A. A Prank Solved. 题意: 给出一串数字,每个数字的范围是$[1, 1000]$,并且这个序列是递增的,求最多擦除掉多少个数字,使得别人一看就知道缺的数字是什么. 思路: 显然,如果 ...

随机推荐

  1. docker逃逸漏洞复现(CVE-2019-5736)

    漏洞概述 2019年2月11日,runC的维护团队报告了一个新发现的漏洞,SUSE Linux GmbH高级软件工程师Aleksa Sarai公布了影响Docker, containerd, Podm ...

  2. 封装一个简单的ajax请求

    记录自己第一次封装ajax,肯定有很多考虑不周到,如有错误请指出,本人必将虚心改正. /** * * @param {Object} obj =>header:请求头:url:请求地址:meth ...

  3. Scrum Meeting 15

    第15次例会报告 日期:2021年06月09日 会议主要内容概述: 开发工作接近尾声,接下来两天重点放在单元测试.调CSS和增加数据集数量上. 一.进度情况 我们采用日报的形式记录每个人的具体进度,链 ...

  4. Scrum Meeting 0602

    零.说明 日期:2021-6-2 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成后端管理 ...

  5. elasticsearch的索引操作

    1.创建索引(test_index) curl -XPUT "http://192.168.99.1:9200/test_index" 2.创建索引,指定分片和副本的数量 curl ...

  6. 2021.10.10考试总结[NOIP模拟73]

    T1 小L的疑惑 对于\(P_i\),如果所有比\(P_i\)小的数加起来也达不到\(P_i-1\),那么值域肯定不连续.否则设原来值域最大值为\(mx\),则\(P_i\)会让值域最大值增致\(mx ...

  7. 使用spire.doc导出支持编辑Latex公式的标准格式word

    背景 之前有的教辅标注需求,在导出题库的时候希望顺便导出可以查看word,方便线下预览成品效果,因为只是用来预览并且为了沿用前端的样式,当时方案就是直接生成html,写个word的文件头,这样就可以用 ...

  8. 利用Nginx搭建Ambari本地安装源

    1.下载本地源包https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/ch_o ...

  9. (总结)Linux下su与su -命令的本质(转)

    转载地址:http://www.ha97.com/4001.html 本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户 ...

  10. Python Linux Ubuntu apt安装PyCharm

    PyCharm一个是Python集成开发环境,它既提供收费的专业版,也提供免费的社区版本.PyCharm带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Proj ...