ARC065(2020.8.3)

A

尛你 \(\%\%\%\)

B

翻译是错的,自闭了好久。先并查集将地铁连接的连通块联通,再枚举每条道路边判断是否在同一连通块即可。

C

这翻译不知道在讲什么,建议看原题面。

可以发现对于每个点以哈密顿距离 \(d\) 画圆是一个以该点为几何中心,将对角线长度为 \(2d\) 的正方形旋转 \(45 \degree\) 的一个图形。可以发现我们要做的实际上是一个 \(bfs\) 的扩展过程,现在问题转化为如何快速求出满足条件的点的数量,不难发现这实际上是统计四条线段上的点的个数,并且这四条线段斜率都为 \(+1 / -1\) 实际上这样的直线都是有非常优秀的性质的,可以发现这些直线上的点都会满足 \(x + y = k / x - y = k\) 的性质,于是我们可以考虑分别维护斜率为 \(+1, -1\) 的直线,将每个点按照截距为第一关键字 \(x\) 为第二关键字排序,每次查询只需要在数组上 \(lower\_bound / upper\_bound\) 即可。但为了保证复杂度正确,我们只能让每个点入队一次,因此还需要开个 \(set\) 实时维护剩余的点,注意可能顶点上会算两次,在查询斜率为 \(-1\) 的直线时将左边界 \(+1\) 右边界 \(-1\) 即可。

看了题解后学到一种更为牛逼的做法,可以发现我们不好统计是因为这些线段是有斜率的,我们可以直接旋转坐标轴,让直线没有斜率。例如在本题中,我们坐标轴整体向右旋转 \(45 \degree\),接下来我们可以使用相似将新点坐标算出来,但此时坐标中可能带有 \(\sqrt{2}\) 这样不方便统计,于是我们可以再将点坐标整体放大 \(\sqrt{2}\) 倍,那么再根据相似可以发现每个点会从 \((x, y)\) 到 \((x - y, x + y)\)。那么我们现在就只需要统计正着的正方形上的点即可,分横着的线和竖着的线维护,以竖着的为例,按照 \(x\) 为第一关键字 \(y\) 为第二关键字排序,每次在数组上二分统计答案,遍历 \(set\) 暴力删除即可。

这种旋转坐标轴的方式貌似叫做曼哈顿距离转切比雪夫距离,这种做法的好处就是不论斜率为多少我们可以转化为斜率为 \(0\) 的情况考虑,能够简化我们的做法。

D

首先可以发现这样一条性质,被完全包含的线段直接去掉显然是对答案没有影响的,于是我们去掉这些线段后所有线段都将会是一个叠一个的形式。接下来我们可以发现这样一个性质,一个区间有多少种排列方式只与这个区间有多少个 \(1\) 有关,于是我们就有了下面这个 \(dp\),令 \(dp_{i, j}\) 为到第 \(i\) 条线段,当前还剩余 \(j\) 个 \(1\) 的方案数,可以发现我们每次转移需要确定的是这条线段和上条线段左端点之间的部分,于是我们可以枚举给这部分放多少个 \(1\),于是就有转移 \(dp_{i, j} = \sum\limits_{k = 0} ^ {\min(j, l_i - l_{i - 1})} dp_{i - 1, j - (sum_{r_i} - sum_{r_{i - 1}}) + k} \times \dbinom{l_i - l_{i - 1}}{k}\) 这个 \(dp\) 复杂度看起来是 \(O(n ^ 3)\) 的,但貌似 \(k\) 每次枚举的上界是 \(l_i - l_{i - 1}\),因此这个 \(dp\) 的复杂度其实应该是 \(O(n ^ 2)\) 的。

题解的做法更为简单,考虑每次只确定一位选或不选,令 \(dp_{i, j}\) 为当前确定了前 \(i\) 个位置,还剩下 \(j\) 个 \(1\) 可选,转移就非常简单了,注意一下边界情况就可以了。其实这两种做法的本质是一样的,只是具体的实现方式有所不同。

Atcoder ARC-065的更多相关文章

  1. 【题解】Atcoder ARC#90 F-Number of Digits

    Atcoder刷不动的每日一题... 首先注意到一个事实:随着 \(l, r\) 的增大,\(f(r) - f(l)\) 会越来越小.考虑暴力处理出小数据的情况,我们可以发现对于左端点 \(f(l) ...

  2. AtCoder ARC 076E - Connected?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_c 平面上有一个R×C的网格,格点上可能写有数字1~N,每个数字出现两次.现在用一条曲线将一对相同的 ...

  3. AtCoder ARC 076D - Built?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_b 本题是一个图论问题——Manhattan距离最小生成树(MST). 在一个平面网格上有n个格点, ...

  4. AtCoder ARC 082E - ConvexScore

    传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c 本题是一个平面几何问题. 在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n} ...

  5. Atcoder ARC 082C/D

    C - Together 传送门:http://arc082.contest.atcoder.jp/tasks/arc082_a 本题是一个数学问题. 有一个长度为n的自然数列a[1..n],对于每一 ...

  6. 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

    题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...

  7. 【题解】Atcoder ARC#96 F-Sweet Alchemy

    首先,我们发现每一个节点所选择的次数不好直接算,因为要求一个节点被选择的次数大于等于父亲被选择的次数,且又要小于等于父亲被选择的次数 \(+D\).既然如此,考虑一棵差分的树,规定每一个节点被选择的次 ...

  8. AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision

    题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则 ...

  9. 【题解】Atcoder ARC#67 F-Yakiniku Restaurants

    觉得我的解法好简单,好优美啊QAQ 首先想想暴力怎么办.暴力的话,我们就枚举左右端点,然后显然每张购物券都取最大的值.这样的复杂度是 \(O(n ^{2} m)\) 的.但是这样明显能够感觉到我们重复 ...

  10. 【题解】Atcoder ARC#85 E-MUL

    ……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 ...

随机推荐

  1. C++ 虚函数和友元

    虚函数具有动态联编性,在类族中有强大功能:友元函数具有跨类访问的功能,本质却是一种对封装的破坏. 先看这样一个例子: #include<iostream> using namespace ...

  2. [c++]对vector<T>容器求交集,并集,去重

    #include "iostream" #include "vector" #include "algorithm" //sort函数.交并 ...

  3. Java初学者作业——编写Java程序,实现判断所输入字符的类型(数字、小写字母、大写字母或其他字符)

    返回本章节 返回作业目录 需求说明: 编写Java程序,实现判断所输入字符的类型(数字.小写字母.大写字母或其他字符) 实现思路: 声明变量c,用于存储用户输入的字符. 通过Scanner接收用户输入 ...

  4. Eclipse导入Solr源码Version5.5.3

    将Solr的5.5.3版本源码导入Eclipse, Solr源码需要使用ant构建后才能导入Eclipse. 1.JDK安装 Solr要求jdk1.7+: 请参考Windows下安装配置jdk 2.A ...

  5. html基础 表格的相关属性使用

    1.1表格的基本标签 语法结构:<table> /*整体包裹部分,包裹多个tr */ <tr> /* 表格的每一个行,包裹td */ <td></td> ...

  6. sqlsugar freesql hisql 三个ORM框架性能测试对比

    hisql与目前比较流行的ORM框架性能测试对比 总体测试结果 插入记录数 hisql(耗时) sqlsugar(耗时) freesql(耗时) 5条 0.0107秒 0.0312秒 0.02675秒 ...

  7. APICloud超实用经验分享——平台功能

    从2016年开始使用APICloud进行app项目开发,到现在也有五六年了.在此过程中伴随着APICloud一起成长,踩过一些坑,自己的技术也提升不少.在APICloud 推出avm框架一年之后,ID ...

  8. Jenkins_构建任务提示文件权限不足的处理方法

    问题现象 构建任务失败,查看日志提示读取文件权限不足. 问题分析 在linux上查看对应文件,发现这些文件只有root用户才有读的权限,jenkins默认是以jenkins用户在操作linux系统,因 ...

  9. nginx + tomcat 单个域名及多个域名的配置

    //nginx + tomcat 单个域名及多个域名的配置//修改nginx的配置文件,linux默认路径 /usr/local/nginx/conf/nginx.conf //prot为8082的w ...

  10. icmpsh之icmp反弹shell

    一,技术原理 向ping www.baidu.com时,本机会先向百度的服务器发送ICMP请求包,如果请求成功了,则百度服务器会回应ICMP的响应包 引用百度百科: ICMP(Internet Con ...