2008Noip-S提高组 题解 #一起加油 #考试不暴零,骗分能AC #C++

C++笨小猴 桶排思想,简单! #include <iostream> #include <cmath> #include <cstring>//头文件 using namespace std; bool pd(int x){//判断质数 if(x<=1) return 0; if(x==2) return 1; for(int i=2;i<=sqrt(x);i++){ if(x%i==0) return 0; } return 1; } i 阅读详情

题解

题目自己上洛谷找找吧
传送门
1.笨小猴
一眼水题,AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<queue>
#include<algorithm>
#include<stack>
#include<map>
#include<cmath>
#include<list>
#include<ctime>

int maxn[26],maxx=-9999999,minx=9999999,mao[26];
int cnt;
char s[110];

bool check(int x)
{
	if(x==0||x==1) return false;
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		return false;
	}
	return true;
} 

using namespace std; 
int main()
{
	//freopen("word.in","r",stdin);
	//freopen("word.out","w",stdout);
    
	gets(s);
	int len=strlen(s);
	 for(int i=0;i<len;i++)
	 {
			maxn[s[i]-'a']++;
	 }
	 for(int i=0;i<26;i++)
	{
		
		if(maxn[i]!=0)
		{mao[cnt]=maxn[i];cnt++;}
	}
	sort(mao,mao+cnt);
	minx=mao[0];maxx=mao[cnt-1];
	if(check(maxx-minx)==true)
	{
		 printf("Lucky Word\n");
		 printf("%d",maxx-minx);
		 return 0;
	}
	else 
	{
		
		printf("No Answer\n");
		printf("0");
		return 0;
	}
	return 0;
}

做法:有点像桶排,简单模拟,原创代码(好像就我一个这样做)。

2.火柴棒等式
也是简单的模拟,AC代码:

//Let's AK IOI!!!
//by lmrttx
#include<bits/stdc++.h>
using namespace std;
int num[10]={6,2,5,5,4,5,6,3,7,6};
int n,sum;
int get_match(int x)
{
	int k=0;
	for(int i=x;i!=0;i/=10)
	k+=num[i%10];
	if(x==0)k+=num[0];
	return k;
}
int main()
{
	scanf("%d",&n);
	for(int i=0;i<=1000;i++)
	for(int j=0;j<=1000;j++)
	if(get_match(i)+get_match(j)+get_match(i+j)+4==n)
	sum++;
	printf("%d",sum);
	return 0;
 } 

做法:先用数组表示出每个数字所需的火柴棒个数,然后暴力枚举每两个数相加,很好看懂,其中4表示加号和等号所需的4根火柴棒
3.传纸条
一个还可以的DP
四维也能过
附上三维AC代码:
说明:第一维是 步数,两人步数相同(看作两人同时出发,向对方传纸条)
剩下两维就是其中一人的横坐标和另一人的纵坐标
注意:第一维要开两倍大小,要判断路径是否重合

#include<bits/stdc++.h>
using namespace std;
int f[104][52][52],a[52][52],m,n;
int max_mao(int a1,int a2,int a3,int a4)
{
	if(a1<a2)a1=a2;
	if(a1<a3)a1=a3;
	if(a1<a4)a1=a4;
	return a1;
}
int main()
{
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)
	 for(int j=1;j<=n;j++)
	  scanf("%d",&a[i][j]);
	  
	  for(int i=1;i<=m+n-1;i++)
	   for(int j=1;j<=m;j++)
	   for(int k=1;k<=m;k++)
	   {
	   		if(i-j<0 || i-k<0)
	   		continue;
	   		f[i][j][k]=max_mao(f[i-1][j][k],f[i-1][j-1][k-1],
			   f[i-1][j-1][k],f[i-1][j][k-1])+a[j][i-j+1]+a[k][i-k+1];
			   if(j==k)//判断路径是否重合,重合减一
			   f[i][j][k]-=a[k][i-k+1];
	   } 
	   printf("%d",f[m+n-1][m][m]);
	   return 0;
 } 

好好想想,挺好理解的

4.双栈排序
这题考二分图+染色
前置知识:二分图+染色
自己去问问度娘
AC代码:

#include<bits/stdc++.h>
using namespace std;
const int INF=99999999;
const int MAXN=1005;
int n,num,color[MAXN],t[MAXN],s[MAXN];
bool flag,e[MAXN][MAXN];

void paint(int x,int c)
{
	color[x]=c;
	for(int i=1;i<=n;i++)
	if(e[x][i])
	{
		if(color[i]==c)flag=false;
		if(!color[i])paint(i,3-c);
	}
}

void make()
{
	s[n+1]=INF;
	for(int i=n;i>=1;i--)
	{
		s[i]=t[i];
		if(s[i+1]<s[i])
		s[i]=s[i+1];
	}
	for(int i=1;i<n;i++)
	for(int j=i+1;j<n;j++)
	if(t[i]<t[j]&&s[j+1]<t[i])
	e[i][j]=e[j][i]=true;
	for(int i=1;i<=n;i++)
	if(!color[i])
	paint(i,1);
}

void work()
{
	if(flag==false)
	{
		printf("0");
		return;
	}
	stack<int> s1,s2;
	int now=1;
	for(int i=1;i<=n;i++)
	{
		if(color[i]==1)
		{
			s1.push(t[i]);
			printf("a ");
		}
		else
		{
			s2.push(t[i]);
			printf("c ");
		}
		while( (!s1.empty()&&s1.top()==now)
		|| (!s2.empty()&&s2.top()==now) )
		{
			if(!s1.empty()&&s1.top()==now)
			{
				s1.pop();
				now++;
				printf("b ");
			}
			else 
			{
				s2.pop();
				now++;
				printf("d ");
			}
		}
	}
}

int main()
{
	flag=true;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	scanf("%d",&t[i]);
	make();work();
	return 0;
} 

为什么用二分图呢???
对数字串进行逐次遍历,如果符合 规则 ,就连线,遍历结束后,自然就有了二分图,然后染色,得到 染色表,借助染色表,完成排序
说真的,不好理解
好好想想吧

结语

快要CSP了
我会写些像这种题解的博客
一起加油迎考!!!

谢谢阅读

题解:洛谷 AT_abc427_a [ABC427A] ABC -> AC 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。给定一个由大写英文字母组成的字符串。的中间字符后得到的字符串。本文分享的必刷题目是从。 阅读详情

相关推荐

c++笨小猴问题

c语言枚举算法的标程,你啊,一定要下啊 拜托了哈哈哈

1407:笨小猴(C C++)

【题目描述】 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn−minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 【输入】 只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。 【输出】 共两行,第一行是一个字符串,假设输入的的单

ネロ・クラウディウス 8418

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 333

C++ [NOIP2008 提高组] 笨小猴

但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出。是单词中出现次数最少的字母的出现次数,如果。是单词中出现次数最多的字母的出现次数,次,出现次数最少的字母出现了。次,出现次数最少的字母出现了。noip2008 提高第一题。【输入输出样例 1 解释】【输入输出样例 2 解释】(本处原题面错误已经修正)

Zr1ose的博客 1919

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 549

搭建适用于lammps中opls-aa力场的文件流程

现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。

baguette的博客 2885

C语言练习之笨小猴

c语言

Lee.的博客 1547

5分钟搞定!用OpenCV实现全景图像柱面展开的保姆级教程(附完整代码)

本文提供了一份使用OpenCV实现全景图像柱面展开的详细教程。通过清晰的数学原理讲解和分步代码演示,指导读者快速掌握从等距柱状投影全景图到平面展开图的核心转换方法,并涵盖性能优化、参数调整及透视视图扩展等实用技巧,适合图像处理爱好者和开发者实践。

sony5的博客 571

笨小猴 c++[信息奥赛一本通]

笨小猴 c++[信息奥赛一本通]

laozhoudawang的博客 861

数据行小于列索引,内部模式表示可能存在问题

通过检查数据源的完整性和一致性,检查Debezium配置,检查列映射以及启用调试模式和日志记录,您应该能够解决这个错误。请注意,具体的解决方法可能因您的具体情况而异,因此您可能需要根据问题的根本原因进行适当的调整和修复。如果问题仍然存在,您可能需要进一步检查您的数据和配置,并根据具体情况进行调整和修复。在Debezium中,您可以使用列重命名和列映射来定义源和目标之间的列映射关系。通过检查日志,您可以查看详细的错误信息和堆栈跟踪,从而更好地理解问题的根本原因。首先,我们应该检查数据源的完整性和一致性。

XbtoMemory的博客 729

【Visual Assist X助手安装问题】Visual Assist X无法安装(双击安装包没反应) | Visual Assist X安装后在Visual Studio中找不到(亲测有效)

本文分享了Visual Assisant X助手的安装与使用问题的详细解决办法,因为网上搜集的信息比较少,所以有一定的参考价值。考虑到很多开发新手会遇到上述问题,可能对Windows系统不熟悉,所以相关操作步骤讲解的很详细!

dvlinker的技术专栏 6万+

笨小猴

#include #include #include using namespace std; bool sushu(int n) {if(n2) return false; else {for(int i=2;isqrt(n);i++) if(n%i==0) return false;} return true; } int main() {int a[26]; in

kt1776133839的博客 2784

apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】

这个是最最简单的反编译操作了。写这个教程的目的是其中很多粉丝要求出一点入门的教程。当然演示的是使用MT来操作。还有很多类似的软件可以达到目的。例如NP apltool等等或者电脑端也有很多反编译软件修改。对于玩机用户来说。也可以在系统包里直接修改一些app。

小马哥的专栏 7259

信息学奥赛一本通 1407:笨小猴 | 1851:【08NOIP提高组】笨小猴 | OpenJudge NOI 1.9 06 | 洛谷 P1125 [NOIP2008 提高组] 笨小猴

【题目链接】 ybt 1407:笨小猴 ybt 1851:【08NOIP提高组】笨小猴 OpenJudge NOI 1.9 06:笨小猴 洛谷 P1125 [NOIP2008 提高组] 笨小猴 【题目考点】 1. 散列存储 2. 质数 3. 求最值 【解题思路】 设数组chNum记录单词中每个字母出现的次数。 设函数判断一个数是不是质数。 输入单词,遍历单词字符串,统计出每个字母出现的次数。 求出出现最多和最少次的字母的出现次数,如果差值为质数,那么为Lucky Word,否则输出0。 【题解代码】 解法1

君义NOIP的博客 3927

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

openjudge 1.9.6 笨小猴

顺序查找

weixin_60869516的博客 598

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

P1125 [NOIP2008 提高组] 笨小猴【C++】

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn−minn是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。

qq_63524016的博客 510

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

洛谷-字符串-笨小猴

刷题总结:此处需要记住怎么定义结构体以及如何接收带空格的字符串,关键的是在比较出现次数使可以使用自定义比较函数。本方法还有许多可以改进的地方,大家可以再多想想。

weixin_63085165的博客 437

笨小猴c++代码

if(n==2){i<sqrt(n);i++){cin>>s;i++){i<24;i++){maxn=a[i];=0){minn=a[i];cout<<p;}else{cout<<0;return 0;

m0_66980218的博客 758

笨小猴(NOIP2008提高组)

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 思路来了: 1.输入,将每个字母的出现次数读入数组a中 2.统计maxn和minn,注意一个细节:a[i]要>0才要统计 ...

lzy2008szx的博客 420

1407:笨小猴

i<=sqrt(a);i++){return 1;string s;cin>>s;i<s.size();i++){i<=122;i++){if(zs(c)){cout<<c;cout<<0;

2301_79114169的博客 260

每日一题洛谷P1125 [NOIP 2008 提高组] 笨小猴c++

【代码】每日一题洛谷P1125 [NOIP 2008 提高组] 笨小猴c++

2401_88089822的博客 450

C/C++百题打卡[2/100]——考四六级的笨小猴

关键字:C/C++算法学习、百题打卡[2/100]、蓝桥杯——笨小猴【简单】⭐️⭐️、字符串

Wang_Dou_Dou_的博客 1501

十字相乘法 介绍

十字相乘法是一个公式 (a+p)(a+q)=a2+(p+q)a+pq(a+p)(a+q)=a^2+(p+q)a+pq(a+p)(a+q)=a2+(p+q)a+pq 为什么叫做十字相乘呢,是有原因的。 图解十字相乘法主要用于因式分解,是逆运算。而上面的是公式。 逆运算 a2+(p+q)a+pq=(a+p)(a+q)a^2+(p+q)a+pq=(a+p)(a+q)a2+(p+q)a+pq=(a+p)(a+q) 附上我手绘的图片 其实,图用的很少,主要就是公式。 栗子: a2−a−30的因式分解为:(a−6)(

SB_zero_mark的博客 6017
上一篇: 费马小定理及证明
下一篇: 斜率 讲解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值