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. windows下几种I/O端口(了解)

    如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的.Windows操作系统提供了选择(Select).异步选择(WSAAsyncSelect).事件选择(WSAEventSel ...

  2. JAVASCRIPT的一些知识点梳理

    春节闲点,可以安心的梳理一下以前不是很清楚的东东.. 看的是以下几个URL: http://web.jobbole.com/82520/ http://blog.csdn.net/luoweifu/a ...

  3. hdu 4447 Yuanfang, What Do You Think?

    思路: 这题有个结论也可以自己归纳: 对于给定的n,其约数用pi表示 T(n)=T(p1)T(p2)……T(pn)T(n') 其中T(n')是这个式子所独有的也就是 T(n')=(x^n-1)/T(p ...

  4. 29. 栈的push,pop序列

    题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序 解:其实这题主要是判断进栈次数和出栈次数誓不是相等.我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此 ...

  5. 深入浅出Java并发包—锁机制(三)

    接上文<深入浅出Java并发包—锁机制(二)>  由锁衍生的下一个对象是条件变量,这个对象的存在很大程度上是为了解决Object.wait/notify/notifyAll难以使用的问题. ...

  6. cojs 疯狂的求和问题 解题报告

    QAQ 好久不在cojs上出题了 最近学了点新科技,于是就做成题来分享了 这道题是要求simga(i^k) 那么就先说说部分分的算法吧: 10分: 直接暴力就可以了,时间复杂度O(nlogk) 30分 ...

  7. LR_问题_无法打开IE浏览器、监视服务器资源

    无法打开IE浏览器 使用web(http)协议录制时,无法打开IE浏览器,且生成的日志信息为 ****** Start Log Message ****** Web Recorder version ...

  8. kmalloc/kfree,vmalloc/vfree函数用法和区别

    http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...

  9. 利用python 获取 windows 组策略

    工作中有时候会有这种需求: 1. 自动配置组策略的安全基线,这个东西不用你自己写了,微软有这个工具,Microsoft Security Compliance Manager,你可以在下面的地址去下载 ...

  10. BitMask 使用参考

    对于 Java 类应用,内存方面需要注意: 不要占用大量内存,否则可用内存少:触发 GC 或 OutOfMemoryError: 不要频繁创建对象,频繁内存分配,触发 GC. 对于枚举和常量: 使用枚 ...