Educational Codeforces Round 30(A+B)

来源:互联网 发布:泰剧app软件下载 编辑:程序博客网 时间:2024/05/16 15:12

http://codeforces.com/contest/873
战绩:只A了一道qwq
第二个用尺取法搞了好搞。一直不对。
A
给定一个数组,可以把k个值换成n,问你他们的和的最小

#include <bits/stdc++.h>using namespace std;/**/const int maxn=1e4;int a[maxn];int main(){   int m,n,k;    while(~scanf("%d%d%d",&m,&n,&k)){          for(int i=0;i<m;i++){              scanf("%d",&a[i]);          }          for(int i=m-n;i<m;i++){              a[i]=min(a[i],k);          }          int ans=0;          for(int i=0;i<m;i++)             ans+=a[i];          printf("%d",ans);    }    return 0;}

B用前缀和,用一个信号量(我tm。。。)
记录一下这个信号量的初始值。
大佬大佬。

#include <bits/stdc++.h>using namespace std;/**/const int maxn=1e4;int a[maxn];int main(){   int m,n,k;    while(~scanf("%d%d%d",&m,&n,&k)){          for(int i=0;i<m;i++){              scanf("%d",&a[i]);          }          for(int i=m-n;i<m;i++){              a[i]=min(a[i],k);          }          int ans=0;          for(int i=0;i<m;i++)             ans+=a[i];          printf("%d",ans);    }    return 0;}