2017多校Round2(hdu6045~hdu6055)
补题进度:10/11
1001(不等式)
根据题意列不等式,解一解就行了
1002(套路)
题意:
给定一个随机产生的1e6*1e6的矩阵和一个1e3*1e3的矩阵,你要回答这个1e3*1e3的小矩阵出现在大矩阵的哪个位置
分析:
每隔1e3行 1e3列去建立一个check矩阵,看看这个check矩阵在不在1e3*1e3的矩阵中(Hash就行)
那么时间复杂度就是O(1e3*1e3*hash)
一个比较好的取法是取一个1*64的矩阵,用unsigned long long把64个压成一位放入hash中
1003(贪心)
样例有误导性,贪心着来就行了,用单调队列维护
1004(找规律+逆序对)
题意:
按照其规则将数字填到一个矩阵中,问能不能通过移动空格使得最后的有序
分析:
若空格左右移动,相当于没有改变排列,逆序对奇偶性不改变
若空格上下移动,那么相当于左右移动了m-1次,因为最后空格又回到了右下角,所以上下移动一定进行偶数次,所以逆序对奇偶性也不该边
我们想要的结果逆序对是偶数,可以猜想如果原序列逆序对个数是偶数那么就可行,否则不可行(官方题解给出了这里的证明)
然后问题就是如何快速求出逆序对了
我们可以按照取数顺序考虑有多少个小于它的数放到了它后面
以第一次(1->p+1->2p+1->...)为例,我们发现对答案的贡献分别是p-1+2*(p-1)+3*(p-1)+..... 这明显可以等差数列求
然后去掉这些之后,我们发现剩余的还是单增的,算法仍旧相同
1005(DP)
题意:
给出一个n的排列(n<=3000),现在可以把连续的一段当作一组,组内进行排序,然后你可以任选两个区间进行交换,问交换后如果能变成12345...n的话,最多能分成多少块
分析:
首先一个n^3的算法很好得到
首先预处理出ma[i][j]和mi[i][j]
我们去枚举需要交换哪两个区间[a,b] [c,d],那么很明显d=ma[a,b],所以只需要去枚举a,b,c,而实际上符合条件的很少,所以这里枚举加些剪枝是可以看作n^2的
很明显我们需要知道f[i][j]表示区间[i,j]变为有序最多能分成多少块
那么求f是n^3的
现在我们要将求f[i][j]变成n^2的
我们发现这个dp中的k取值很有讲究,是决策单调的,并且k不能很大,如果很大就可能导致分割的两个区间不合法
我们用la[i]表示当前以i为左端点的最长可行区间是[i,la[i]],那么f[i][j]=f[i][la[i]]+f[la[i]+1][j]
不过要注意分成的两个区间一定要是左边的左边的最大值小于等于右边的最小值,否则f[i][j]=1
这样我们利用了决策单调性将复杂度降到O(n^2)的了
1006(找规律)
题意:

分析:
刚开始想去找第一层每个数对答案的贡献,但数字量太多了,并没用
可以用特征根求出第一行的通式,然后等比求和求出第一行的S的通式
通过S的通式可以写出第二行的通式,然后再等比求和求出第二行的S的通式
再往下写两行,就能找出Fm,1的规律了
1007(原根)
队友太强辣,把切掉了,我就不补了
1008(单调栈)
题意:
对于一个n*m的方格,每个格子中都包含一种颜色,求出任意一个矩形包含颜色种数的期望。(n,m<=100)
分析:
我们单独去考虑每个位置对答案的贡献
很明显,不同的颜色互不影响,我们可以把相同的颜色挑出来单独计算
容易想到去计算这个东西的反面,当前答案=总的矩阵数-没有被任何一个点覆盖的矩形个数,但这个并不好求,所以这种求反面的想法不可行
我们定义一个位置(i,j)的有效管理矩形是以(i,j)为最左上角的矩形,那么答案就是所有位置的有效管理矩形数的和
那么我们对每一个位置去求有效管理矩形数
显然枚举上界,下界就是n,左界和右界也要枚举(注意左界右界是单调的)
那么当然没必要将每种颜色分开做,直接去枚举每个位置就行了,这样复杂度大概是O(n^4),数据比较水直接就能过了
其实枚举左界和右界可以用单调栈进行优化
我们可以按行进行枚举,记pre[color][j]表示到当前行为止,对于第j列来说,行坐标的最大的颜色为color的格子是什么
那么我们枚举每一个j的时候,就可以把这些pre的高度放进一个单调栈中去计算就行了
这样的复杂度O(n^3)
1009(莫比乌斯反演)
题意:

n,Ai<=10^5
分析:
对于一个B,我们去求所有数的gcd,如果这个gcd>=2,那么B是合法的,如果这个gcd=1,那么B是不合法的
gcd=1的B数量 + gcd=2的B的数量 + gcd=3的B的数量 + ... + gcd=min(Ai)的B的数量 ==== 所有B的总数(πAi)
那么我们要求的答案就是$ans=\prod {A_i} - (gcd=1的b的数量)$
那么莫比乌斯反演一下$ans=\sum \mu(d)*sum(d)$
sum(d)表示公约数为d的时候方案数,很明显$sum(d)=\prod \frac{A_i}{d}$
这里也要优化,将$\frac{A_i} {d}$相同的放在一块,这里可以用一个桶来存
1010
待填坑
1011(Trick)
题目:
给了n个整点(n<=500),问有多少个正多边形
分析:
找找规律会发现,只有正方形是可行的
所以可以枚举两个点作为正方形的相邻点,根据两个点去旋转90°以及去做一个平移操作可以得到另外两个点,判断那两个整点是否被读入覆盖就行了
时间复杂度O(n^2)
2017多校Round2(hdu6045~hdu6055)的更多相关文章
- 2017 多校5 hdu 6093 Rikka with Number
2017 多校5 Rikka with Number(数学 + 数位dp) 题意: 统计\([L,R]\)内 有多少数字 满足在某个\(d(d>=2)\)进制下是\(d\)的全排列的 \(1 & ...
- 2017 多校5 Rikka with String
2017 多校5 Rikka with String(ac自动机+dp) 题意: Yuta has \(n\) \(01\) strings \(s_i\), and he wants to know ...
- 2017 多校4 Wavel Sequence
2017 多校4 Wavel Sequence 题意: Formally, he defines a sequence \(a_1,a_2,...,a_n\) as ''wavel'' if and ...
- 2017 多校4 Security Check
2017 多校4 Security Check 题意: 有\(A_i\)和\(B_i\)两个长度为\(n\)的队列过安检,当\(|A_i-B_j|>K\)的时候, \(A_i和B_j\)是可以同 ...
- 2017 多校3 hdu 6061 RXD and functions
2017 多校3 hdu 6061 RXD and functions(FFT) 题意: 给一个函数\(f(x)=\sum_{i=0}^{n}c_i \cdot x^{i}\) 求\(g(x) = f ...
- 2017 多校2 hdu 6053 TrickGCD
2017 多校2 hdu 6053 TrickGCD 题目: You are given an array \(A\) , and Zhu wants to know there are how ma ...
- 2017 多校1 I Curse Myself
2017 多校2 I Curse Myself(第k小生成树) 题目: 给一张带权无向连通图,该图的任意一条边最多只会经过一个简单环,定义\(V(k)为第k小生成树的权值和\),求出\(\sum_{k ...
- hdu6136[模拟+优先队列] 2017多校8
有点麻烦.. /*hdu6136[模拟+优先队列] 2017多校8*/ #include <bits/stdc++.h> using namespace std; typedef long ...
- hdu6134[莫比乌斯反演] 2017多校8
/*hdu6134[莫比乌斯反演] 2017多校8*/ #include <bits/stdc++.h> using namespace std; typedef long long LL ...
随机推荐
- monkeyrunner 简单用例编写
monkeyrunnerfrom com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImagedevice = Monke ...
- mybatis传入参数类型parameterType和输出结果类型resultType详解
前言 Mybatis的Mapper文件中的select.insert.update.delete元素中都有一个parameterType和resultType属性,parameterType属性用于对 ...
- 关于mybatis的一些用法
resultMap 的用法 <resultMap id="唯一标识" type="映射的pojo类"> <id column = " ...
- vue点击时动态改变样式 ------- 最简单的方法
vue点击时动态改变样式 template中 <li :class="{ active:index==isActive }" @click="changeValue ...
- sklearn之SVC
sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability= ...
- C++类的存储及虚函数实现原理
一.C++成员函数在内存中的存储方式 用类去定义对象时,系统会为每一个对象分配存储空间.如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间.按理说,如果用同一个类定义了10个对象,那么就 ...
- 169. Majority Element@python
Given an array of size n, find the majority element. The majority element is the element that appear ...
- mongdb数据库的操作
一.数据库使用 1.使用mongodb服务,必须先开启服务,开启服务使用 mongod --dbpath D:mongdb (D:mongdb 自己所创建数据库的路径, 在cmd窗口中输入) ...
- 【转载】WampServer图标显示红色后变成橙色怎么解决
WampServer就是Windows Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件. 工具/原料 WampServer 方法/步 ...
- Hibernate-03
目的:表操作(表维护) 一.一对一(略过) 二.一对 1.建表原则:在多的一方创建外键指向一的一方的外键 2.建表:实体中添加 商品实体表: private Set<User> user ...