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;}