【CF CodeTON Round 1】

A Good Pairs

题意题解略。
自己码代码能力有待提升。

#include<bits/stdc++.h>
#define ll long long
#define sc scanf
#define pr printf
using namespace std;
const ll maxn=2e5+10;
int a[maxn];
int main()
{
     int t;cin>>t;
     while(t--){
     	int n;sc("%d",&n);
     	int mmin=INT_MAX,mi=0;
		int mmax=INT_MIN,mj=0;
		int x;
     	for(int i=1;i<=n;i++){
     		sc("%d",&x);
     		if(mmin>x){
     			mmin=x;
     			mi=i;
			 }
			 if(mmax<x){
			 	mmax=x;
			 	mj=i;
			 }
		 }
		 pr("%d %d\n",mi,mj);
	 }
 return 0;
}

B - Subtract Operation

题意:略
题解:当剩下最后两个数的时候,其他的数对最后两个数的影响是一样的。所有最后就是看它俩的差会不会存在k了。
直接暴力肯定会爆啊,哪个大怨种会直接投啊,不会是我吧
那怎么处理呢?我用的是sort+二分查找某数+k是否存在。
然后下意识以为如果找不到返回的是最后一个的下一个,我昨天脑子里有坑
看了下官方题解,是用了sort加双指针,附在后面。

#include<bits/stdc++.h>
#define ll long long
#define sc scanf
#define pr printf
using namespace std;
const ll maxn=2e5+10;
int a[maxn];
int main()
{
     int t;cin>>t;
     while(t--){
     	int n,k;sc("%d%d",&n,&k);
     	for(int i=0;i<n;i++)sc("%d",&a[i]);
     	sort(a,a+n);
     	for(int i=0;i<n;i++){
     		int now=a[i]+k;
     		int ans=lower_bound(a,a+n,now)-a;
     		if(ans!=n&&a[ans]==now){
     		 pr("yes\n");
			 goto ans;
			}
		 }
     	pr("no\n");continue;
		ans:1;
	 }
 return 0;
}
}

官方:
在这里插入图片描述

C. Make Equal With Mod

题意:
对每一个数进行操作(对大于二的数求余,替代原来的数)。最后使数全一样。
题解:
觉得这题比B简单。
判断两点
1》如果说数组中出现1了,那么这个1将无法再进行操作,需要把其他数全变成1。而如果出现相邻的数,可知如何也不能变成全为1。
2》没有出现1的话,对数组所有数从最大开始求余即可得到全为0的数组,一定满足题意。

#include<bits/stdc++.h>
#define ll long long
#define sc scanf
#define pr printf
using namespace std;
const ll maxn=1e5+10;
int a[maxn];
int main()
{
     int t;cin>>t;
     while(t--){
     	int n;sc("%d",&n);
		 int f1=0;
     	for(int i=0;i<n;i++){
		sc("%d",&a[i]);
		if(a[i]==1)f1=1;
		 }
		 if(f1!=1){
		 pr("yes\n");continue;
		 }
     	sort(a,a+n);
     	int f=0;
     	for(int i=0;i<n-1;i++){
     		if(a[i+1]-a[i]==1){
			 f=1;break;}
		 }
		 if(f!=1){
		 pr("yes\n");continue;
		 }
     	pr("no\n");
	 }
 return 0;
}

D. K-good

题意:
一个数如果可以由k个对k求余但余数各不相同的和组成,输出k。
否则输出-1.
题解:
推公式、公式懒得写了,附上朋友题解
https://blog.csdn.net/m0_56535442/article/details/123776766?spm=1001.2014.3001.5502

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值