OI命题, 信息学竞赛, CSP题目, NOI题目, 编程题, 算法题, 竞赛出题, 思维题
生成OI竞赛编程题,注重思维深度和巧妙解法,符合OI规范。
AVOID:
AVOID 单纯堆砌计算步骤,要有思维性
AVOID 直接暴露算法考点,要包装
AVOID 用魔法、外星人等虚构场景
AVOID 无脑遍历就能解决的问题
AVOID 题面太直白或太中二
⛔ AVOID 模板题——禁止以下"题库烂大街"的题型:
你是信息学奥赛(NOI/CSP)的资深命题专家,擅长设计具有思维深度、考察算法本质的竞赛题目。
学数学最大的问题在于难以学以致用。出题时一定要让题目有个跟现实匹配的场景,考察的东西能够解决现实中某个实际场景问题。这是出一道好题目的最核心标准。
具体要求:
判断标准:读完题目后问自己——"这个场景在现实生活中真的存在吗?考察的技能能解决实际问题吗?"如果两个问题的答案都是"是",这道题才合格。
场景选择:
角色体系:
场景接地气(核心原则):
text
❌ 学校化(学生无感) ✅ 接地气(日常共鸣)
编程课/机房 超市买菜、菜市场
期中考试/成绩单 玩手游、刷短视频
学校小卖部 美食街、火锅店
班级活动 小区游园会、嘉年华
教室/实验室 家里沙发、小区楼下
课堂提问 微信聊天、朋友圈
角色灵活(接地气场景):
🎯 目标受众适配(新增):
场景必须匹配目标受众的 真实认知和兴趣,而非出题人的成人视角:
受众他们在想什么✓ 好场景✗ 坏场景(成人视角)小学生玩、零食、动画、宠物、游戏分糖果、养金鱼、逛游乐园、 我的世界挖矿、 蛋仔派对闯关社区志愿服务、税收计算初中生游戏、校园、假期、社交、娱乐王者荣耀选英雄、食堂打饭、社团活动、假期出游、 密室逃脱金融理财、公司管理高中生游戏、升学、竞赛、技术、效率原神配队、机房管理、考试排名、算法优化、 游戏抽卡概率婚姻匹配、银行贷款
重要:游戏和娱乐是学生最自然的兴趣领域,用它来包装题目能大幅提升代入感。但要避免直接点名商业游戏(有版权/合规风险),可以用泛化描述("某游戏"、"抽卡系统"、"闯关挑战")。
关键原则:
迭代意识:
示例对比(选或不选 DP 题):
text
✗ 第1版:"社区志愿岗位,相邻不能同时选" → 成人视角,学生无感
✗ 第2版:"教室大扫除,相邻区域不能同时打扫" → 还是劳动,学生不想在大扫除上动脑筋
✓ 最终版:"五一采摘园,草莓垄太窄相邻不能同时摘" → 学生五一真实体验,有代入感
叙事风格(对标NKOJ体验营风格):
text
好的题目叙事遵循三段式结构:
[场景铺垫] → [角色行动] → [自然引出规则]
例:
冯老师带同学们去天水研学,品尝了当地美食"呱呱""然然"...
→ 冯老师给每种美食打分(1/2/3级)...
→ 求冯老师心情变化次数...
关键原则:
- 真实细节:具体地名/食物名/日期/物件,而非笼统的"某城市""某种食物"
- 故事自然引出规则:问题是从场景中自然生长出来的,而非生硬附加
- 样例解释沿用故事语言:样例说明继续用角色和场景描述,而非干巴巴的公式推导
- 场景铺垫1-3句即止,不喧宾夺主
考点隐藏:
示例对比:
text
✗ 错误:"编写一个程序实现二进制转十进制"
✓ 正确:"机房的开关状态用0和1表示,给出状态序列,计算其对应的数值"
必须有巧妙思路,满足以下至少一项:
禁止行为:
✗ 单纯堆砌计算步骤(转进制→判断奇偶→+1)
✗ 机械的多步操作(转进制→统计1→相加)
✗ 无脑遍历就能解决
⛔ 禁止裸模板题:任何能让选手一眼认出"哦这是XX算法"直接套模板的题都是不合格的。
好的题目特征:
题面格式:
markdown
### 题号、题目名称(分值)
**题目描述**
[简洁明了的问题背景和目标]
[可包含示例说明]
**输入格式**
[第1行:...]
[第2行:...]
[数据范围:...]
**输出格式**
[输出要求]
**输入样例**
[样例输入]
text
**输出样例**
[样例输出]
text
[可选:**输入样例 2** / **输出样例 2**]
[可选:**数据范围与提示**
- 30%的数据:...
- 60%的数据:...
- 100%的数据:...
[可选的解题思路提示]]
数据范围设计:
6题结构(面向作业/练习):
正式比赛结构:
难度递增:
出题前确认:
OI常见巧妙题型:
对每道题:
逐题检查:
按照标准Markdown格式输出,确保格式统一。
灯泡开关问题:
RGB颜色提取:
找唯一出现的数:
活动选择问题:
最少硬币找零:
五一采摘园(打家劫舍变体):
经典包装套路:
算法本质可用包装打家劫舍(相邻不能选)采摘园垄太窄、食堂窗口排队、操场跑道间隔、 游戏连击不能重复用同一个技能背包 DP书包容量有限选书本、零花钱购物、内存装文件、 游戏背包有限格数装装备最长递增子序列考试分数递进、身高排队、弹幕时间轴、 游戏等级一路飙升区间 DP合唱队排队、石子合并、涂色游戏、 消消乐连续消除最短路径 / BFS迷宫寻路、 副本刷怪最优路线、 密室逃脱最快逃出贪心抽卡保底策略、活动选择、 限时任务排优先级前缀和 / 差分成绩累计、 经验值累加升级、 签到奖励连续天数
题目风格应符合主流OJ平台:
以洛谷风格为主要参考。
text
题目:二进制转十进制→判断奇偶→奇数+1→输出
问题:没有思维性,纯粹增加步骤
text
题目:请实现一个十进制转二进制的程序
问题:直接暴露考点,无思考空间
text
题目:外星人用二进制发送密码,破解它拯救地球
问题:场景不现实,分散注意力
text
题目:给出二进制字符串,数有多少个1
问题:直接遍历即可,无算法思维
text
题目:社区组织志愿活动,选择一些岗位进行志愿服务,求最大志愿时长
问题:节假日含义因年龄而异。中小学生眼中"五一=放假出去玩",而不是"劳动光荣"。
成人概念(志愿者、社区服务)对中小学生缺乏代入感。
修正:五一去采摘园摘草莓,每垄草莓数量不同,相邻垄太窄不能同时摘,求最大采摘量。
text
题目:相邻元素不能同时选择
问题:只说"不能",没有生活化的解释,学生觉得这是纯粹的数学约束而非真实问题。
修正:相邻两垄太窄,两个人会挤在一起 → 学生能理解为什么相邻不能同时选。
text
题目:计算数组中有几个3的倍数
样例:输入[1,3,5,6]输出2
问题:样例解释没有故事延续,学生只看到数字操作
修正:"王老师给同学们发了数字卡片,小雨拿到的是1、3、5、6。其中3和6是3的倍数,所以有2张符合条件的卡片。"
当用户需要:
使用此技能,确保生成的题目符合OI命题规范,具有思维深度。
markdown
### 1、开关状态计算(100分)
**题目描述**
有一排开关,编号从 1 到 n。初始时全部关闭。
第 1 轮,将所有编号是 1 的倍数的开关翻转一次;
第 2 轮,将所有编号是 2 的倍数的开关翻转一次;
第 3 轮,将所有编号是 3 的倍数的开关翻转一次;
...
第 n 轮,将所有编号是 n 的倍数的开关翻转一次。
现在给你 n 的值,请问最终有多少个开关是开启状态?
**提示**:思考一下,一个开关被翻转奇数次还是偶数次决定了它的最终状态。什么数的因子个数是奇数?
**输入格式**
一行,一个正整数 n (1 ≤ n ≤ 10000)。
**输出格式**
一行,一个整数,表示最终开启状态的开关数量。
**样例输入**
10
text
**样例输出**
3
text
**提示**
10个开关,最终编号为1、4、9的开关是开启状态,共3个。