565 div3

本文深入解析了四道算法竞赛题目,涵盖了暴力求解、数论操作、序列处理及欧拉筛法等核心概念。通过详细代码示例,展示了如何高效解决复杂问题,适合算法爱好者和竞赛选手学习。

A:

暴力,首先考录n/2,然后考虑2n/3,最后考虑4n/5.当n==1时跳出循环。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
	ll q,a[10000+10],b[5]={2,3,5};
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>a[i];
		ll tot=0,flag=0;
		for(int j=0;j<3;j++)
		{	
			if(a[i]==1)break;
			if(a[i]%b[j]==0&&j==0)a[i]/=2,j=-1,++tot;
			else if(a[i]%b[j]==0&&j==1)a[i]=(a[i]/b[j])*2,j=-1,++tot;
			else if(a[i]%b[j]==0&&j==2)a[i]=(a[i]/b[j])*4,j=-1,++tot;
		}
		if(a[i]==1)cout<<tot<<'\n';
		else cout<<-1<<'\n';
	}
	return 0;
 } 

B:

定义三个变量,t,  t1,  t2,如果这个数列中的a[ i ] % 3==0,t++,如果这个数列里的a[ i ]%3==1, t1++,如果模3等于2,t2++;

令max等于t1,t2中的最大值,min等于最小值,然后答案就是t+min+(max-min)/3;

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
	ll t;;
	cin>>t;
	while(t--)
	{
		int n,ans=0,a[100+10];
		memset(a,0,sizeof(a));
		cin>>n;
		int t1=0,t2=0;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			if(a[i]%3==0)++ans;
			else if(a[i]%3==1)++t1;
			else if(a[i]%3==2)++t2;
		}
		if(t1>t2)ans=ans+t2+(t1-t2)/3;
		else ans=ans+t1+(t2-t1)/3;
		cout<<ans<<'\n';
	}
	return 0;
 } 

C:

假设1234,给我们的数列时由1234排列组成的,那么我就遍历一遍数组,记录下1,2,3,4分别的个数,注意这个记录不是单纯的记录,要当这个数前面的数的个数大于他的个数的时候才记录。假设sum1(代表数列中1的个数)=2,而sum2(代表数列中2的个数)=2,那么如果在遍历到2,则不能sum2++,因为这样的2是不合法的。最后我们求出sum数组的最小值,答案就是n-min*6。

#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+10;
int a[maxn],aa[7];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]==4)++aa[0];
		else if(a[i]==8&&aa[0]>aa[1])++aa[1];
		else if(a[i]==15&&aa[1]>aa[2])++aa[2];
		else if(a[i]==16&&aa[2]>aa[3])++aa[3];
		else if(a[i]==23&&aa[3]>aa[4])++aa[4];
		else if(a[i]==42&&aa[4]>aa[5])++aa[5];
	}
	int min=aa[0];
	for(int i=0;i<=5;i++)
	{
		if(aa[i]<min)min=aa[i];
	}
	cout<<n-min*6<<'\n';
 } 

D:

思路:首先对于B数组,我们先从大到小处理这个数组里面的合数,就是非素数,这样做的目的是,如果一个合数,他的最大因数可能会是素数,例如:2  4  7  14。7与4匹配的话那么2和14不能匹配。所以先从大到小处理所有的合数,然后再来处理素数,用到的算法就是欧拉筛。里面有一个标记数组,当 i 不是素数时 isprime[ i ]=1,当 i 是素数时,isprime[ i ]=0;

首先用欧拉筛筛出所有的素数,存放到pri数组中,然后对b数组排序,从大到小排序,然后处理和数,再去处理素数。

#include<bits/stdc++.h>
using namespace std;
const int maxn=3e6+10;
int pri[maxn],tot;
int ispri[maxn];  //判断是否为素数,如果是,pri[i]=0,否则为1.
void primeall()  //欧拉筛筛出1-maxn中的所有的素数。
{
	for(int i=2;i<maxn;i++)
	{
		if(!ispri[i])pri[++tot]=i;
		for(int j=1;j<=tot&&pri[j]*i<maxn;j++)
		{
			ispri[pri[j]*i]=1;
			if(i%pri[j]==0)break;
		}
	}
}
int a[maxn],b[maxn],sum[maxn],ans[maxn],t=0;
int main()
{
	primeall();
	int n;
	cin>>n;
	for(int i=1;i<=2*n;i++)
	{
		cin>>b[i];
		sum[b[i]]++;     //用sum数组对b数组里面的每一个元素计数。
	}
	sort(b+1,b+1+2*n);
	for(int i=2*n;i>=1;i--)  //处理所有的合数
	{
		if(ispri[b[i]]&&sum[b[i]]>0)
		{
	
			sum[b[i]]--;
			ans[++t]=b[i];
			for(int j=2;j*j<=b[i];j++)
			{
				if(b[i]%j==0)
				{
					sum[b[i]/j]--;
					break;
				}
			}
		}
	}
	for(int i=1;i<maxn;i++)  //处理所有的素数
	{
		while(sum[i])
		{
			ans[++t]=i;
			sum[i]--;
			sum[pri[i]]--;
		}
	}
	for(int i=1;i<=t;i++)cout<<ans[i]<<' '; 
	cout<<'\n';
	return 0;
} 

 

 

<div class="search-result-card"><div class="xdRZvpyH"><div class="flex flex-col"><div class="qOjIXOD6 videoImage" style="padding-top: 133.333%;"><div class="KJZePflz"><div class="oyfanDG1"><div class="DSeU7aaq" style="background-image: url("https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&from=327834062&lk3s=138a59ce&s=PackSourceEnum_SEARCH&sc=cover&se=true&sh=323_430&x-expires=2069668800&x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D");"></div><div class="DSeU7aaq" style="background-image: url("https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&from=327834062&lk3s=138a59ce&s=PackSourceEnum_SEARCH&sc=cover&se=true&sh=323_430&x-expires=2069668800&x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D");"></div><div class="J70M5rRJ"></div><img src="https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&from=327834062&lk3s=138a59ce&s=PackSourceEnum_SEARCH&sc=cover&se=true&sh=323_430&x-expires=2069668800&x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D" class="sAu48sAa Xn3cOytH" fetchpriority="high" width="1080" height="1440" decoding="async"></div><div class="uaGCrcWl"><div class="aTty6Dqz"><div class="bmTVuDbN"></div><div class="hICYZaIw">00:32</div><div class="LUd60iMQ"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" class="XpYL0ozp" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.224 4.667C6.326 4.667 4 7.151 4 10.043l.002.169a1.078 1.078 0 0 0-.002.094c.009.387.097.855.195 1.245.096.382.23.806.38 1.113.605 1.301 1.664 2.563 2.683 3.6a30.679 30.679 0 0 0 3.425 3.008l.02.017.015.012c.226.226.703.7 1.554.7h.025c.241 0 .816-.001 1.331-.502.009-.008.022-.02.042-.035l.182-.151.004-.004c.565-.465 1.886-1.554 3.188-2.867.834-.836 1.698-1.807 2.359-2.81.09-.136.176-.273.258-.41.033-.055.06-.112.082-.17.03-.077.044-.108.055-.13.013-.025.034-.063.088-.146.038-.06.07-.122.096-.188.037-.093.064-.156.085-.199l.004-.009c.087-.11.152-.238.19-.374.162-.576.273-1.082.284-1.705 0-.03 0-.058-.002-.087a7.123 7.123 0 0 0 .001-.206c-.019-2.876-2.338-5.341-5.224-5.341-1.094 0-2.159.339-2.999 1.021-.909-.658-1.957-1.021-3.097-1.021zm9.162 5.377v.134a2.388 2.388 0 0 0 0 .14c-.01.294-.057.559-.156.935-.043.07-.076.135-.1.186a4.313 4.313 0 0 0-.116.26c-.108.173-.178.31-.251.492-.05.082-.104.167-.16.252h-.001c-.55.834-1.304 1.69-2.087 2.476l-.003.002c-1.223 1.234-2.474 2.266-3.033 2.727l-.041.034c-.05.04-.105.086-.157.13l-.06-.061c-.065-.064-.154-.135-.197-.17l-.008-.006a28.517 28.517 0 0 1-3.214-2.817l-.003-.004c-.968-.985-1.824-2.042-2.27-3.009a4.077 4.077 0 0 1-.24-.719 4.491 4.491 0 0 1-.129-.715l.001-.036v-.098l-.001-.005-.002-.129c0-1.778 1.436-3.218 3.066-3.218.857 0 1.667.348 2.393 1.102a1.079 1.079 0 0 0 1.66-.129c.428-.61 1.155-.973 2.043-.973 1.63 0 3.066 1.441 3.066 3.218v.001z" fill="#fff"></path></svg><span>75.9万</span></div></div></div></div></div><div class="Rjle4CIM"><div class="wSEoiOKC"><div class="vqtFIVjM">此闹剧唯一受害者——围栏。#离谱 #万万没想到</div><div class="Yw1ttXGj"><span class="YebDknhI"><span class="AUcBf8QC">@</span><span class="VikzymRj">瓜瓜瓜妹</span></span><span class="wTD2qIyI"> · 2024年8月28日</span></div></div></div></div></div></div>有视频链接没有
08-05
<template> <div class="page"> <div class="box_1"> <!-- 顶部状态栏 --> <van-row class="group_1" type="flex" justify="space-between" align="center"> <van-col> <span class="text_1">9:4</span> <span class="text_2">1</span> </van-col> <van-col> <van-row type="flex" gutter="10"> <van-col> <img class="label_1" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPng31811b2aa4b6fb4ee1221bbeb7554031b8e3d6e5657b07ba1e62249930ebcb5b" /> </van-col> <van-col> <img class="label_2" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPnga8bdcc76df2975e967348f4c2a740c22d7be3312426153bbbc6cb4658333bf5a" /> </van-col> <van-col> <img class="label_3" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPngec61d687a3ce565d1a19ba46d4d313d6133142581aca5208e9ac28f78e61688a" /> </van-col> </van-row> </van-col> </van-row> <!-- 主要内容 --> <van-row type="flex" justify="center"> <img class="image_1" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPng5e77e5285b959d2fea5ac51d323cd59ce3a3d94b780ff88fc87bae1b3de83e0d" /> </van-row> <van-row type="flex" justify="center"> <span class="text_3">连接六层人脉</span> </van-row> <van-row type="flex" justify="center"> <span class="text_4">173****7103</span> </van-row> <van-row type="flex" justify="center"> <van-button class="text-wrapper_2" type="primary" block>本机号码一键登录</van-button> </van-row> <van-row type="flex" justify="center"> <van-button class="text-wrapper_3" plain type="primary" block>使用其他手机号</van-button> </van-row> <!-- 协议同意 --> <van-row class="image-text_1" type="flex" justify="center" align="center"> <van-checkbox v-model="checked" class="group_2"></van-checkbox> <div class="text-group_1"> <span class="text_7">我已阅读并同意</span> <span class="text_8">《用户协议》《隐私政策》</span> </div> </van-row> <!-- 其他登录方式 --> <van-row class="group_3" type="flex" justify="center" align="center"> <van-col span="3"> <div class="group_4"></div> </van-col> <van-col span="6"> <span class="text_9">其他登录方式</span> </van-col> <van-col span="3"> <div class="group_5"></div> </van-col> </van-row> <!-- 社交图标 --> <van-row class="image-wrapper_1" type="flex" justify="center" gutter="20"> <van-col> <img class="image_2" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPng45309803787b803cec1d7aafe94be36da1c687f4d87116cdfce1875cc26b63f9" /> </van-col> <van-col> <img class="image_3" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPng82a88f70cafa40f821ab1cabbe8391766c111490c8df1423f268f594d3570be5" /> </van-col> </van-row> <van-row type="flex" justify="center"> <img class="image_4" src="https://lanhu-oss-2537-2.lanhuapp.com/SketchPngf1bc586835bf5ede2d683738d263c15a9f1841ccb7d21467d025582368972e92" /> </van-row> </div> </div> </template>修改意见
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值