Henau蓝桥杯校预选赛部分题解(12.3)

昨日的校预选赛,打到自闭。。。不多说了,回忆起来都是泪。

水平有限,先放部分题题解(参考大佬的),等其他几道研究

明白了陆续更新。

 

B.梦纤石的牵绊

http://172.23.79.51/problem.php?id=1188

简单的模拟题,问n的二进制有多少位。每次除以2,计数器++即可。

#include<iostream>
using namespace std;
int main()
{
	int n,ans=1;
	cin>>n;
	while(true)
	{
		ans++;
		n=n/2;
		if(n<2)
		break;//也可用n>>1;
	}
	cout<<ans<<endl;
	return 0;
}

 

E.诛璃石的断杀

http://172.23.79.51/problem.php?id=1184

  开一个数组记录每个数字出现的次数,遍历一遍 找到最大的输出。

注意时间复杂度较大,容易超时。O(n^2)的复杂度过不去。时间复杂度:O(n)

#include<iostream>
#include<cmath>
using namespace std;
const int N=1e5+10;
int n,a[N],x;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		a[x]++;
	}
	int mx=0;
	for(int i=1;i<=n;i++)
	mx=max(mx,a[i]);
	for(int i=1;i<=n;i++)
	{
		if(a[i]==mx)
		cout<<i<<endl;
	}
	return 0;
}

    

F—凤瞳⽯的轻鸣 

http://172.23.79.51/problem.php?id=1187

题⽬中要求的是使⽤所有数的乘积最⼤,那么可以贪⼼想到,如果能使⼀ 个数的绝对值变⼤,那么就使⽤魔法把这个数的绝对值变⼤。也就是说, 把所有正数都变成负数,那么现在所有数的乘积的绝对值⼀定是最⼤的, 但是现在会存在正负的问题,也就是n是奇数还是偶数,偶数的话乘积就 ⼀定是正的,不需要考虑,如果n是奇数呢,那么我们就现在需要改变⼀ 个数,使它为正数,我们就把绝对值最⼤的那个数变成正的就好,因为它 能提供的贡献是最⼤的,改变别的任意⼀个数,乘积的变化量都会⽐改变 绝对值最⼤的那个数乘积的变化量都⼤。

#include<iostream>

#include<algorithm>
#include<cmath>
using namespace std;
const int N=1e5+10;
int n,a[N];
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
		if(a[i]>0)
		a[i]=-1*a[i]-1;//先把正数全变成复数,再考虑奇偶
	}
	if(n%2!=0)
	{
	 int mx=0,id=0;
	 for(int i=0;i<n;i++)
	 {
		if(a[i]<mx)
		{
			mx=a[i];
			id=i;
		}//变绝对值最大的
 	 }
	 a[id]=-1*a[id]-1;
    }
	for(int i=0;i<n;i++)
	cout<<a[i]<<" ";
	return 0;	
	
}

 

 

H—君清⽯的思念 

http://172.23.79.51/problem.php?id=1185

最简单的签到题,注意超时。

#include<iostream>
using namespace std;
int main()
{
	int n,m;
	double x;
	scanf("%d",&n);//输入cin较慢
	for(int i=0;i<n;i++)
	{
		scanf("%d",&m);
		x=1.0*m/2;
		printf("%.1f\n",x);
	}
	return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标题:国王的烦恼 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。 如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通过其他的桥或者其他的小岛互相到达,他们就会安然无事。但是,如果前一天两个小岛之间还有方法可以到达,后一天却不能到达了,居民们就会一起抗议。 现在C国的国王已经知道了每座桥能使用的天数,超过这个天数就不能使用了。现在他想知道居民们会有多少天进行抗议。 【输入格式】 输入的第一行包含两个整数n, m,分别表示小岛的个数和桥的数量。 接下来m行,每行三个整数a, b, t,分别表示该座桥连接a号和b号两个小岛,能使用t天。小岛的编号从1开始递增。 【输出格式】 输出一个整数,表示居民们会抗议的天数。 【样例输入】 4 4 1 2 2 1 3 2 2 3 1 3 4 3 【样例输出】 2 【样例说明】 第一天后2和3之间的桥不能使用,不影响。 第二天后1和2之间,以及1和3之间的桥不能使用,居民们会抗议。 第三天后3和4之间的桥不能使用,居民们会抗议。 【数据规模与约定】 对于30%的数据,1<=n<=20,1<=m<=100; 对于50%的数据,1<=n<=500,1<=m<=10000; 对于100%的数据,1<=n<=10000,1<=m<=100000,1<=a, b<=n, 1<=t<=100000。 【资源约定】 峰值内存消耗 < 64M CPU消耗 < 3000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。 注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。 提交时,注意选择所期望的编译器类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值