临洮巨人

排序

题意:在字符串中找出 A、B、C 三个字母出现次数相同的区间个数。

初步的解法是前缀和,用 a(i), b(i), c(i) 表示在位置 i 之前(包括 i)各有 字母 A、B、C 多少个,枚举区间的左右端点 l 和r,若a(r)-a(l-1) = b(r)-b(l-1) = c(r)-c(l-1),则是一组解。O(n²) 的复杂度可以过 70%。

正解:将上式变形可得,

a(r)-b(r)=a(l-1)-b(l-1)

b(r)-c(r)=b(l-1)-c(l-1)

所以我们可以将 a(i)-b(i) 和 b(i)-c(i) 保存下来并进行双关键字排序。如果 a(i)-b(i)=a(j)-b(j),b(i)-c(i)=b(j)-c(j),那么在最终的有序序列中 i 和 j 对应的结点必然在同一片区域内,区域内的每个结点的 a-b 和 b-c 各相等。所以只要用线性时间统计出连续区域的大小,最终结果为 sum{ n*(n-1)/2, n 为各区域的长度 }。

有一个注意点是,a(i)-a(j) 表示的含义是区间 (i, j] 或 [i+1, j],那么 a(i)-a(1) 表示的是 (1, i](即 [2, i]),无法表示 [1, i]。而当 a(i)=b(i)=c(i) 时,就可能会漏解,因为此时区间 [1, i] 必为一解。所以在待排序的序列中加上 (0, 0) 即可(事实上 (0, 0) 就是 a(0)-b(0), b(0)-c(0),a(i)-a(0) 就可以表示区间 [1, i])。

 

青蛙神

状态压缩动规

题意:在 DAG 上找到路径乘积为完全平方数的路径条数。

初步的解法是暴搜,只能过 30%。

正解:由完全平方数的性质可以得出完全平方数的各个质因子的次数必然是偶数,而 N 最大为90,所以走完一条路径所得到的完全平方数的质因子不可能包含 47 及以上的素数(如果包含 47,那么至少有两个,而以 47 为因子的小于 90 的数中只有一个 47,所以不可能出现两次 47)。在 1 ~ 45 中,一共有 14 个质数,所以可以用一个二进制位来表示某个质因子出现了奇数次还是偶数次,所有二进制位组成状态,对于每个结点预处理出其默认状态,记为 st(i),用 f(i, j) 表示当 i 结点处于状态 j 时以 i 为终点的路径数(这里的状态 j 是由某个结点出发到 i 结点结束的状态之和,可以由异或操作得到),则

f(i, j) = sum{ f(k, j^st(i)), <k, i>∈E }

初始条件:f(i, st(i)) = 1

这里的 f(i, st(i)) = 1 并不意味着从 i 到 i 本身就是一解,而是说 f(i, st(i)) 是一种实际上可能达到的状态,因为在所有的 f(i, j) 中,许多状态是无法达到的。

最终结果是 ans = sum{ f(i, 0), i∈V }

(当某个结点状态为 0 时说明所有质因子个数都为偶数,是一个完全平方数)

 

败屩妖

二分答案+并查集

题意:给出一个图和几个点对,要求删去权值小于等于 D 的边使得给出的点对均不连通,求 D 的最小值。

解法:很明显 D 是最终结果中最大的边权,题目要求最大值的最小值,一般这类题目都可以考虑用二分答案的方法去做。二分枚举 D 的取值,删去图中小于等于 D 的边,用并查集合并互相连通的点,最后用并查集判断两个点是否连通。但是我一开始是用 DFS 遍历进行合并,所以后面的点都超时了,实际上枚举边集数组中每一条边进行合并即可。

省常中模拟 Test1 Day1的更多相关文章

  1. 省常中模拟 Test3 Day1

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

  2. 省常中模拟 day1

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

  3. 省常中模拟 Test2 Day2

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

  4. 省常中模拟 day2

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

  5. 省常中模拟 Test4

    prime 数论 题意:分别求 1*n.2*n.3*n.... n*n 关于模 p 的逆元.p 是质数,n < p. 初步解法:暴力枚举.因为 a 关于模 p 的逆元 b 满足 ab mod p ...

  6. 省常中模拟 Test3 Day2

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

  7. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

  8. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  9. 10.17(山东多校联合模拟赛 day1)

    山东多校联合模拟赛 day1 题不难 rect [问题描述] 给出圆周上的 N 个点, 请你计算出以这些点中的任意四个为四个角,能构成多少个矩形. 点的坐标是这样描述的, 给定一个数组 v[1..N] ...

随机推荐

  1. 关闭VS时, 每次都 会弹出 保存以下各项的更改吗?

    如果是添加项目, 或修改了解决方案的配置, 会弹出这个是正常的.  如果在没有修改的情况下还这样就是有问题的.   原因:  在Vs中安装了PowerDesigner插件, 并在VS中点了该插件的东西 ...

  2. codeforces 397B

    #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #includ ...

  3. What is Object Oriented Design? (OOD)

    Object Oriented Design is the concept that forces programmers to plan out their code in order to hav ...

  4. HDU 1102 Constructing Roads(最小生成树,基础题)

    注意标号要减一才为下标,还有已建设的路长可置为0 题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<str ...

  5. java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:

    总结:实现Runnable接口比继承Thread类更有优势: 1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性 2.继承Thread类,多个线程不能处理或者共享同一个资源,但 ...

  6. hdu 4699 Editor 模拟栈

    思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...

  7. JDK与JRE

    dos命令行中常见的命令: 1.dir:列出当前目录下的文件以及文件夹 2.md:创建目录(即文件夹) |-----C:\>md kkk(在C盘下创建了一个名为kkk的文件夹) 3.rd:删除目 ...

  8. hdu1021 Fibonacci Again

    http://acm.hdu.edu.cn/showproblem.php?pid=1021 //找规律.. #include<iostream> #include<stdio.h& ...

  9. 在win7之后安装Ubuntu14.04系统后,丢失对win7的引导

    安装完ubuntu 14.04后,开机直接进入ubuntu.但是win7下的分区还在,只是未显示引导菜单. 恢复步骤: (前提是机器上确实存在win7的引导) $ sudo update-grub G ...

  10. 安装eclipse for JavaEE 后的一些设置

    以下的设置是相对于一个workspace而设置的,如果更换了workspace则要重新设置. 1. 设置Text Editors: 2. 设置Content Assist 的快捷键(比较方便) 3. ...