[AGC001]

A.BBQ Easy

由于最大数肯定要和一个比自己小的数搭配保留该数,不如选择保留次大数,如此递归即解。因此将序列排序后输出序号为奇数的数即可。

B.Mysterious Light

观察样例,考虑重复因素,即将路径长度分割成若干个个等边三角形周长总和,可以注意到每次折射的过程实际上是将大的数减去小的数的过程,直到相减为 0,这个过程就是辗转相减法。

于是会发现每条三角形长度都是计算 \(n\) 和 \(x\) 最大公因数中辗转相减法中的一项,但是最后自己减自己那部分没有被算到答案里,即可得到答案为 \(3n-\gcd(n,x)\)。

C.Shorten Diameter

题目数据范围很小,考虑直接枚举根节点判断,则所有节点离该节点的距离都不超过 \(\frac{k}{2}\),若 \(k\) 是偶数直接枚举计算,否则可以改为枚举边,因为两点间对应边只有一条,所以这时相当于有两个根,枚举即可。

D.Arrays and Palindrome

把样例画出来试一试,发现在人工判断的过程中,我们相当于给图中具有等价关系的两点连边,即一个回文串中相等的点连边,然后构造出的解必须满足点构成的图联通。

由此我们可以考虑无解的情况,即图不连通,此时分为两种情况,要么边不够 \(n-1\) 条,要么图较为特殊。但本题中如果只判断 \(a\) 或 \(b\) 单个数组所构成的回文串,边数也不超过 \(\frac{n}{2}\),而出现奇回文块的情况更是会减少边数,因此我们可以得到如果 \(a\) 中奇回文块的个数多于 2,那么一定无解。

那其他情况呢?继续手推样例,发现无解的情况大多出现在我们使某两个回文块回文中心相同,于是我们可以考虑错排,\(b\) 中第一个连通块为 \(a\) 中第一个连通块大小加 1,最后一个为 \(a\) 中最后一块减 1,其他不变,可以发现这种构造方法是正确的。

为了保证少出现奇连通块,我们还需要把 \(a\) 中奇连通块放到头尾,即可正确构造。

E.BBQ Hard

题目让我们求一个二项式系数之和,暴力时间复杂度为 \(O(N^2)\),我们考虑能不能把 \(i\),\(j\) 两部分拆开分别计算后再进行合并。

考虑组合意义,从一堆里面选出若干个可以等价于将堆分成两堆,这两堆选出的物品个数之和为要求的个数的方案数,我们枚举其中一堆选出的物品个数,原式可以化为 $ \sum_{i}^{n} \sum_{j}^{n} \sum_{k} \binom{a_i+b_i}{a_i-k} \binom{a_j+b_j}{a_j+k} $,把求和次序交换,外层枚举 \(k\) 内层相当于两个多项式相乘,但是这里预处理的时间复杂度不会超标,直接计算可以做到 \(O(nk)\)。

还有没有其他做法呢?这看起来就很像个卷积,但是单项计算复杂度就是 \(O(n)\) 的,我们只好换个思路,考察二项式系数原本的定义,转化柿子为 \([x^{a_i+a_j}] \sum_{i}^{n} \sum_{j}^{n} (x+1)^{a_i+a_j+b_i+b_j}\),这下可以卷了,除掉 \(x\) 后将两边分开可以变成 \([x^0]\left(\sum^{2n}_{k}Q_k\left(1+x\right)^k\right)^2\),其中 \(Q_i\) 为所有 \(a_i+b_i\) 为 \(k\) 的 \(x^{-a_i}\) 之和。

由于一个数列每次乘 \((1+x)\) 都是加一遍自己和自己移位之后的数列,我们这里只记录每一项的系数,预处理 \(Q_k\left(1+x\right)^k\),倒序循环枚举 \(i\) 从 \(k\) 到 0,把对应 \(-a_i\) 位置加 1 后整体乘上 \((1+x)\),即每个位置向后移一位后加一遍原本的序列即可,这也等价于自己前面每个数加一遍自己前面的系数,这个倒序枚举每次乘 \(x\)(此处为\((1+x)\)) 的做法也叫作秦九韶算法。最后别忘记去重,我们不能使 \(i=j\)。

还有没有其他做法呢?考虑原式的组合意义,即从 \((0,0)\) 走到 \((a_i+b_i,a_j+b_j)\) 的方案数,考虑分离两部分,我们平移坐标轴,把起点设为 \((-a_i-a_j)\),之后考虑多个起点的 dp 进行统计即可,这种方法也不要忘记去重。

AGC 补题笔记的更多相关文章

  1. cordforce Educational Codeforces Round 47 补题笔记 <未完>

    题目链接 http://codeforces.com/contest/1009 A. Game Shopping 直接模拟即可,用了一个队列来存储账单 #include <iostream> ...

  2. SAM 做题笔记(各种技巧,持续更新,SA)

    SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...

  3. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  4. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  5. hdu5017:补题系列之西安网络赛1011

    补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为m ...

  6. 2017河工大校赛补题CGH and 赛后小结

    网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...

  7. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  8. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  9. [数]补题ver.

    上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...

  10. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

随机推荐

  1. P5752 [NOI1999] 棋盘分割题解

    本文来自我的洛谷博客. 这个题解思路虽然与其他人的思路相同, 但力求使用清晰易懂的图片和文字,讲解最简洁的道理. 请大家耐心地看完,注意要结合图片一起哦~~ 2022-8-24 更改了格式与错别字. ...

  2. 2023-07-20:假设一共有M个车库,编号1~M,时间点从早到晚是从1~T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, 一共有K

    2023-07-20:假设一共有M个车库,编号1 ~ M,时间点从早到晚是从1 ~ T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, ...

  3. 【go语言】1.1.1 Go 语言的历史和背景

    Go 语言,也被称为 Golang,是一种静态强类型.编译型的开源编程语言.Go 语言的出现是为了解决当下的软件开发问题,特别是大规模软件系统的开发. Go 语言的设计者包括 Robert Gries ...

  4. sql-lab通关

    page1-less1-22 联合查询 第一关 发现是有回显的,且传入的参数是通过'1'包裹的,所以我们的payload,如下 测试列数 ?id=1' order by 3 --+ //超过第一条语句 ...

  5. 一文搞懂TCP的三次握手和四次挥手

    目录 1.三次握手 2.四次挥手 3.11种状态名词解析 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开. 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所 ...

  6. nginx-http反向代理与负载均衡

    前言 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源.同时,用户不需要知道目标服务器的地址,也无须在 ...

  7. 记一次 .NET某报关系统 非托管泄露分析

    一:背景 1. 讲故事 前段时间有位朋友找到我,说他的程序内存会出现暴涨,让我看下是怎么事情?而且还告诉我是在 Linux 环境下,说实话在Linux上分析.NET程序难度会很大,难度大的原因在于Li ...

  8. uniapp APP微信登录、支付、分享以及支付宝支付 实战踩坑记录

    1.微信支付和支付宝支付   先上代码.封装好了的组件    html部分      <template> <view class="rows"> < ...

  9. 一文解锁vue3中hooks的使用姿势

    vue3 中的 hooks 是什么? 简单来说如果你的函数中用到了诸如 ref,reactive,onMounted 等 vue 提供的 api 的话,那么它就是一个 hooks 函数,如果没用到它就 ...

  10. Mybatis自动生成mapper和实体类

    准备工作:需要俩个jar包: (1)连接数据库的jar包:mysql-connector-java-5.1.16-bin.jar (2)实现需求的插件Generator:mybatis-generat ...