Codeforces Round #364 (Div. 2)【A,C】

来源:互联网 发布:非典真实死亡人数知乎 编辑:程序博客网 时间:2024/04/28 01:42

啊啊啊啊啊啊啊啊啊,目睹A->CⅠA全过,最终fstwaA,C;23333333
A题:
题意:
就是分成相等的m堆,每堆有两个位置上的值相加。
思路:
fst在sum可能不是偶数,先*2/n;。。。。。。。。。。。。。。哭死。。
code:

#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const double eps=1e-6;const double pi=acos(-1.0);const int mod=998244353;const int INF=0x3f3f3f3f;const int N=1e2+10;int a[N];bool vis[N];int n;int main(){    cin>>n;    int sum=0;    for(int i=1;i<=n;i++)    {        scanf("%d",&a[i]);        sum+=a[i];    }    memset(vis,0,sizeof(vis));    int x=sum*2/n;    for(int i=1;i<=n;i++){        if(!vis[i])        {            printf("%d ",i);            vis[i]=1;            for(int j=1;j<=n;j++)            {                if(!vis[j]){                    if((a[i]+a[j])==x)                    {                        printf("%d\n",j);                        vis[j]=1;                        break;                    }                }            }        }    }}

C题:
题意就是求一个最短连续区间长度包含给定字符串的所有种类。
思路:写挫了。。。。
code:

#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const double eps=1e-6;const double pi=acos(-1.0);const int mod=998244353;const int INF=0x3f3f3f3f;const int N=1e5+10;char s[N];bool v1[N];int v2[N];int p1,p2;int main(){    int len;    scanf("%d",&len);    scanf("%s",s);    int sum;    int x;    sum=0;    memset(v1,0,sizeof(v1));    for(int i=0;i<len;i++){        x=s[i];        if(!v1[x]){            sum++;            v1[x]=1;        }    }    memset(v2,0,sizeof(v2));    int ans=INF;    int num=0;    int flag=0;    p1=p2=0;    num=0;    while(1)    {        flag=0;        while(num<sum){            if(p2==len)                break;            x=s[p2];            if(!v2[x])                num++;            v2[x]++;            p2++;            flag=1;           // printf("p2=%d\n",p2);        }        while(num==sum){            ans=min(ans,p2-p1);            x=s[p1];            v2[x]--;            if(!v2[x])                num--;            p1++;            flag=1;           // printf("p1=%d\n",p1);        }        if(!flag)            break;    }    printf("%d\n",ans);    return 0;}
0 0
原创粉丝点击