2024.10.23心有错模拟赛总结
赛时:\(100+100+50+0\)
A. easy game
送分题
题意:给定一个字符串 \(s\) ,求最长的子串 \(t\) 使得能重排 \(t\) 后 \(t\) 为回文串
显然 \(t\) 重排后能成为回文串的条件是出现奇数次的字符 \(\le 1\) 直接搞出前缀二进制\(p_i\),每一位表示该字符出现次数为奇还是偶。每次查询前面 \(p_j\) 与 \(p_i\) 异或起来最多有 \(1\) 个 \(1\) 的最小的 \(j\) ,直接算长度即可。
B. Circle & Square
简单题
题意:给定一颗圆方树,不知道方点圆点,问是否能构造 \(n\) 点 \(m\) 边的无向图使得其圆方树与给出的同构。
度为 \(1\) 的节点一定时圆点,直接以其为根 \(01\) 染色即可分辨圆点和方点。每个方点直接将挂在上面的圆点连一圈,然后有多余的边再内部两两连。
C. 未命名1
爆搜题
题意:\(T\) 次询问,每次询问有多少 \(i,j\) 满足 \(a \le i \le b, c \le j \le d\)且\(lcm(i,j)\)能表示为\(x^y(y\ge1)\)。
直接预处理爆搜枚举所有质数的指数,然后要保证对于所有质数两个数指数的\(max\)的\(gcd\)要\(\ge 2\)。发现个数是\(3 \times 10^6\)级别的。二维数点就行了。还以为是什么神秘题。
D. Sereja and Order
乱搞题
题意:给定 \(n\) 个程序,有两台电脑,第 \(i\) 个程序在两台电脑上跑分别要 \(a_i\) 和 \(b_i\) 时间。每个程序都要在两台电脑上分别跑一遍,安排时间使得一个程序不同时在两台电脑上跑,一台电脑不能同时跑两个程序。求最小时间以及方案。
首先排除掉 \(max \space a_i+b_i > max(\Sigma a_i, \Sigma b_i)\) 的情况,这种情况下直接把 \(a_i+b_i\) 最大的那个顶着放其它随便放。
然后就到了喜闻乐见的随机化,直接猜想答案为 \(max(\Sigma a_i, \Sigma b_i)\) 随机第一台电脑上的顺序以及第二台电脑上的顺序,\(check\)一下是否冲突就行了。