A. Knapsack

猜个结论——先把所有的东西加起来,如果小于 \(\frac{1}{2}m\) 就输出不合法;如果在 \([\frac{1}{2}m, m]\)之间直接全部输出;若大于 \(m\),那就想办法把他减到 \(m\) 以下并且大于等于 \(\frac{1}{2}m\),那么问题就转化为了求序列减完以后大于等于 \(\frac{1}{2}m\) 的情况下的最小值。那我们排个序,从大到小循环,把当前能减的都减掉就是了。

for (int i = n; i; i--)
{
//fout << '$' << p[i] << ' ' << a[p[i]] << ' ';
if ((sum - a[p[i]]) * 2 >= W)
{
sum -= a[p[i]];
used[p[i]] = false;
}
}

B. Catching Cheaters

又是一个巧妙的序列 DP。设 \(f_{i,j}\)表示 \(a\) 中选出的子段以 \(i\) 结尾、\(b\) 中选出的子段以 \(j\) 结尾的最大相似值。为什么可以这么设状态呢?因为我们根本不关心前面是什么样子的,我只想知道截止 \((i-1,j-1)\) 这个位置的最大相似值,并且这个东西满足最优子结构。状态转移方程:

\[f_{i,j} = \max\{0, f_{i-1,j}+1, f_{i,j-1}+1, f_{i-1,j-1}+4[a_i==b_j] - 2\}
\]

这个东西思考起来很困难,因为总感觉这个和两个序列所选段的起始点有关;仔细想想,其实是无关的。

C. Xor Tree

假设留下了 \(k\) 个点,则一共 \(k\) 条边,要构成一个可以有重边的树,那么它合法当且仅当这个重边唯一,即 \(j\) 是 \(i\) 要找的点且 \(i\) 是\(j\) 要找的点,这样的点对唯一。

最少扣掉几个数转化为最多留下几个数。把原序列搞到 0/1 Trie 上,设 \(f_x\) 表示 \(subtree(x)\) 中最多留下几个点。如何转移?我们发现,若它的其中一颗子树的 \(size > 1\),那么这颗子树一定是自己内部全连完;若它两颗子树的 \(size_1\) 都大于 1,那么这颗树就断开了。所以状态转移方程为 \(f_x = max(f_{ls},f_{rs})+1\),若只有一个孩子就直接等于。可以证明这样是充分必要的。

Codeforces Round #683 (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 #683 (Div. 2, by Meet IT)【ABCD】

    比赛链接:https://codeforces.com/contest/1447 A. Add Candies 题意 \(1\) 到 \(n\) 个袋子里依次有 \(1\) 到 \(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. javascript-jquery-文档处理

    一.移动元素 1.append():向每个匹配元素的内部追加内容.例如:$("选择器1").qppend("选择器2"):将会匹配选择器2的元素,移动到匹配选择 ...

  2. RabbitMQ延时队列应用场景

    应用场景 我们系统未付款的订单,超过一定时间后,需要系统自动取消订单并释放占有物品 常用的方案 就是利用Spring schedule定时任务,轮询检查数据库 但是会消耗系统内存,增加了数据库的压力. ...

  3. JDBC:(java database Connection) java数据库连接。

    JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC连接步骤: 1.先导入jar包,把jar放入到工程下并 ...

  4. Spring 5 MVC 中的 Router Function 使用

    Spring 5 发行已经好几年了,里面提出了好几个新点子.其中一个就是 RouterFunction,这是个什么东西呢? Spring框架给我们提供了两种http端点暴露方式来隐藏servlet原理 ...

  5. 数列极限计算中运用皮亚诺Taylor展开巧解

    这是讲义里比较精华的几个题目,今晚翻看也是想到了,总结出来(处理k/n2形式). 推广式子如下: 例题如下:

  6. Python课程笔记(四)

    1.模块的导入 相当于Java的包或C语言的头文件 (1) import math s = math.sqrt(25) print(s) (2) from math import sqrt s=mat ...

  7. Spring Security 的注册登录流程

    Spring Security 的注册登录流程 数据库字段设计 主要数据库字段要有: 用户的 ID 用户名称 联系电话 登录密码(非明文) UserDTO对象 需要一个数据传输对象来将所有注册信息发送 ...

  8. 线程私有数据TSD——一键多值技术,线程同步中的互斥锁和条件变量

    一:线程私有数据: 线程是轻量级进程,进程在fork()之后,子进程不继承父进程的锁和警告,别的基本上都会继承,而vfork()与fork()不同的地方在于vfork()之后的进程会共享父进程的地址空 ...

  9. SimpleNVR流媒体服务在多分屏直播实时阅览时所遇到问题的解决

    视频有一个流的概念,称为流媒体.当大量的客户端或WEB访问监控摄像机的时候,大多数的录像机无法承受那么大的网络压力,这时候SimpleNVR流媒体服务器的优势就显示出来了.其能将客户端的访问压力转到服 ...

  10. 性能工具之代码级性能测试工具ContiPerf

    前言 做性能的同学一定遇到过这样的场景:应用级别的性能测试发现一个操作的响应时间很长,然后要花费很多时间去逐级排查,最后却发现罪魁祸首是代码中某个实现低效的底层算法.这种自上而下的逐级排查定位的方法, ...