2022.1.23

上午:

校门外的树

思路:就几个循环就出来了

#include<stdio.h>
int main()
{
    int tree[10000];
    int l,m;
    scanf("%d %d",&l,&m);
    for(int i=0;i<=l;i++)
    {
        tree[i]=1;
    }
    for(int i=0;i<m;i++)
    {
        int u,v;
        scanf("%d %d",&u,&v);
        for(int i=u;i<=v;i++)
        {
            tree[i]=0;
        }
    }
    int num=0;
    for(int i=0;i<=l;i++)
    {
        if(tree[i]==1)
            num++;
    }
    printf("%d\n",num);
    return 0;
}

第一次,第二次成交

(排序后,只要你找到一个价钱后面的就都可以拿下了)

//其实就是排序然后再每个都列举一遍顺便在列举时比较就可以了
#include<stdio.h>
int main()
{
    int n,m;
    int p[10000];
    scanf("%d %d",&n,&m);
    for(int i=0;i<m;i++)
    {
        scanf("%d",&p[i]);
    }
    //从大到小排序(这样的话,这个数后面的所有都是它可以得到的价钱
    for(int i=0;i<m-1;i++)
    {
        for(int j=i+1;j<m;j++)
        {
            if(p[i]>p[j])
            {
                int temp=p[i];
                p[i]=p[j];
                p[j]=temp;
            }
        }
    }
    int max=0;
    int num=0;
    for(int i=0;i<m;i++)
    {
        if(p[i]*(m-i)>max&&m-i<=n)
        {
            max=p[i]*(m-i);
            num=i;
        }
    }
    printf("%d %d\n",p[num],max);
    return 0;
}

下午:

测试;

补题:

Alice Wins(easy version)

/*
题解:
【1】它可以对每个组进行n次操作
【2】为了保证A能得到最多的分数
【3】前n让A赢,后n让B输
*/
#include<stdio.h>
int a[200020],b[200020];
int n;
void change(int *a,int *b)
{
    for(int i=1; i<=n; i++)
    {
        if(b[i]==1)
            a[i]=3;
        else
            a[i]=b[i]-1;
    }
    for(int i=n+1;i<=2*n;i++)
    {
        if(a[i]==3)
            b[i]=1;
        else
            b[i]=a[i]+1;
    }
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=1; i<=2*n; i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i=1; i<=2*n; i++)
        {
            scanf("%d",&b[i]);
        }
        change(a,b);

        printf("%d\n",2*n);
        for(int i=1; i<=2*n; i++)
        {
            printf("%d ",a[i]);
        }
        printf("\n");
        for(int i=1; i<=2*n; i++)
        {
            printf("%d ",b[i]);
        }
        printf("\n");
    }
    return 0;
}

晚上:

Erinnerung

这是上午没做完的题

//最重要就是要开long long 才能过
//而且注意 max 也的是 long long

#include<stdio.h>
int main()
{
    long long T;
    scanf("%lld",&T);
    while(T--)
    {
        long long x,y,k;
        scanf("%lld %lld %lld",&x,&y,&k);
        long long max=x;
        if(y>max)
            max=y;
        if(x==0&&y==0)
        {
            printf("0\n");
            continue;
        }
        else if(x==0||y==0)
        {
            if(k%max==0)
                printf("1\n");
            else
                printf("0\n");
                continue;
        }

        else
        {
           printf("%lld\n",k/max);
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值