省常中模拟 Test4
prime
数论
题意:分别求 1*n、2*n、3*n、... n*n 关于模 p 的逆元。p 是质数,n < p。
初步解法:暴力枚举。因为 a 关于模 p 的逆元 b 满足 ab mod p = 1,而 b < p,所以可以枚举 b。但是由于没有用 long long 导致爆零。
(下文用 ie(x) 表示 x 关于题目中 p 的逆元,且下文中的运算均在 mod p 的前提下)
)最后再用线性时间求出 ie(a*n)=ie(a)*ie(n)。
注释:ie 是积性函数,(不严谨的)证明如下:
设 x 是 a 关于 p 的逆元,y 是 b 关于 p 的逆元,即 xa mod p = yb mod p = 1,则
xayb mod p = 1
(ab)*(xy) mod p = 1
即 xy 是 ab 关于模 p 的逆元,即 ie(ab) = xy = ie(a)*ie(b)。
color
线段树
,然后端点1被涂成颜色2,端点2被涂成颜色3,则询问区间 [1, 2] 时总的颜色种数为 3。颜色总数少于 60 种。
初步解法:直接普通的点线段树,写了三个多小时还是爆零。
正解:最棘手的问题就是两个相邻点之间的开区间的颜色如何保存。其实也很简单:将每个区间的左右端点扩大到原来的两倍,则区间的中点就可以用来表示中间这段开区间。所以正解不过就是把区间端点扩大两倍然后进行普通的点线段树操作即可。
即可。
threefour
树形动规
题意:假设在一棵有根树上存在五个互不相同的节点,分别记为 a,b,c,d,z,若这 5 个点同时满足以下要求:a,b,c,d,lca(a,b),lca(c,d),lca(lca(a,b),lca(c,d))这 7个节点互不相同,并且 z 是 lca(lca(a,b),lca(c,d))的祖先;那么五元组(a,b,c,d,z)表示了一棵合法的"不三不四树"。同时,交换a,b,c,d,z的顺序只算作一种。现在给定一棵以 1 号节点为根的树,求满足上述要求的"不三不四树"的总数。输出答案mod 1234567891后的结果。
初步解法:考场上写完第二题已经只有 15 分钟了,直接写了个 rand() 骗分然后打扫雷去了。
正解:其实是比较明显的树形 DP 题。
「不三不四树」的最终形态是这样的:

(两节点不一定相邻,中间可以隔几个点)
用 f(x, 0) 表示在以 x 为根的子树中(包括 x)任选一个,一共有多少种方案;用 f(x, 1) 表示在以 x 为根的子树中(包括 x)任选三个,一共有多少种方案;用 f(x, 2) 表示在 x 的左右子树中各选三个,一共有多少种方案(x 的左右子树各选 3 个对应了「不三不四树」的底下两层,x 作为「不三不四树」的第二层)。
很明显,f(x, 0) 即以 x 为根的整棵子树的节点数。
f(x, 1) = sum{ f(i, 0)*f(j, 0) } + sum{ (k, 1) } i, j, k 是 x 的子节点
解释一下:f(x, 1) 表示在整棵子树中任选三个构成一棵满二叉树的方案数,那么有两种情况:构成的树的根节点是 x 或不是 x。如果构造出的树的根节点是 x,那么再在不同的两棵子树中各选 1 个即可,由乘法原理,可得上式的第一部分;如果根节点不是 x,那么根节点必然在子树中,所以加上子结点的 f(x, 1) 即可。
f(x, 2) = sum{ f(i, 1)*f(j, 1) }
由于 f(x, 2) 表示构造出的树以 x 为根,所以不用加上子树的 f(x, 2),用类似于上面那个递推式的第一部分的方法计算。
则最终答案为 ans = sum{ f(x, 2)*depth(x) },depth 从 0 开始计算。(depth(x) 就代表了 x 有多少个祖先结点,x 的任意一个祖先结点都可以作为整棵「不三不四树」的根)
省常中模拟 Test4的更多相关文章
- 省常中模拟 day1
第一题: 题目大意: 给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数. 解题过程: 1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定 ...
- 省常中模拟 Test2 Day2
two 模拟 大意:给你一个 N 位二进制数,有四种操作:加1.减1.乘2.整除2.给定一个操作序列,求最终结果.N <= 5*10^6.数据保证不会在最高位上进行进位或退位操作. 初步解法:由 ...
- 省常中模拟 day2
第一题: 题目大意: 有mn颗糖,要装进k个盒子里,使得既可以平均分给n个人,也可以平均分给m个人. 求k的最小值. 解题过程: 1.先看一组小数据(13,21).那么根据贪心的原则很容易想到先拿13 ...
- 省常中模拟 Test3 Day1
tile 贪心 题意:给出一个矩形,用不同字母代表的正方形填充,要求相邻的方块字母不能相同,求字典序(将所有行拼接起来)最小的方案. 初步解法:一开始没怎么想,以为策略是每次填充一个尽量大的正方形.但 ...
- 省常中模拟 Test3 Day2
matrix 找规律 题意:给定一个 N*N 的只有 0 和 1 的矩阵,有 Q 个操作,分三种:1. 将某行上的所有数字取反:2. 将某列上的所有数字取反:3. 输出 sum{ a[i][j]*a[ ...
- 省常中模拟 Test1 Day1
临洮巨人 排序 题意:在字符串中找出 A.B.C 三个字母出现次数相同的区间个数. 初步的解法是前缀和,用 a(i), b(i), c(i) 表示在位置 i 之前(包括 i)各有 字母 A.B.C 多 ...
- 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
1 什么是联合? 联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的.每个数据成员都在相同的内存地址开始.分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数. ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- 在C#中模拟Javascript的setTimeout方法
在C#中模拟Javascript的setTimeout方法 背景 每种语言都有自己的定时器(Timer),很多人熟悉Javascript中的setInterval和setTimeout,在Javasc ...
随机推荐
- Linux GPT分区
parted /dev/sdb //parted sdb磁盘 mklabel gpt //设置该磁盘分区为gpt mkpart primary 0% 100% //划分分区大 ...
- 使用EF code first和asp.net mvc4遇到的问题总结
最近使用EF code first和asp.net mvc4做项目,遇到些问题,记录一下. 一.EF code first 生成外键列问题. 一般情况下,都是先写一个int型外键id属性,然后写一个外 ...
- Chp10: Scalability and Memory Limits
The Step-by-Step Approach break down a tricky problem and to solve problems using what you do know. ...
- Searching a 2D Sorted Matrix Part I
Write an efficient algorithm that searches for a value in an n x m table (two-dimensional array). Th ...
- HDU 1753 大明A+B(字符串模拟,简单题)
简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...
- java基础知识回顾之---java String final类普通方法的应用之“模拟字符串Trim方法”
/* * 4,模拟一个trim功能一致的方法.去除字符串两端的空白 * 思路: * 1,定义两个变量. * 一个变量作为从头开始判断字符串空格的角标.不断++. * 一个变量作为从尾开始判断字符串空 ...
- lintcode: 有效的括号序列
题目: 有效的括号序列 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and']', 判定是否是有效的括号序列. 样例 括号必须依照 "() ...
- brew命令
下面参考下网友的总结: 查看brew的帮助 brew –help 安装软件 brew install git 卸载软件 brew uninstall git 搜索软件 brew search git ...
- Java类的加载、链接和初始化
一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...
- NSDictionary 遍历
NSDictionary *dic1=[NSDictionary dictionaryWithObjectsAndKeys: @"1",@"a", ...