codeforces ,900,div2,蒟蒻解A-C

博客围绕Codeforces上的三道算法题展开。第一题求K出现次数最大的非空集,包含K即可;第二题构造严格递增数组,输出奇数可满足条件;第三题判断能否在1和n间选k个不同整数使和为x,根据取值范围判断,代码实现较简单。

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

A.How Much Does Daytona Cost?

Problem- A -Codeforces

因为是求出一个K出现次数最大的不为空集的集合,所以只需要在全部序列中包含K即可,因为K可以作为一个子串出现,而这个子串只含K,所以K出现次数最多,该策略可行

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int M=110;
int t,n,k;
int a[M];
 
void solve()
{
    cin>>n>>k;
    bool flag=0;
    for(int i=1;i<=n;i++){
        int x;cin>>x;
        if(x==k)flag=1;
    }
    if(flag)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}
 
signed main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--)solve();
}

B.Aleksa and Stack

Problem- B -Codeforces

题目要求我们构造一个大小为 n 的正整数严格递增数组,使得

3⋅a_{i+2}不能被a_i+a_{i+1}整除,每个i都不能被a_{i}+a_{i+1}整除。(1≤i≤n−2).
请注意,大小为 n的严格递增数组 a是一个对每个i都有 a_{i}<a_{i+1}的数组。
那么我们可以想到一个策略,输出所有的奇数:
两奇数相加是偶数,两奇数相乘是奇数,偶数一定不能整除奇数

代码很简单,就不放出来了

C.Vasilije in Cacak

Problem- C -Codeforces

题意:
给出三个数n、k 和 x,判断能否在 1 和 n之间选择 k个不同的整数,使它们的和等于 x

相关知识:
在n到m中任选数字,能否取任意数,使其和为K----此时只需要k>=n,并且k<=从n加到m的和;

那么这题我们的思路就很清晰了:
x应该大于从1加到k的和,x应小于从最大值n加k的和

代码实现也很简单

#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e5+5;
//int a[N];
int n,k,a,b;
typedef int rr;
priority_queue<rr,vector<rr>,greater<rr> > q;
 
void solve(){
    int a,b,c;
    cin>>a>>b>>c;
    if(c>=(1+b)*b/2&&c<=(2*a-b+1)*b/2)
    cout<<"YES\n";
    else cout<<"NO\n";
    
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
}

蒟蒻也就做到这了,补题去力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值