当前位置: 代码迷 >> 综合 >> Codeforces Round #377 (Div. 2) Cormen --- The Best Friend Of a Man
  详细解决方案

Codeforces Round #377 (Div. 2) Cormen --- The Best Friend Of a Man

热度:31   发布时间:2023-12-06 03:13:08.0

题目链接:http://codeforces.com/contest/732/problem/B



题意:相邻的数值和必须大于k,问我们加多少能使得这个序列满足要求。

首先我们可以很轻易的发现,两端的数其中一端我们是怎么样都不用动的,加两端绝对不可能比加中间更优化。

那么问题就简化了,加入我们不动第一个数,那么想要达到条件就只能加第二个数,而且是个定值,那么之后的数都是变成定值,直接计算就能得到答案了。

#include<stdio.h>  
#include<string.h>  
#include<algorithm>  
using namespace std;  
int a[510];  
int main()  
{  int n,k,i,j;  while(scanf("%d%d",&n,&k)!=EOF)  {  for(i=0;i<n;i++)  scanf("%d",&a[i]);  int ans=0;  for(i=0;i<n-1;i++)  {  while(a[i]+a[i+1]<k)  {  a[i+1]++;  ans++;  }  }  printf("%d\n",ans);  for(i=0;i<n-1;i++)  printf("%d ",a[i]);  printf("%d\n",a[i]);  }  return 0;  
}  


  相关解决方案