Logo Fee_cle6418的博客

博客

标签
暂无

InfOJ Round 1 题解

2023-04-03 21:50:24 By Fee_cle6418

A

难度:橙

算法一

直接爆搜,复杂度 $O(4^nn^4)$,期望得分 $2$。

算法二

我们来找找规律呢:欸怎么 $n>2$ 输出都是 $0$ 啊?

于是直接判断,$n\le 2$ 输出 1,否则输出 $0$。期望得分 $100$。

事实上可以简单地证明 $n>2$ 时答案都是 $0$。

一个长度大于 $2$ 的串,一定存在一个数字($7$ 或 $9$)出现次数大于 $1$。那么,令 $l_1=r_1=pos_1,l_2=r_2=pos_2$,得到的 gcd 一定等于这个数字。因此,我们把某个串中所有满足 gcd 为 7 和 9 的长度为 1 的区间对拿出来组成两个集合,这两个集合就可以唯一确定这个串。

B

难度:绿

Q:为什么暴力分这么高?

A:这题相对第一题来说比较难,暴力分放多一点比较良心。

Q:为什么我写正解得了 0 分,每个 Subtask WA 1~2 个点?

A:你可能没特判操作次数没用完时已经排好序了的情况。试试这组数据:

input:
2 1
1 2
output:
2 1

算法一

枚举所有可能的最终排列,再判断能否恰好交换 $K$ 次得到,可以先求最小交换次数,然后看奇偶性。复杂度 $O(n!)$,期望得分 $30$。

$K=10^{12}$ 那答案要么是 $1,2,...,n$ 要么是 $1,2,...,n,n-1$,只需要判逆序对数的奇偶性。复杂度 $O(n^2)$ 或 $O(n\log n)$,期望得分 $45$。

算法二

从前往后贪心。

设当前位置为 $i$,已经确定了 $1\sim i-1$ 位置字典序最小的答案,现在还剩 $m$ 次操作。那找到 $[i,\min(i+m+1,n)]$ 区间内的最小元素,把这个元素交换至 $i$。

假如已经交换成 $1\sim n$ 了操作还有剩余:剩偶数次则无影响,剩了奇数次就要交换 $n-1,n$。

暴力找区间最小元素,时间复杂度 $O(n^2)$,期望得分 $75$。

算法三

注意到“把这个元素交换至 $i$”其实相当于区间剪切,把 $[i,p-1],[p,p]$ 变成 $[p,p],[i,p-1]$,可以用平衡树维护。再维护个区间最小值及其位置即可。也可以用权值线段树 / 树状数组维护,不过因为出题人写的平衡树,时限开得很大。

时间复杂度 $O(n\log n)$,期望得分 $100$。

C

难度:紫

算法一

当 $n\le 10^5$ 时,可以枚举行,问题转化为求 $1\sim R$ 的 $k$ 进制下异或和(前缀和相减即可)。这可以按位统计,$O(\log R)$ 求出。复杂度 $O(n\log nm)$,期望得分 $18$。

计算过程中可能会爆 long long,最好开上 __int128。

算法二

$nm$ 总体很小,考虑设置阀值分类讨论。

若 $n\le B$,使用算法二。

否则,枚举列,按位考虑,考虑第 $a$ 位,相当于求

$$\sum_{i=l}^r \dfrac{im+j}{K^a}\ \mathrm{mod}\ K$$

类欧即可。

时间复杂度 $O(\max(B\log nm,\dfrac{nm}{B} \log^2 nm))$,当 $B=O(\sqrt{nm\log nm})$ 时最优,为 $O(\sqrt{nm}\log^{1.5}nm)$。

第二个 Subtask 可直接实现,第一个、最后一个 Subtask 需要取模优化,而且需要选手处理 long long 的溢出,细节非常多,因此只放了 39 分 (时限还是开到了 std 两倍以上,常数较好的话可能不优化也可以过) 洛谷总时限太小,导致必须卡常数,建议去 InfOJ 提交。

D

难度:紫

算法一

暴力枚举所有情况。复杂度 $O(2^nn)$,期望得分 $1$。

可以 dp,设 $f_{i,S}$ 为前 $i$ 个字符,最后 $k$ 个字符形如 $S$ 的方案数,转移显然。时间复杂度 $O(n2^k)$,期望得分 $9$。

算法二

使用矩阵快速幂优化上面的 dp。

结合实现精细程度和 $a=0$ 情况,可以得到 $12\sim 52$ 分不等。

时间复杂度 $O(8^k\log n)$。

算法三

使用 BM 算法求出 $k,a$ 固定时 $ans_n$ 的最短递推式。

经过打表验证,$k\le 14$ 时最短递推式长度不超过 $4719$。结合常系数齐次线性递推的 $O(m\log m\log n)$ 算法(其中 $m=4719$),可以做到 $O(m^2+m\log m\log n)$ 的复杂度(单组数据)。

视线性递推算法实现可以获得 $64\sim 100$ 分。

本题对常数没有太多要求,std 完全不卡常。

InfOJ Round 2 公告

2023-01-19 16:38:25 By Fee_cle6418

InfOJ Round 2 将在 2023 年 2 月 3 日下午 14:00 举行。

比赛基本信息:

  • 出题人:@feecle6418
  • 时长:240 分钟
  • 题目数量:4 题
  • 题目描述均不超过十行!出题人也是厌倦超长题目背景的选手。
  • 难度:普及到省选。

奖励:

  • 各题首 A 奖励 $2,6,6,6$ 元。
  • 排名 $1\sim 5$ 名奖励 $10,7,5,3,1$ 元。若同分则平分。
  • AK 者额外奖励 $10$ 元。

本次比赛在 infoj 上 rated。

We are looking forward to your participation!

InfOJ Beginner Round 3 公告

2022-12-11 20:42:51 By Fee_cle6418

InfOJ Beginner Round 3 将在 2022 年 12 月 24 日下午 15:05 举行。

比赛基本信息:

  • 出题人:@feecle6418
  • 时长:120 分钟
  • 题目数量:5 题
  • 题目描述均不超过十行!出题人也是厌倦超长题目背景的选手。
  • 难度:因为是 Beginner Round 所以难度仅略高于普及组,对新手非常友好。 所有题难度均不高于 CF Div.1 B。
  • 由于题目风格偏 CF,本次比赛几乎没有部分分。
  • 虽然题目简单,但一些高水平选手在 vp 其中某些题时花的时间也有半小时左右。

奖励:

  • 各题首 A 奖励 $1,1,1,2,2$ 元。
  • 排名 $1\sim 3$ 名奖励 $3,2,1$ 元。

本次比赛在 infoj 上 rated,跌涨幅度为正常比赛的三分之一。

We are looking forward to your participation!

CSP-S 2022 某些省的民间数据全省测评结果与排名

2022-10-30 22:18:36 By Fee_cle6418

当前 OJ 网络压力较大,想看排名可以加 QQ 群 324364809

动态更新。

注意,这个排名是用 Windows+Lemonlime 测得的,配置为:g++ 11.1.0,Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz,内存 32 GB。与标准测评环境存在很大差异。没啥参考价值,大家看着玩!

T2 数据已经修复。

OJ 网络资源有限,请不要多次重复访问!

InfOJ 愚人节比赛 2022 题解

2022-04-01 21:30:56 By Fee_cle6418

题解

A

输出 __float128inf 的二进制表示。

#include <stdio.h>
typedef __float128 db;
int main() {
    db x = ((db)1)/(db(0));
    char* p = (char*)(&x);
    for (int i = sizeof(db) - 1; i >= 0; --i) {
        for (int j = 7; j >= 0; --j) {
            printf("%c", '0' + ((p[i] >> j) & 1));
        }
    }
    return 0;
}

B

2/1/L1/1~7 表示 infoj 上题号为 2 的题的第一部分(1. 题目描述)Line 1(第一行)的第 1~7 个字。

以此类推即可推出题面,注意 0 是标题。

题意:给出 $n$ 个数,给下标是 $x$ 的倍数的数加 $y$,求他们的 gcd。

C

直接模拟题意,注意 long double。函数很快就会收敛,所以如果 $|f(x)-x|\le eps$ 就 break。

D

前三个 Subtask 运用人类智慧打败 NIT 即可。

最后一个 Subtask:注意到

若任何一方操作不合法,另一方获胜。

只需要在中间消耗 NIT 兵力,使得 NIT 进行镜像操作时不合法即可。

E

观察本场比赛题目名称的第一个字母,是 INFINITYOJ,所以只要 N 开头的名字都是好的。

F

输出 01 串第 $i$ 位为 1 代表 InfOJ 上题号为 $i$ 的题是公开的。

G

题面中有对于每次询问,输出 AliceBob

所以,对于每次询问,输出 AliceBob,即可通过。

H

第一组数据,因为样例是原题样例,猜想数据是原题数据。第一组数据是原题第三个测试点,复制过来即可。

因为下发文件给到了 Never Gonna Give You Up 上,怀疑本题下发文件有鬼,所以问题是怎么获取本题下发文件。

注意到 J 题有下发文件,把 J 题下发文件链接改一下即可。

第三组数据是原题 #89 的下发文件,做法同上。

I

题意是输出 a^{a^{a^{a...}}},坑点:因为要尽量简单,所以最中间嵌套的一层不能是 a^{a} 只能是 a^a

J

答案是 FDFGGGDFFG

InfOJ 愚人节比赛 2022!!!!!!

2022-03-18 21:53:06 By Fee_cle6418

4 月 1 号 infOJ 愚人节赛,IOI 赛制。

出题人 gyh20,feecle6418,dottle。

过题即可参与抽奖送 dottle bot 源代码,小粉兔垃圾桶,Anton 立牌/海报。欢迎来玩~

http://119.27.163.117/contests

本次比赛计入 rating,rating 跌涨幅度为普通比赛 八分之一。

infoj qq 群:324364809

InfOJ 招募管理员 | 管理员列表

2022-02-11 18:40:19 By Fee_cle6418

更新日志 & 报告 bug (last update 2025.3.20)

2022-02-01 21:06:29 By Fee_cle6418

如果有什么 bug 可以在这里报告!

2022.2.1

  • 增加了 C++14,C++17 的支持
  • 提交时的默认语言改为 C++14
  • 暂时移除了实际上还不支持的 Java8,Java11

2022.7.27

删除了所有炸评论区的评论。

2022.8.27

修复了找回密码功能。

2022.8.31

修复了 ACM 赛制。

2022.10.8

增加权限系统。

2022.10.9

升级编译器版本,从 g++/gcc 7.4.0 变成 11.1.0,支持 C++20.C++23 (C++23 仅部分支持).

2022.11.25

增加了 realIOI 赛制,赛时不能查看他人代码,没有排行榜。

2022.11.27

gravatar 换成了国内镜像。

2022.11.30

改正 markdown 表格。

2022.12.25

  1. 管理员可以查看题目,比赛,用户的权限。
  2. 非 OI 赛制比赛,赛后不再重测。
  3. 修复比赛界面点不进去“统计”。

2023.2.14

  1. 增加图床。
  2. 用户可以下载有权限的题目数据。例如,管理员可以通过 链接 下载 A+B Problem 数据。

2025.3.20

修复了 latex 不能正确显示的问题。


To do list

  • 升级 python 等的编译器
  • 支持 Java
  • 多办比赛
  • 把 InfOJ 建成国际化大 OJ

InfOJ 愚人节比赛 2021 题解

2021-04-01 20:29:59 By Fee_cle6418

A.Administrators

根据题意,观察样例,发现 5 个管理员个人主页中只有 Fee_cle6418 和 weilinxuan 为空的一项为 "格言" 一项,于是输出管理员的格言即可。

B.Birthday

猜测题意为判断一个生日是否为质数。

C.Cleaver

仔细阅读游戏规则,发现游戏中有负分的只有得分一项,进行分析发现即为求得分,公式为 $2\times 斩杀+安全-2\times 被斩杀$,注意 $0\ 0$ 时要算作被斩杀。

D.Distinct Substrings

就是求长度为 $n$ 的字符串期望子串个数,就是 $\dfrac{n\times(n+1)}{2}$。

E.Example

根据题目名猜测为输出第 $n$ 道题的样例输出。

F.Tourist

判断 Tourist 是否达到过这个 Rating,可以用 F12 复制网页信息。

G.gyh 的脑袋里有整个 OEIS

根据提示,输出 OEIS 第 $i$ 个数列的可显示第 $i$ 项,发现 $i$ 很大时一定是 Impossible,可以手动打表。

这里第 i 项的定义根据网页上“table”那一栏里面给出的信息确定,因此 A000001 的第一项是 1。

还要注意 Impossible 的信息应该根据 table 里面给出的最大项数判断。

还要注意给出第 “-5”项之类的的时候应该自动改成第 5 项,当做正确的输出。因此 A000007 应该输出 0。

H.Hashing vs Encryption

这是一副字符画,猜猜是谁的靓照/xyx

原图:https://www.luogu.com.cn/paste/7v15wokp

输出 $\text{I AK IOI}$ 即可。

I.i058qw0d 是最妙的字符串!!!

发现 i058qw0d 是一个洛谷剪切板的网址,再 F12 题面发现 LCS 三个字符,题意即为求给定字符串与 fishingprince 的 LCS。

InfOJ 用户 qq 群

2021-03-28 16:09:25 By Fee_cle6418

群号:324364809

共 28 篇博客