cf#748 div3

A 模拟题

//#include<bits/stdc++.h>
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#define  lson rt<<1  //左孩子 
#define inf 0x3f3f3f3f
#define  rson rt<<1|1//右孩子 
#define MID(l,r) (l+r)>>1//右移运算符
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main()
    {
        int t;
        int a,b,c;
        int a1,b1,c1;
        scanf("%d",&t);
        for(int i=1;i<=t;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                int maxn=max(a,(max(b,c)));
                if(maxn!=a) 
                    {
                        a1=maxn+1-a;
                    }
                else{
                    if(a==b||a==c)
                        {
                            a1=1;
                        }
                    else{
                        a1=0;
                        }
                }
                if(maxn!=b)
                    {
                        b1=maxn+1-b;
                    }
                else{
                    if(b==a||b==c)
                        {
                            b1=1;
                        }
                    else{
                        b1=0;
                        }
                }
                if(maxn!=c)
                    {
                        c1=maxn+1-c;
                    }
                else{
                    if(c==a||c==b)
                        {
                            c1=1;
                        }
                    else{
                        c1=0;
                        }
                }
                
                printf("%d %d %d\n",a1,b1,c1);
            }
        return 0;
    }
View Code

B.不会写,maybe是dp,待补题

C.贪心

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#define  lson rt<<1  //左孩子 
#define inf 0x3f3f3f3f
#define  rson rt<<1|1//右孩子 
#define MID(l,r) (l+r)>>1//右移运算符
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int N=4e5+5;
int x[N];
int main()
    {
        int t;
        int n,k;
        scanf("%d",&t);
        while(t--)
            {    //k:老鼠个数,n:洞口距离 
                scanf("%d%d",&n,&k);
                for(int i=1;i<=k;i++)
                    {
                        scanf("%d",&x[i]);
                        x[i]=n-x[i];
                    }
                sort(x+1,x+k+1);
                ll sum=0;
                int cnt=0;
                for(int i=1;i<=k;i++)
                    {
                        sum+=x[i];
                        cnt++;
                        if(sum>=n)
                            {
                                --cnt;
                                break;
                            }
                    }
                printf("%d\n",cnt);
            }
        return 0;
        
    }
View Code

D.

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#define  lson rt<<1  //左孩子 
#define inf 0x3f3f3f3f
#define  rson rt<<1|1//右孩子 
#define MID(l,r) (l+r)>>1//右移运算符
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int N=4e5+5;
int a[45];
int main()
    {
        int t,n;
        scanf("%d",&t);
        while(t--)
            {    memset(a,0,sizeof(inf));
                scanf("%d",&n);
                for(int i=1;i<=n;i++)
                    {
                        scanf("%d",&a[i]);
                    }
                int minn=inf;
                int maxn=-inf;
                int maxp=0;
                for(int i=1;i<=n;i++)
                    {
                        minn=min(minn,a[i]);
                    }
                for(int i=1;i<=n;i++)
                    {
                            if(a[i]!=minn)
                            {
                                maxn=max(maxn,a[i]-minn);
                                maxp=i;
                            }    
                    }
                int gc=maxn;
                bool flag=false;
                for(int i=1;i<=n;i++)
                    {    
                        if(a[i]!=minn)
                            {    flag=true;
                                if(i!=maxp)
                                    {
                                        int temp=a[i]-minn;
                                        gc=__gcd(gc,temp);
                                    }
                            }    
                    }
                if(flag==false)
                    printf("-1\n");
                else
                printf("%d\n",gc);    
            }
        return 0;
    }
View Code

其他还没做。。。

 

posted @ 2021-10-14 10:16  WhyAndy  阅读(33)  评论(0)    收藏  举报