首页 > 其他分享 >Acwing.第 120 场周赛

Acwing.第 120 场周赛

时间:2023-09-11 11:26:05浏览次数:39  
标签:周赛 匹配 int long 120 mpt 字符串 正整数 Acwing

Acwing.第 120 场周赛

比赛链接

A最大GCD

给定一个正整数 n(n≥2),请你确定两个正整数 a,b,使得 1≤a<b≤n,且 gcd(a,b)尽可能大。
输出 gcd(a,b)的最大可能值。
gcd(a,b)指 a,b的最大公约数。
提示:可以通过给定样例观察一下 n和答案之间的关系。
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据占一行,包含一个正整数 n。
输出格式
每组数据输出一行结果,一个整数,表示 gcd(a,b) 的最大可能值。
数据范围
前 3个测试点满足 1≤T≤10。
所有测试点满足 1≤T≤100,2≤n≤106。

A思路:

都给提示了,直接看样例就可以了。

A代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
    int n;
    cin>>n;
    cout<<n/2<<endl;
       
}
int main(){
    int t;
    cin>>t;
    // t=1;    
    while(t--){
        solve();
    }
    return 0;

}

B数量

给定一个正整数 n。
保证 n的十进制表示不含 4和 7以外的数字。
请你统计,[1,n]范围内一共有多少个正整数满足其十进制表示不含 4和 7以外的数字。
注意,统计时不要漏掉 n。
输入格式
一个正整数 n。

输出格式
一个整数,表示满足条件的正整数数量。

数据范围
前 3个测试点满足 1≤n≤100。
所有测试点满足 1≤n≤109。

B思路:

如果是单独的从1到n肯定是会超时的,因为n是109,但是我们可以把最后一位单独拿出来,也就是说这个题我们可以O(108)的时间复杂度解决。

B代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int check(int x){
	while(x){
		if(x%10!=4&&x%10!=7){
			return 0;
		}
		x/=10;
	}
	return 1;
}
void solve(){
	int n;
	cin>>n;
	int ans=0;
	for(int i=0;i<=n/10;i++){
		if(check(i)){
			if(i*10+7<=n){
				ans+=2;
			}
			else{
				ans+=1;

			}
		}
	}
	cout<<ans<<endl;
	return ;
	
}
int main(){
	int t=1;
	while(t--){
		solve();
	}
	return 0;

}

C字符串匹配

给定两个由大小写字母构成的字符串 s,t。
保证字符串 t的长度不小于字符串 s的长度。
请你对字符串 t进行调整,调整方法为依次执行以下两步:
去掉字符串 t中的若干字符,使得字符串 t的长度等于字符串 s的长度。注意,如果字符串 t的长度原本就等于字符串 s的长度,则忽略这一步。
重新调整字符串 t中各个字符的位置顺序(也可以不做任何调整)。
对于每个位置 i(0≤i<|s|):
如果 ti与 si完全相同,则称两字符串在位置 i上完美匹配。
如果 ti与 si字母相同但是大小写不同(例如 a 和 A、b 和 B 等等),则称两字符串在位置 i上普通匹配。
如果以上均不满足,则称两字符串在位置 i上不匹配。
我们希望,经过调整后的字符串 t在与字符串 s进行匹配时:
完美匹配的位置尽可能多。
在满足上一条的前提下,普通匹配的位置尽可能多。
请你找到一种最佳调整方案,并输出在最佳方案中,两字符串的完美匹配的位置数量以及普通匹配的位置数量。
输入格式
第一行包含一个由大小写字母构成的字符串 s。
第二行包含一个由大小写字母构成的字符串 t。
输出格式
一行包含两个用空格隔开的数,分别表示完美匹配的位置数量和普通匹配的位置数量。

C思路:

一看到题就知道使用map来做,因为可以调整位置,所以直接贪心优先考虑完美匹配,然后是普通匹配,但是如果我们需要减去的长度不够的话,优先减去普通匹配里的个数,当普通匹配的个数不够在考虑完美匹配,根据这个思路模拟一下就可以了。

C代码:

我之前的代码找不到了,再写发现竟然没写对,看看大佬的代码

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;

string s,t;
map<char,int> mps,mpt;
int a,b;

char bianhuan(char c)
{
    if(c<='Z' && c>='A')
    {
        c = c+32;
    }
    else c = c-32;
    return c;
}
int main(){
    cin>>s>>t;
    for(int i =0;i<s.size();++i)mps[s[i]]++;
    for(int i =0;i<t.size();++i)mpt[t[i]]++;

    for(auto it:mps)
    {
        //完美匹配
        char c = it.first;
        int v = it.second;
        if(mpt[c] >= v)
        {
            // 完全完美匹配
            a += v;
            mpt[c] -= v;
            mps[c] = 0;
        }
        else
        {
            // 部分完美匹配
            a += mpt[c];
            mps[c] -= mpt[c];
            mpt[c] = 0;
        }
    }

    for(auto it:mps)
    {
        //部分匹配
        char c = it.first;
        int v = it.second;

        b += min(v,mpt[bianhuan(c)]);
        mps[c] = 0;
        mpt[bianhuan(c)] = 0;
    }

    cout<<a<<" "<<b<<endl;

    return 0;
}

标签:周赛,匹配,int,long,120,mpt,字符串,正整数,Acwing
From: https://www.cnblogs.com/du463/p/17693016.html

相关文章

  • 【230910-2】双曲线:y^2/160^2-x^2/120^2=1图线及特征
    【图像】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>双曲线:y^2/160^2-x^2/120^2=1</title><styletype=&qu......
  • C++ 算法竞赛、03 周赛篇 | AcWing 第4场周赛
    AcWing第4场周赛竞赛-AcWing3694A还是B3694.A还是B-AcWing题库简单题#include<algorithm>#include<cstring>#include<iostream>usingnamespacestd;intn;inta,b;intmain(){cin.tie(0);charc;cin>>n;for(int......
  • 【230910-1】双曲线:x^2/120^2+y^2/150^2=1图线及特征
    【图像】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>双曲线:x^2/120^2+y^2/150^2=1</title><styletype=&qu......
  • 【230909-4】椭圆:x^2/120^2+y^2/150^2=1 图像及性质
    【图像】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>椭圆:x^2/120^2+y^2/150^2=1</title><styletype=&quo......
  • 人脸识别解决方案全套文件大合集,120份全新精选,有这个就够了
    一、人脸识别4个特点人脸识别和其他身份识别相比,有4个特点:1、便捷性。人脸是生物特征,不需要携带类似身份证的东西2、非强制性。识别的过程甚至不需要对象的配合,只要拍摄到人脸就可以进行识别,例如安防领域就是如此。3、非接触性。不需要跟设备进行接触,相比指纹更加安全一些。4、并行......
  • AcWing 898. 数字三角形
    题目给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。738810274445265输入格式第一行包含整数$n$,表......
  • AcWing 4. 多重背包问题
    题目有$N$种物品和一个容量是$V$的背包。第$i$种物品最多有$s_i$件,每件体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。接下来......
  • C++ 算法竞赛、02 周赛篇 | AcWing 第2场周赛
    AcWing第2场周赛竞赛-AcWing3626三元一次方程AcWing3626.三元一次方程-AcWing两层循环#include<iostream>usingnamespacestd;voidfind(intn){for(intx=0;x<=1000/3;x++){for(inty=0;y<=1000/5;y++){int......
  • AcWing 3. 完全背包问题
    题目有$N$种物品和一个容量是$V$的背包,每种物品都有无限件可用。第i$种物品的体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。......
  • C++ 算法竞赛、01 周赛篇 | AcWing 第1场周赛
    AcWing第1场周赛竞赛-AcWing3577选择数字3577.选择数字-AcWing题库朴素暴力两层循环#include<cstdio>#include<iostream>#include<unordered_set>usingnamespacestd;constintN=101;inta[N],b[N];intmain(){intn,m;cin>>n;......