省常中模拟 Test1 Day1

临洮巨人

排序

题意:在字符串中找出 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(n2) 的复杂度可以过 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

时间: 2024-10-11 16:21:27

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

省常中模拟 Test3 Day1

tile 贪心 题意:给出一个矩形,用不同字母代表的正方形填充,要求相邻的方块字母不能相同,求字典序(将所有行拼接起来)最小的方案. 初步解法:一开始没怎么想,以为策略是每次填充一个尽量大的正方形.但是很快就能找到反例.比如当一个 4*2 的矩形左半部分填充了一个 2*2 的 A 后,不应该在右半部分填充 2*2 的 B,而是应该先填一个 1*1 的 B,然后继续用 A 填充,如图. 上面这个例子中,第二种方案虽然用到了 C,但是如果按照题意将每一行拼接起来之后第二种方案的字典序显然更小. 正解

省常中模拟 Test3 Day2

matrix 找规律 题意:给定一个 N*N 的只有 0 和 1 的矩阵,有 Q 个操作,分三种:1. 将某行上的所有数字取反:2. 将某列上的所有数字取反:3. 输出 sum{ a[i][j]*a[j][i] } mod 2.N <=1000,Q<=5*10^5. 解法:初看题目会觉得很棘手.然后可以发现,对于不在对角线上的点,a[i][j]*a[j][i] 会被累加两次(一次是在计算 (i, j) 时,另一次是在计算 (j, i) 时),由同余定理可知,无论 a[i][j] 或 a[j][

省常中模拟 Test2 Day2

two 模拟 大意:给你一个 N 位二进制数,有四种操作:加1.减1.乘2.整除2.给定一个操作序列,求最终结果.N <= 5*10^6.数据保证不会在最高位上进行进位或退位操作. 初步解法:由于题目中的特殊限制(操作不影响最高位),我们可以直接用一个 char 数组和一个尾指针来进行操作.「加1」操作即从最后一位往前找连续的 1 并将其改成 0,然后将遇到的第一个 0 改成 1,并结束循环.「减1」操作类似,找连续的 0 并将其改成 1,将遇到的第一个 1 改成 0.「乘2」操作即在末尾添加一

省常中模拟 Test4

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) = ap-2,所以我们可以先用快速幂求出 n! 的逆元.由于 ie 是积性函数(见注释)

省常中模拟 day1

第一题: 题目大意: 给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数. 解题过程: 1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定的.所以就可以每次任意找两个奇偶性相同的消掉.于是就想到可以用双向链表来模拟. 2.更好的方法:直接用一个栈来模拟,每次加入一个元素,如何和栈顶元素奇偶性一样就弹出栈顶元素. 初始得分100. 第二题: 题目大意: 给出N个数的数列,定义区间[L,R]的权值为AL and AL+1 and AL+2

省常中模拟 day2

第一题: 题目大意: 有mn颗糖,要装进k个盒子里,使得既可以平均分给n个人,也可以平均分给m个人. 求k的最小值. 解题过程: 1.先看一组小数据(13,21).那么根据贪心的原则很容易想到先拿13个盒子,每个盒子装13颗糖,这样当要分给13个人的时候,每个人还欠8颗糖,当要分给21个人的时候,还有8个人欠13颗糖.所以问题就变成了把8*13颗糖放到盒子里,要求既可以平均分给8个人,也可以平均分给13个人. 也就是说可以不断减小问题的规模: (13,21)->(8,13)->(5,8)-&g

在GOOGLE浏览器中模拟移动浏览器 调试Web app

在此记录下,以便在今后的工作中用到. 首先通过F12 or Ctrl+Shift+i,打开开发者工具,点击开发者工具面板的 (show  drawer)按钮,出现如下图所示的面板: 切换至Emulation选项卡中,在这里我们就可以自由地模拟各种各样的移动浏览器了,该功能支持了包括iPhone.ipad.google nexus系列等机型.   感兴趣的同学赶紧去试试吧.你会发现chrome是最好的web app开发利器.   温馨提示:需要在chorme 32版本后,才有些设置哦.   最后还

WEBBROWSER中模拟鼠标点击(SendMessage/PostMessage)

好久没有写文章,发一篇顶顶博客访问量.别人建议转一些比较好的代码也贴过来,但是我打算这里主要发自己原创的代码,所以么..流量该多少就多少吧... 回到主题,在webbrowser中点击某链接网上几乎都是用document对象模拟点击,这个方法基本能应对一般的情况,但是例如广告联盟的点击XXX就有检测机制(不多解释,你们懂的).所以完全模拟鼠标的点击事件就比较完美.于是我用了最常见的SendMessage. 接下来就要解决一个问题,webbrowser的句柄问题.从控件本身得到的句柄不是真正的浏览

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

1 什么是联合? 联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的.每个数据成员都在相同的内存地址开始.分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数.同一时刻只有一个成员可以被赋给一个值. 下面我们来看看C++中如何表达联合: // Code #01union TokenValue{    char _cval;    int _ival;    double _dval;}; 2 联合的内存布局与内存使用情况. 下面我们来考察一下TokenVa