[AGC043B] 123 Triangle
个人思路:
首先,经过 \(1\) 轮就没有 \(3\) 了。
先考虑能否递推前 \(i\) 个数的答案,发现不行。
再考虑能否推出 \(i\) 个数的答案的计算公式,也发现不行。
然后就不会了。
正解:
首先,经过 \(1\) 轮就没有 \(3\) 了,只剩 \(0,1,2\),答案必然为三者之一。
我们发现,除非某行出现了全是 \(1\) 的情况,否则该行一定有 \(1\) 与 \(2\) 或 \(0\) 相邻,\(1\) 会留到下一行。这样 \(1\) 就会留到最后。如果出现了全是 \(1\) 的情况,下一步序列里全是 \(0\)。
如果第 \(2\) 行有 \(1\),答案要么是 \(0\) 要么是 \(1\),这个时候只需要判断答案奇偶性。\(|a-b|\) 和 \(a+b\) 在模 \(2\) 意义下是相等的。把操作的 \(|a-b|\) 视为 \(a+b\),我们可以计算第 \(2\) 行的第 \(i\) 个数在答案中计算了多少次。这个东西可以递推,但是复杂度会爆炸。我们发现这个数的递推式等价于组合数的递推式,因此次数为 \(C_{n-2}^{i-1}\)
答案即为 \(\sum\limits_{i=1}^{n-1} f_{2,i} \times C_{n-2}^{i-1} \mod 2\)。
如果第 \(2\) 行没有 \(1\),两个偶数相减不可能出现奇数,答案要么是 \(0\) 要么是 \(2\)。我们直接把所有数除以 2,这样也转为判断奇偶性的问题,答案乘上 \(2\) 就行了。
[AGC043B] 123 Triangle的更多相关文章
- [atAGC043B]123 Triangle
不妨先操作一轮,使得$0\le a_{i}\le 2$ 结论:若序列中存在1,则答案为0或1 考虑归纳,注意到若序列中存在1,除非所有元素均为1,否则操作一轮后必然仍存在1,那么根据归纳假设即成立,而 ...
- 二分--1043 - Triangle Partitioning
1043 - Triangle Partitioning PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: ...
- 1043 - Triangle Partitioning(数学)
1043 - Triangle Partitioning PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit ...
- Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志
12-3. 数据库连接日志 问题 你想为每次与数据库的连接和断开记录日志 解决方案 EF为DbContext的连接公开了一个StateChange 事件.我们需要处理这个事件, 为每次与数据库的连接和 ...
- [LeetCode] Triangle 三角形
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- [LeetCode] Pascal's Triangle II 杨辉三角之二
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- [LeetCode] Pascal's Triangle 杨辉三角
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- 【leetcode】Pascal's Triangle II
题目简述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Retur ...
- 【leetcode】Pascal's Triangle
题目简述: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5 ...
- POJ 1163 The Triangle(简单动态规划)
http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
随机推荐
- Java面向对象之什么是多态?
多态 动态编译:类型:可扩展性 即同一方法可以根据发送对象的不同而采用多种不同的行为方式. 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多. 多态存在的条件: 1.有继承关系,类型转换异 ...
- JS日期时间增加减少
new Date().add(Date.MONTH, +3).format('Y-m-d') // 加三个月 new Date().add(Date.MONTH, -3).format('Y-m-d ...
- C# 教你如何终止Task线程
我们在多线程中通常使用一个bool IsExit类似的代码来控制是否线程的运行与终止,其实使用CancellationTokenSource来进行控制更为好用,下面我们将介绍CancellationT ...
- Unity3D中实现按资源名称自动化命名打包AssetBundle
首先把模型变成预制体 一般当需要打包成AssetBundle的资源不多时,可以自己通过AssetLabels窗口手动命名,然后再打包,但是当需要打包的资源过多时,一个一个的去手动编辑就特别的麻烦,因此 ...
- 二分查找中mid值的计算方法
在刷题的时候遇到许多二分查找的题目 发现很多大佬的题解中mid值得计算都是用的:mid = low + (high-low)/ 2; 为什么不用mid = (low+high)/ 2的计算方法呢? i ...
- DC约束笔记
关于get_pins get_cells get_ports等的定义 关于建立保持与max/min的关系 2.setup time和hold time 建立时间(setup time)是指在触发器的时 ...
- Swift中使用KVO
在Swift中使用KVO,有如下两种方法: 原OC提供的: open func addObserver(_ observer: NSObject, forKeyPath keyPath: String ...
- CoreText学习笔记
CoreText是Apple系统的文字渲染引擎. 我们先看一个字符的字形图,了解一下一个字形包含的部分: 它的坐标系为窗口的左下角为视图的原点(跟Mac系统一样的坐标系),而iOS系统的坐标系为窗口的 ...
- 51电子-STC89C51开发板:安装驱动
全部内容请点击目录列表查看: 51电子-STC89C51开发板:<目录> --------------------------- 正文开始 ---------------------- ...
- java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
你设置的主键里面已经有一个值为1的数值了,再插入一个就重复了. 但是主键是不能重复的.