个人思路:

首先,经过 \(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的更多相关文章

  1. [atAGC043B]123 Triangle

    不妨先操作一轮,使得$0\le a_{i}\le 2$ 结论:若序列中存在1,则答案为0或1 考虑归纳,注意到若序列中存在1,除非所有元素均为1,否则操作一轮后必然仍存在1,那么根据归纳假设即成立,而 ...

  2. 二分--1043 - Triangle Partitioning

    1043 - Triangle Partitioning PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit:  ...

  3. 1043 - Triangle Partitioning(数学)

    1043 - Triangle Partitioning   PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit ...

  4. Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志

    12-3. 数据库连接日志 问题 你想为每次与数据库的连接和断开记录日志 解决方案 EF为DbContext的连接公开了一个StateChange 事件.我们需要处理这个事件, 为每次与数据库的连接和 ...

  5. [LeetCode] Triangle 三角形

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  6. [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, ...

  7. [LeetCode] Pascal's Triangle 杨辉三角

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...

  8. 【leetcode】Pascal's Triangle II

    题目简述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Retur ...

  9. 【leetcode】Pascal's Triangle

    题目简述: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5 ...

  10. POJ 1163 The Triangle(简单动态规划)

    http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

随机推荐

  1. Vue基础之v-if与v-show

    Show Time! 说再多不如直接上效果: (一)v-if <div id="app"> <div v-if="flag" class=&q ...

  2. 阶梯场景jp@gc - Stepping Thread Group (deprecated)

    1.新建线程,添加配置元件.监听器 由上可见: 需要启动100个线程, 然后间隔30s就持续5s去启动10个线程, 那么就需要这样重复操作10次,才能100个线程全部启动. 最后整体100个线程持续运 ...

  3. Document.createEvent与new Event区别

    Document.createEvent 写法: const e = document.createEvent('HTMLEvents'); e.initEvent('click', true, tr ...

  4. 分区函数Partition by使用

    1.PARTITION BY使用 基本语法 over(partition by col1 order by col2): select t.*,row_number() over( order by ...

  5. 编译报错Could NoT find Threads (missing: Threads FOUND)

    解决方法1: 原来的命令行加上-lpthread 解决方法2: -DCMAKE_THREAD_LIBS_INIT=-lpthread

  6. CRON表达式转换成中文

    目录 1,cron表达式生成器 2,cron表达式 一,结构 二.各字段的含义 三.常用表达式例子 3,转换成中文: 1,CronExpParserUtil 2,WeekEnum 3,测试: 4,测试 ...

  7. GPT和MBR分区格式

    目前市面上磁盘有两个格式,一种是GPT(Master Boot Record)分区一种是MBR(Master Boot Record)分区. 像UEFI用于取代老旧的BIOS,而GPT则为的是取代老旧 ...

  8. Delphi模拟win+tab按键效果

    //按下左侧win键 keybd_event(VK_LWIN,0,0,0); //按下tab键 keybd_event(VK_TAB,0,0,0); //抬起左侧win键 keybd_event(VK ...

  9. QT程序自动寻找依赖的DLL

    1.找到项目的生成目录,比如项目源码路径:E:\Qt\Login: 2.进入它的项目生成目录,拷贝出可执行程序,例如放置在 E:\QtApp中. 3.然后从开始菜单打开 Qt 命令行, a.输入命令 ...

  10. PY3多继承

    __author__ = "Alex Li"class A: def __init__(self): print("A")class B(A): pass #d ...