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

A.How Much Does Daytona Cost?

Problem- A -Codeforces

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

#include
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} 那么我们可以想到一个策略,输出所有的奇数:
两奇数相加是偶数,两奇数相乘是奇数,偶数一定不能整除奇数

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

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
#include
#include
#include
#include
#include
#include
#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();
    }
}

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

你可能感兴趣的:(算法,开发语言,c++)