[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 ...
随机推荐
- switch和if
#include<stdio.h> int main() { char ch1='A'; char ch2='B'; switch(ch1) { case'A': switch(ch2) ...
- Voletile-多线程小例子
public class Test{ public static volatile int t = 0; //如果没有下面的全局锁标识,则结果不一定为10*1000 public static Str ...
- MySQL/MariaDB如何创建用户并限制指定才能IP访问?
MySQL/MariaDB如何创建用户并限制指定才能IP访问? 登入数据 $ mysql --version mysql Ver 15.1 Distrib 10.9.3-MariaDB, for de ...
- 2022-04-26内部群每日三题-清辉PMP
1.一家组织的经验教训数据库表明过去的重大项目问题是质量失败.项目经理在制定质量管理过程时决定做得更彻底.为确保质量,项目经理应该怎么做? A.根据项目的范围和需求制定质量管理计划. B.将所有质量控 ...
- ubuntu下升级gcc11环境
使用ppa源升级 官网地址: https://launchpad.net/ ppa toolchan/test地址: https://launchpad.net/~ubuntu-toolchain-r ...
- 关于head中代码被挤到body中的问题
可能是使用php引用文件时出现了问题,文件格式不是utf-8,将其放在head后面就好
- vue3 reactive值不更新
即上一个随笔里面的form表单数据定义的问题之后,又出现了另一个问题. 页面里面有一个数组: let ruleForm = reactive([ { name:'123456' } ]) 我要 ...
- MySQL数据库SQL语法常规操作
必备sql和表关系及授权 graph LR 执行1[必备sql和授权] 执行2[SQL强化和实践] 执行3[索引和函数以及存储过程] 执行4[Python操作mysql和应用] 执行5[常见SQL语句 ...
- js中的加法运算
- 发送QQ消息
#include <iostream>#include <windows.h>#include <vector> using namespace std;int m ...