Codeforces Round #179 (Div. 2)

来源:互联网 发布:怎么做好淘宝代理 编辑:程序博客网 时间:2024/06/04 19:27
A题#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define clr(x) memset(x,0,sizeof(x))int a[3000];int f[3000];int main(){    int n,res,i;    while(scanf("%d",&n)!=EOF)    {            res=0;            clr(f);            for(i=0;i<n;i++)            {                scanf("%d",&a[i]);                f[a[i]]++;            }            for(i=0;i<3000;i++)            {                if(f[i]>res)res=f[i];            }            if(n%2==0)n=n/2;            else n=n/2+1;            if(res>n)printf("NO\n");            else printf("YES\n");    }    return 0;}
C题题意: 一个数组n个数,然后又m组操作,每组操作是将从l到r 的每个元素值加v,然后是k组操作,每组的意思是执行第x、x+1……y组操作,然后输出数组元素。#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define clr(x) memset(x,0,sizeof(x))long long a[100010];struct node{    int l,r;    long long d;}q[100010];long long f1[100010];long long sum1[100010];long long res[100010];int main(){    int n,m,k,i,u,v;    while(scanf("%d%d%d",&n,&m,&k)!=EOF)    {        clr(f1);        clr(sum1);        clr(res);        for(i=1;i<=n;i++){            scanf("%I64d",&a[i]);        }        for(i=1;i<=m;i++){            scanf("%d%d%I64d",&q[i].l,&q[i].r,&q[i].d);        }        for(i=0;i<k;i++){            scanf("%d%d",&u,&v);            f1[u]++;            f1[v+1]--;        }        for(i=1;i<=m;i++){            sum1[i]=sum1[i-1]+f1[i];        }        for(i=1;i<=m;i++){            res[q[i].l]+=q[i].d*sum1[i];            res[q[i].r+1]-=q[i].d*sum1[i];        }        for(i=1;i<=n;i++)        {            res[i]+=res[i-1];            printf("%I64d ",res[i]+a[i]);        }        printf("\n");    }    return 0;}


原创粉丝点击