2021.8.24个人赛

今天个人赛用的题都是CF的,虽然不是一个系列的,但题的质量都还不错,在这里整理下这些题的代码。话说老廖在acwing上的每日一题做过这些题,真他娘的巧。

Array Rearrangment

#include <stdio.h>
int a[55],b[55];
int main()
{
    int _;
    scanf("%d",&_);
    while(_--)
    {
        int n,x;
        scanf("%d%d",&n,&x);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=n;i>=1;i--)
            scanf("%d",&b[i]);
        int i;
        for(i=1;i<=n;i++)
            if(a[i]+b[i]>x)
                break;
        if(i>n)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

Blocks

#include <stdio.h>
char s1[205],s2[205];
int ans[205];
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    for(int i=1;i<=n;i++)
    {
        char c;
        scanf("%c",&c);
        s1[i]=c;
        s2[i]=c;
    }
    int cnt=1;
    for(int i=2;i<n;i++)
    {
        if(s1[i]!=s1[i-1])
        {
            ans[cnt++]=i;
            s1[i]=s1[i-1];
            s1[i+1]='B'+'W'-s1[i+1];
        }
    }
    if(s1[n]==s1[1])
    {
        printf("%d\n",cnt-1);
        for(int i=1;i<cnt;i++)
        {
            if(i!=cnt-1)
                printf("%d ",ans[i]);
            else
                printf("%d\n",ans[i]);
        }
    }
    else
    {
        cnt=1;
        ans[cnt++]=1;
        s2[1]='B'+'W'-s2[1];
        s2[2]='B'+'W'-s2[2];
        for(int i=2;i<n;i++)
        {
            if(s2[i]!=s2[i-1])
            {
                ans[cnt++]=i;
                s2[i]=s2[i-1];
                s2[i+1]='B'+'W'-s2[i+1];
            }
        }
        if(s2[n]==s2[1])
        {
            printf("%d\n",cnt-1);
            for(int i=1;i<cnt;i++)
            {
                if(i!=cnt-1)
                    printf("%d ",ans[i]);
                else
                    printf("%d\n",ans[i]);
            }
        }
        else
            printf("-1\n");
    }
    return 0;
}

Light It Up

#include <stdio.h>
#define N 100005
int number[N],sum1[N],sum2[N];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&number[i]);
    number[0]=0,number[n+1]=m;
    for(int i=1;i<=n+1;i++)
    {
        if(i%2)
        {
            sum1[i]=sum1[i-1]+number[i]-number[i-1];
            sum2[i]=sum2[i-1];
        }
        else
        {
            sum2[i]=sum2[i-1]+number[i]-number[i-1];
            sum1[i]=sum1[i-1];
        }
    }
    int ans=sum1[n+1];
    for(int i=1;i<=n+1;i++)
    {
        if(number[i]-number[i-1]>1)
        {
            int sum=sum1[i-1];
            sum+=number[i]-number[i-1]-1;
            sum+=sum2[n+1]-sum2[i];
            if(sum>ans)
                ans=sum;
        }
    }
    printf("%d\n",ans);
    return 0;
}

Cow and Friend

#include <stdio.h>
#define N 100005
int number[N];
int main()
{
    int _;
    scanf("%d",&_);
    while(_--)
    {
        int n,dis;
        scanf("%d%d",&n,&dis);
        int Max=0,flag=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&number[i]);
            if(number[i]>Max)
                Max=number[i];
            if(number[i]==dis)
                flag=1;
        }
        if(flag)
            printf("1\n");
        else
        {
            if(dis<Max)
                printf("2\n");
            else
                printf("%d\n",dis%Max?dis/Max+1:dis/Max);
        }
    }
    return 0;
}

Friends and Gifts

#include <bits/stdc++.h>
using namespace std;
#define N 200005
int number[N],flag[N];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&number[i]);
        flag[number[i]]=1;
    }
    vector <int> receive,give;
    for(int i=1;i<=n;i++)
    {
        if(!number[i])
            receive.push_back(i);
        if(!flag[i])
            give.push_back(i);
    }
    int cnt=receive.size();
    for(int i=0;i<cnt;i++)
    {
        if(receive[i]==give[i])
        {
            int x=i,y=(i+1)%cnt;
            swap(give[x],give[y]);
        }
    }
    for(int i=0;i<cnt;i++)
        number[receive[i]]=give[i];
    for(int i=1;i<=n;i++)
    {
        if(i!=n)
            printf("%d ",number[i]);
        else
            printf("%d\n",number[i]);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要将数据转换成pandas的DataFrame格式,代码如下: ```python import pandas as pd data = {'日期/项目(A厂)': ['2021.1.1', '2021.1.2', '2021.1.3', '2021.1.4', '2021.1.5', '2021.1.6', '2021.1.7', '2021.1.8', '2021.1.9', '2021.1.10', '2021.1.11', '2021.1.12', '2021.1.13', '2021.1.14', '2021.1.15', '2021.1.16', '2021.1.17', '2021.1.18', '2021.1.19', '2021.1.20', '2021.1.21', '2021.1.22', '2021.1.23', '2021.1.24', '2021.1.25', '2021.1.26', '2021.1.27', '2021.1.28', '2021.1.29', '2021.1.30', '2021.1.31'], '进水': [149, 164, 86, 164, 146, 136, 93, 96, 90, 134, 141, None, None, None, 138, 138, 161, None, None, None, None, None, None, None, None, None, 114, 107, 121, None, None], 'COD': [20.1, 10.1, 37.1, 16.4, 10.9, 18.7, 17.2, 17.1, 18.5, 23.8, 17.7, 15.6, 11.0, 19.5, 18.5, 15.2, 16.5, 16.3, 17.3, 29.5, 20.7, 19.5, 18.9, 12.0, 23.9, 11.7, 10.6, 11.1, 14.2, 10.6, 12.5], '氨氮': [3.54, 0.65, 1.92, 1.44, 0.84, 1.59, 1.15, 1.61, 1.42, 2.46, 2.50, 1.48, 1.04, 3.55, 1.60, 1.82, 2.60, 2.10, 1.54, 3.54, 2.67, 3.25, 2.12, 2.38, 2.34, 1.51, 1.58, 1.31, 1.66, 1.26, 1.71], '总磷': [30.7, 20.1, 44.1, 21.5, 18.4, 29.7, 23.5, 24.2, 26.9, 31.7, 28.3, None, None, 24.0, 26.9, 27.8, 20.5, 27.9, 31.8, 37.8, 24.9, 29.3, None, 23.4, 23.5, 12.4, 27.9, 19.3, 17.6, 19.5, 15.4]} df = pd.DataFrame(data) ``` 接下来,我们可以使用matplotlib库进行数据可视化,这里我选择绘制折线图。代码如下: ```python import matplotlib.pyplot as plt # 设置图形大小 plt.figure(figsize=(10, 6)) # 绘制折线图 plt.plot(df['日期/项目(A厂)'], df['进水'], label='进水') plt.plot(df['日期/项目(A厂)'], df['COD'], label='COD') plt.plot(df['日期/项目(A厂)'], df['氨氮'], label='氨氮') plt.plot(df['日期/项目(A厂)'], df['总磷'], label='总磷') # 添加标题和标签 plt.title('A厂水质监测', fontsize=16) plt.xlabel('日期', fontsize=12) plt.ylabel('含量', fontsize=12) # 添加图例 plt.legend() # 显示图形 plt.show() ``` 运行上述代码,即可得到一张含有4条曲线的折线图,用于展示A厂水质监测数据的趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值