Educational Codeforces Round 102 (Rated for Div. 2)

简介: A. Replacing Elements

A. Replacing Elements


题意:给你一个长度为n的数组和要求数组里最大的数k,你可以通过操作a[i]+a[j]=a[k]改变数组里每个数的值,问能不能通过操作是的数组满足所有元素都小于k。


思路:模拟,如果最小的两个数的和小于k即可,注意还有一种是像 4 2 ,2 2 2 2 这种,要特判,如果最大的元素也小于k,则一定满足.


#include <bits/stdc++.h>
using namespace std;
int a[1000];
int main()
{
  int i,j,n,t,k;
  cin>>t;
  while(t--){
    cin>>n>>k;
    for(i=0;i<n;i++){
      cin>>a[i];
    }
    sort(a,a+n);
    if(a[n-1]<=k||(a[0]+a[1])<=k){
      cout<<"YES"<<endl;
    }
    else 
      cout<<"NO"<<endl;
  }
}


B. String LCM


题意:给你两个字符串a,b,求是否存在这两个字符串的LCM串。


思路:通过他们的长度去求lcm,然后再通过lcm/长度,求得放大的倍数,放大完之后再比较是否相等即可。


#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n,i,j,t;
  cin>>t;
  string s1,s2;
  while(t--){
    cin>>s1>>s2;
    int d1=s1.length();
    int d2=s2.length();
    int ans;
    ans=(d1*d2)/(__gcd(d1,d2));
    int m1,m2;
    m1=ans/d1,m2=ans/d2;
    string sa,sb;
    for(i=0;i<m1;i++)
      sa+=s1;
    for(i=0;i<m2;i++)
      sb+=s2;
    if(sb==sa)
      cout<<sa<<endl;
    else 
      cout<<-1<<endl;
  }
}


C. No More Inversions


题意:给你一个数组 a:1,2,3,…,k−1,k,k−1,k−2,…,k−(n−k) (k≤n<2k).要找一个 p 排列p的长度为k,然后根据数组a和p生成数组b, 要求是,b数组中的逆序对数量不大于a数组中的逆序对数量,且字典序最大。


思路:蛮难理解的,当时是找规律思路有点混乱,数组a,他是递增到k再递减n-k个数,为了使数组b尽可能的大,应该想法是把大数往前,但是要考虑逆序对的数量。

列如如果是

a:1 2 3 4 3

则最大的b应该是 b: 1 2 4 3 4

所以 p: 1 2 4 3


#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n,i,j,k,t;
  cin>>t;
  while(t--){
    int n,k;
    cin>>n>>k;
    if(k==1){
      cout<<1<<endl;
      continue;
    }
    if(n==k){
      for(i=1;i<=k-1;i++)
        cout<<i<<" ";
      cout<<k<<endl;
      continue;
    }
    else {
      for(i=1;i<=k-(n-k)-1;i++)
        cout<<i<<" ";
      for(i=k;i>=k-(n-k)+1;i--)
        cout<<i<<" ";
      cout<<i<<endl;
    }
  }
}




相关文章
Codeforces Round #192 (Div. 2) (330B) B.Road Construction
要将N个城市全部相连,刚开始以为是最小生成树的问题,其实就是一道简单的题目。 要求两个城市之间不超过两条道路,那么所有的城市应该是连在一个点上的,至于这个点就很好找了,只要找到一个没有和其他点有道路限制的即可。
51 0
|
机器学习/深度学习 人工智能
Educational Codeforces Round 113 (Rated for Div. 2)C. Jury Meeting
Educational Codeforces Round 113 (Rated for Div. 2)C. Jury Meeting
62 0
|
人工智能 测试技术
Codeforces Round #746 (Div. 2) C. Bakry and Partitioning
Codeforces Round #746 (Div. 2) C. Bakry and Partitioning
92 0
Educational Codeforces Round 113 (Rated for Div. 2)A. Balanced Substring
Educational Codeforces Round 113 (Rated for Div. 2)A. Balanced Substring
94 0
|
人工智能 Windows
Educational Codeforces Round 113 (Rated for Div. 2) C - Jury Meeting (思维 组合数)
Educational Codeforces Round 113 (Rated for Div. 2) C - Jury Meeting (思维 组合数)
107 0
|
人工智能
Educational Codeforces Round 113 (Rated for Div. 2) B. Chess Tournament(思维 构造)
Educational Codeforces Round 113 (Rated for Div. 2) B. Chess Tournament(思维 构造)
93 0
|
机器学习/深度学习 人工智能 BI
Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(组合数学 思维)
Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(组合数学 思维)
116 0
|
机器学习/深度学习 Java
codeforces Educational Codeforces Round 49 (Rated for Div. 2) C题
刚开始拿到这题很懵逼,知道了别人的思路之后开始写,但是还是遇到很多坑,要求求P2/S最大。p=a b。就是求(a2+ b2 +2ab)/ab最大,也就是a/b +b/a最大。那么题意就很明显了。
121 0