原题CF903A。暴力枚举小鸡块大鸡块的盒数,然后打表得到六种不能的方案。
打表程序伪代码:
bool a[101]
for(int i=0; i<=100/3; i++) {
for(int j=0; j<=100/7; j++) {
a[i*3+j*7]=true
}
}
for(int i=1; i<=100; i++) {
if(!a[i]) {
cout << i << endl;
}
}
原题CF903A。暴力枚举小鸡块大鸡块的盒数,然后打表得到六种不能的方案。
打表程序伪代码:
bool a[101]
for(int i=0; i<=100/3; i++) {
for(int j=0; j<=100/7; j++) {
a[i*3+j*7]=true
}
}
for(int i=1; i<=100; i++) {
if(!a[i]) {
cout << i << endl;
}
}

原题CF2117C。这题维护两个set就行。首先考虑到一点,如果当前段已经符合抽象分割了,那么就应该分割,使得后面有尽可能多的元素用来分割。然后我们注意到,抽象分割具有传递性,也就是如果是的抽象分割,那么也是的抽象分割。这一点非常好说明,利用性质就行。接下来我们能得到一个进一步的结论,也就是如果是一个抽象分割,那么它一定出现了前面的所有元素,好像击鼓传花一样。
本次比赛题目 T1,T2,T3 的题目背景均使用了陀思妥耶夫斯基的著作中的句子,与该题目有关联也蕴含一定哲理。(详见附注)
本次比赛题目,分别为 20230225 比赛 T3,2023 年暑期四中出题活动第 1 题,20230311 比赛 T3(出自腐朽阁内部赛 R2T3),20230114 比赛 T3。
题目难度顺序并不单调递增,难度排列大约为 2>3>4>1。(那些不读完整套题就放弃的同学请长长记性)
这些代码都是校本教材上面的习题,有的代码我可能偷懒就直接用轮子了,不保证和老师要求的一模一样。
本文将持续更新
依次打出结果即可
a = int(input())
print(a + 8, int((a + 8) / 5), int((a + 8) / 5 - 10), int(((a + 8) / 5 - 10) * 10))
唔,这是我 2023 年第四次担任出题人,我之前还在说我暑假之前差不多就出三套题目(当时心里想的是难题的话我出三套也就差不多了),事实上出题次数大于我的预期。
本场比赛难度难于普及,简单于提高,按照 FJ 要求有一个送分题,其余题目考察范围均在四中当前已经学习的算法范围之内。
难度:入门
这个题纯属送分题,首先我们分析一下这个函数的性质,这个函数是当我们输入偶数时返回奇数,输入奇数时返回偶数的一个函数,显然做偶数次翻转和原序列相同,做奇数次翻转得到的结果是原序列翻转一次的序列,然后对应做一次就得。
本次比赛其实都是老题目,FJ 看着好(简单)的题目选了三道,连个思维题都没有。
第一题第二题是Quidrem出的,分别是腐朽阁内部赛 R1 的 T1 和 T3.第三题是我出的,是腐朽阁内部赛 R2 的 T3。欢迎大家加入重生阁
本次比赛其实出的很心急,主要原因是出题人在应该出题的时间做木工(摆烂)去了。但是幸运的是最后还是出完了题目。
本次比赛有一个比较坑的点,我把难度顺序倒过来排了,因为 2022 年 NOIP 的 T3 比 T2 简单,曾经坑死了我(我的省一啊啊啊啊啊),所以我打算把这次比赛难度也倒过来排。
我们先找到 a,b 的 lca,设为 x,找到 c,d 的 lca,设为 y。如果 x,y 的 lca 不是 x 或者 y 中任何一个,那么说明 a,b 和 c,d 的路径在不同的子树上,显然不会相交。接下来开始分类讨论,先判断 x,y 的 lca 是谁。这里我们先假设它是 x,那么就说明 y 在 x 的子树底下,接下来我们就只要判断 y 的子树当中是否包含 a,b 中的一个,如果包含,那么 y 显然会在 a,b 的路径上,否则就说明 y 和 a,b 在不同的子树上,路径不会相交。对于 x,y 的 lca 是 y 的情况,也类似讨论即可。
这个比赛的题解本来应该是林某写的,但是因为林某想要摆烂,所以这个任务就被委托(推卸)到我身上了。
由于笔者是高一学生,高一年级上半学期没开技术课,我之前碰 Python 还是小学三四年级的时候,想来有五六年没写了,现在 Python 是不敢写也不会写。所以以下的代码都不是 Python,而是 Haskell(我在学习的语言)。
本文事起仓促,有的题目来不及写 std,所以只有文字题解请见谅。
如果想要赢,显然你摇出的数字要大于等于朋友摇出数字中较大的那个。所以比出较大那个输出这个值到 6 的所有数(以空格分开)即可。
签到题,模拟即可。
std:
#include <bits/stdc++.h>
using namespace std;
vector<int> a;
int main()
{
int n;
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++) {
int tmp;
cin >> tmp;
ans += tmp;
a.emplace_back(tmp);
}
sort(a.begin(), a.end());
for (int i = 0; i < n / 2; i++) {
ans += a[n - i - 1] - a[i];
}
cout << ans << endl;
return 0;
}