临洮巨人

排序

题意:在字符串中找出 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. log4j安装与简介

    问题描述:     在应用程序中添加日志记录总的来说基于三个目的:    (1) 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:     (2) 跟踪代码运行时轨迹,作为日 ...

  2. 【BZOJ】【3052】【WC2013】糖果公园

    树分块 老早(大约一个月以前?)就听说这道神题了……orz rausen 一直拖到现在才做……发现还是不会呢= = 只好也去Orz了Hzwer和zky http://hzwer.com/5250.ht ...

  3. NYOJ-171 聪明的kk AC 分类: NYOJ 2014-01-02 09:01 165人阅读 评论(0) 收藏

    #include<stdio.h> #define max(x,y) x>y?x:y int main(){ int num[22][22]={0}; int n,m; int x, ...

  4. 精通ASP.Net MVC 3 框架(第三版)学习笔记

    精通ASP.Net MVC 3 框架(第三版)学习笔记 代码才是王道. http://pan.baidu.com/s/1pJyL1cn

  5. Oracle中的 UPDATE FROM 解决方法

    转:http://www.cnblogs.com/JasonLiao/archive/2009/12/23/1630895.html Oracle中的 UPDATE FROM 解决方法 在表的更新操作 ...

  6. hdoj 2544 最短路

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2544 分析:Dijkstra算法 //2013-10-30 10:01:25 Accepted 254 ...

  7. crontab 指定执行用户

    linux下可以通过配置crontab来定时执行任务,执行体可以是一条系统命令或自己写的一个脚本,同时可以指派用户来执行.配置crontab有两种方法.方法1.使用crontab命令,例如添加一个新的 ...

  8. POJ 2029 Get Many Persimmon Trees(DP||二维树状数组)

    题目链接 题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树.输出数目 思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做. #include <stdio ...

  9. 【零基础学习iOS开发】【02-C语言】05-进制

    上一讲简单介绍了常量和变量,这讲补充一点计算机的基础知识---进制. 我们先来看看平时是如何表示一个整数的,最常见的肯定是用阿拉伯数字表示,比如“十二”,我们可以用12来表示,其实这种表示方式是基于一 ...

  10. LR_问题_无法使用LR的Controller,提示缺少license

    问题描述 无法使用LR的Controller,提示缺少license 问题解决 使用开始->所有程序->HP LoadRunner->loadrunner,在打开界面的左上角选择co ...