PTA 天梯赛 L1-101 别再来这么多猫娘了!

文章讲述了在GPT技术广泛应用背景下,如何开发一个内容审查系统,以防止AI生成的不合适内容,如‘猫娘’现象。系统需检测违禁词并设定阈值,低于阈值则替换,否则发出警告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

L1-101 别再来这么多猫娘了!

以 GPT 技术为核心的人工智能系统出现后迅速引领了行业的变革,不仅用于大量的语言工作(如邮件编写或文章生成等工作),还被应用在一些较特殊的领域——例如去年就有同学尝试使用 ChatGPT 作弊并被当场逮捕(全校被取消成绩)。相信聪明的你一定不会犯一样的错误!

言归正传,对于 GPT 类的 AI,一个使用方式受到不少年轻用户的欢迎——将 AI 变成猫娘:

在这里插入图片描述
部分公司使用 AI 进行网络营销,网友同样乐于使用“变猫娘”的方式进行反击。注意:图中内容与题目无关,如无法看到图片不影响解题。

当然,由于训练数据里并不区分道德或伦理倾向,因此如果不加审查,AI 会生成大量的、不一定符合社会公序良俗的内容。尽管关于这个问题仍有争论,但至少在比赛中,我们还是期望 AI 能用于对人类更有帮助的方向上,少来一点猫娘。

因此你的工作是实现一个审查内容的代码,用于对 AI 生成的内容的初步审定。更具体地说,你会得到一段由大小写字母、数字、空格及 ASCII 码范围内的标点符号的文字,以及若干个违禁词以及警告阈值,你需要首先检查内容里有多少违禁词,如果少于阈值个,则简单地将违禁词替换为<censored>;如果大于等于阈值个,则直接输出一段警告并输出有几个违禁词。

输入格式:
输入第一行是一个正整数 N N N ( 1 ≤ N ≤ 100 1≤N≤100 1N100),表示违禁词的数量。接下来的 N N N 行,每行一个长度不超过 10 的、只包含大小写字母、数字及 ASCII 码范围内的标点符号的单词,表示应当屏蔽的违禁词。
然后的一行是一个非负整数 k k k ( 0 ≤ k ≤ 100 0≤k≤100 0k100),表示违禁词的阈值。
最后是一行不超过 5000 个字符的字符串,表示需要检查的文字。
从左到右处理文本,违禁词则按照输入顺序依次处理;对于有重叠的情况,无论计数还是替换,查找完成后从违禁词末尾继续处理。

输出格式:
如果违禁词数量小于阈值,则输出替换后的文本;否则先输出一行一个数字,表示违禁词的数量,然后输出He Xie Ni Quan Jia!

输入样例1:
5
MaoNiang
SeQing
BaoLi
WeiGui
BuHeShi
4
BianCheng MaoNiang ba! WeiGui De Hua Ye Keyi Shuo! BuYao BaoLi NeiRong.
输出样例1:
BianCheng <censored> ba! <censored> De Hua Ye Keyi Shuo! BuYao <censored> NeiRong.
输入样例2:
5
MaoNiang
SeQing
BaoLi
WeiGui
BuHeShi
3
BianCheng MaoNiang ba! WeiGui De Hua Ye Keyi Shuo! BuYao BaoLi NeiRong.
输出样例2:
3
He Xie Ni Quan Jia!
输入样例3:
2
AA
BB
3
AAABBB
输出样例3:
<censored>A<censored>B
输入样例4:
2
AB
BB
3
AAABBB
输出样例4:
AA<censored><censored>
输入样例5:
2
BB
AB
3
AAABBB
输出样例5:
AAA<censored>B
#include<bits/stdc++.h>
using namespace std;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;cin>>n;
	
	vector<string> b(n);
	for(int i=0;i<n;i++) cin>>b[i];
	
	int k;cin>>k;
	cin.get();
	
	string s;
	getline(cin,s);
	
	int res=0;
	for(int i=0;i<n;i++)
	{
		while(s.find(b[i])!=-1) 
		{
			int pos=s.find(b[i]);
			res++;
			s=s.substr(0,pos)+"###"+s.substr(pos+b[i].size());
		}
	}
	
	if(res>=k) 
	{
		cout<<res<<"\n";
		cout<<"He Xie Ni Quan Jia!\n";
	}
	else 
	{
		while(s.find("###")!=-1)
		{
			int pos=s.find("###");
			s=s.substr(0,pos)+"<censored>"+s.substr(pos+3);
		}
		cout<<s<<"\n";
	}
	
    return 0;
}
### 关于减少内容的相关设置 在涉及内容管理与调整的情况下,可以通过配置特定参数或规则来实现对某些主题(如相关内容)的比例控制。例如,在游戏开发环境中,可以定义权重机制以降低某类角色的出现频率[^1]。假设当前存在一个基于概率分布的内容生成器,则可通过修改该分布函数中的系数完成目标: ```python content_weights = { "catgirl": 0.2, # 减少相关内容比例至原值的一半 "other_themes": 0.8 # 增加其他主题的比例补偿整体平衡 } ``` 此方法不仅适用于静态资源分配,还能够动态响应玩家偏好变化。 对于测试点分数调整方面,如果希望针对非元素给予更高评价标准,则需重新设计评分体系逻辑。一种常见做法是引入维度评估指标,并赋予不同类别独立分值范围[^3]。以下是伪代码示例展示这一过程: ```python def calculate_score(test_results): base_scores = {"catgirl_related": 50, "non_catgirl_related": 100} # 调整基础得分 total_score = sum([ result["type"] == "catgirl" and base_scores["catgirl_related"] or \ base_scores["non_catgirl_related"] for result in test_results ]) return total_score / len(test_results) test_data = [{"type": "catgirl"}, {"type": "landscape"}] print(calculate_score(test_data)) # 输出最终计算后的平均成绩 ``` 上述脚本片段展示了如何根据不同类型的测试项目设定差异化的基准线,从而间接达成抑制某一领域过度表现的目的。 ### 非主题扩展实例 另外值得注意的是,当试图引导注意力转向其它有趣方向时,创造性的视觉描述同样有效。比如描绘一场发生在深海之下的浪漫晚宴——两只有教养的头鹰正享受着精致佳肴,周围环境神秘而优雅[^2]。这样的画面足以激发人们探索新奇故事的兴趣,而不局限于单一题材之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wa_Automata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值