首页 > 其他分享 >Codeforces Global Round 24(B,C)

Codeforces Global Round 24(B,C)

时间:2022-12-23 14:25:51浏览次数:61  
标签:24 tmp int Global Codeforces solve ans include

Codeforces Global Round 24(B,C)

这一次vp真是大失所望,我只写了A ,第二题最后发现离那个答案很近了,但就是没想到,看来还是功力不到家呀

B

这道题的大意是有一个数组,我们可以选择任意两个数x,y,但是x-y>0且x-y不在这个数组里的,是一个新的数据,问我们最大可以使得这一个数组的大小为多少

我一开始是先排序,然后判断a[i]和a[1]是否能整除,因为我想到只有可以整除的时候这个数量就是a[n]/a[1],否则就是a[n],后来我想到6,9虽然能过相互整除,但是最后的答案一定不是9,而是3,后来我看到答案是所有的数的gcd,答案就是最大的那个一个除以最后求出的gcd,恍然大悟

#include <iostream>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int maxn=2e5+10;
int n,t;
void solve()
{
    int mx=0;
    int ans=0;
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        int tmp;
        cin>>tmp;
        if (i==1) 
        {
            ans=tmp;
        }
        else 
        {
            ans=__gcd(ans,tmp);
        }
        mx=max(mx,tmp);
    }
    cout<<mx/ans<<'\n';
    return ;
}
int main ()
{
    cin>>t;
    while (t--)
    {
        solve();
    }
    system ("pause");
    return 0;
}

C

这一道题就是连线,但是不可以存在u,v,w,a[u]<=a[v]<=a[w]这样的三个点连接在一起,可以理解为中间的那一个可以是最大的,也可以是最小的,但就是不能是最中间的那一个(对于三个点,两个点的时候可以随便)

我看了大佬的代码,说一下我对代码的理解

有两种情况,

1,ans=n/2,所有的点两两连线

2,如果a[i]!=a[i-1])

ans=(i-1)*(n-i+1)把n个点分开,前i-1作为一个部分,i到n作为一个部分,这两个部分形成二部图

每次找最大的ans

#include <iostream>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int maxn=2e5+10;
#define int long long 
int n,t;
int a[maxn];
void solve()
{
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    int ans=n/2;
    for(int i=2;i<=n;i++)
    {
			if(a[i]!=a[i-1])
            {
				ans=max(ans,(i-1)*(n-i+1));
			}
	}
    cout<<ans<<'\n';
    return ;
}
signed  main ()
{
    cin>>t;
    while (t--)
    {
        solve();
    }
    system ("pause");
    return 0;
}

标签:24,tmp,int,Global,Codeforces,solve,ans,include
From: https://www.cnblogs.com/righting/p/17000565.html

相关文章

  • 明解入门练习4-24
    这一题的答案也好像是拼凑的,但每一个步骤还是对的上来,首先外圈的for是控制层数然后第二个for是控制每层的空格,空格数就是总层数减当前所在层数,第一层就是3-2,一次递推然后第......
  • Codeforces 1654 G Snowy Mountain 题解 (重心分治)
    题目链接假设现在起点已经确定,我们观察从这个起点开始能走的最长路径长什么样。把这条最长路径中所有的非平地路径拿出来,它们肯定连成一线,因为不允许上坡;而一条路径重复走......
  • Codeforces Round #837 (Div. 2)(持续更新)
    Preface补题ing上周由于疫情鸽了好多场,趁现在空下来尽量多写点吧A.HossamandCombinatoricsSB题,直接统计下最大的数和最小的数的个数即可注意所有数相同的情况要特......
  • Educational Codeforces Round 139 D. Lucky Chains
    LuckyChains题面翻译给定两个数·a,b,(a,b给到了1e7)执行如下语句:while(gcd(a,b)==1)a++,b++,cnt++;求出cnt的值。样例#1样例输入#145151337891......
  • Codeforces Round #652 (Div. 2) C-E
    RationalLee样例#1样例输入#13421137171362101010101111334410000000001000000000100000000010000000001111样例输出#1484280000......
  • Codeforces Round #785 (Div. 2) A-C
    ProblemA题意问给一个长度为2的小写字符串,字符串从ab开始,然后第一个位置和第二个位置上的字符不能相等,问按照这个方式排序,给出的字符串是第几个然后这道题首先分情况讨......
  • Codeforces Round #840 (Div. 2)
    A题意:给定n个整数,可以交换任意两个数二进制上的某一位。求任意操作次数后数组中最大值与最小值的最大差。核心思路:这个思路还是很显然的大胆的猜结论,贪心的考虑每一个......
  • Day24.2.数组在内存中的存储方式
    Day24.2.数组在内存中的存储方式数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。如,定义了一个a[i]的数组,具体a[0],a[1]...中......
  • Day24.1.二维数组
    Day24.1.二维数组多维数组可以看成数组的数组,如,二维就是一维中的元素变为数组,数组中存元素1.二维数组的声明创建 inta[][]=newint[2][5]; intb[][]={{1,2},{3,......
  • Day24.1.数组入门
    Day24.1.数组入门1.定义数组是相同数据的有序集合每个数据为一个数组元素,每个数组元素可以通过一个下标来访问他们2.数组的声明创建声明: //方法一 dataTyp......