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的更多相关文章

  1. 省常中模拟 day1

    第一题: 题目大意: 给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数. 解题过程: 1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定 ...

  2. 省常中模拟 Test2 Day2

    two 模拟 大意:给你一个 N 位二进制数,有四种操作:加1.减1.乘2.整除2.给定一个操作序列,求最终结果.N <= 5*10^6.数据保证不会在最高位上进行进位或退位操作. 初步解法:由 ...

  3. 省常中模拟 day2

    第一题: 题目大意: 有mn颗糖,要装进k个盒子里,使得既可以平均分给n个人,也可以平均分给m个人. 求k的最小值. 解题过程: 1.先看一组小数据(13,21).那么根据贪心的原则很容易想到先拿13 ...

  4. 省常中模拟 Test3 Day1

    tile 贪心 题意:给出一个矩形,用不同字母代表的正方形填充,要求相邻的方块字母不能相同,求字典序(将所有行拼接起来)最小的方案. 初步解法:一开始没怎么想,以为策略是每次填充一个尽量大的正方形.但 ...

  5. 省常中模拟 Test3 Day2

    matrix 找规律 题意:给定一个 N*N 的只有 0 和 1 的矩阵,有 Q 个操作,分三种:1. 将某行上的所有数字取反:2. 将某列上的所有数字取反:3. 输出 sum{ a[i][j]*a[ ...

  6. 省常中模拟 Test1 Day1

    临洮巨人 排序 题意:在字符串中找出 A.B.C 三个字母出现次数相同的区间个数. 初步的解法是前缀和,用 a(i), b(i), c(i) 表示在位置 i 之前(包括 i)各有 字母 A.B.C 多 ...

  7. 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?

    1 什么是联合? 联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的.每个数据成员都在相同的内存地址开始.分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数. ...

  8. Python中模拟enum枚举类型的5种方法分享

    这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下   以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...

  9. 在C#中模拟Javascript的setTimeout方法

    在C#中模拟Javascript的setTimeout方法 背景 每种语言都有自己的定时器(Timer),很多人熟悉Javascript中的setInterval和setTimeout,在Javasc ...

随机推荐

  1. 数字式PID控制的应用总结

    PID控制是一个二阶线性闭环控制器,通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.PID控制优点:a. 技术成熟,b. 易被人们熟悉和掌握,c. 不需要建立数学模型 ...

  2. 【leetcode】Find Peak Element ☆

    A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...

  3. package.json 字段全解析 share

    Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...

  4. POJ2586Y2K Accounting Bug

    http://poj.org/problem?id=2586 Description Accounting for Computer Machinists (ACM) has sufferred fr ...

  5. no such partition grub rescue>

    事出有因: 电脑系统是win7+ubuntu,然后在win7下把ubuntu的分区给删除了,重启,出现 no such partition grub rescue> 错误. 原因是双系统之前是由 ...

  6. 毕向东JAVA视频讲解笔记(前三课)

    1,定义一个类,因为java程序都定义类中,java程序都是以类的形式存在的,类的形式其实就是一个字节码文件最终体现. 2,定义一个主函数.为了让该类可以独立运行. 3,因为演示hello world ...

  7. 是什么让 Ubuntu 选用 Qt 而不是 GTK?

    是什么让 Ubuntu 选用 Qt 而不是 GTK? 一个正在发生的事实,Ubuntu正在不断Qt化!我曾一直在抱怨的Software Center,今日一看源码,竟然有softwarecenter/ ...

  8. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元素过滤器(*),追加方法,节点,样式操作)

    属性.表单过滤器 属性过滤选择器: $("div[id]")选取有id属性的<div> $("div[title=test]")选取title属性为 ...

  9. 设计模式之工厂方法模式VS简单工厂方法模式

    名词解释: 简单工厂:这个实在是没什么解释的,就是一个工厂类,然后有一个方法,根据传递的参数可以通过switch(你也可以是if,或者是使用高端的反射 )来进行对象的创建. 工厂方法:定义一个用于创建 ...

  10. iOS 相机和相册使用授权

    1.判断用户是否有权限访问相册 授权一次后,不在提示是否授权 #import <AssetsLibrary/AssetsLibrary.h> ALAuthorizationStatus a ...