[2016-05-01][codeforces][667B - Coat of Anticubism]

  • 时间:2016-05-01 14:13:45 星期日

  • 题目编号:[2016-05-01][codeforces][667B - Coat of Anticubism]

  • 题目大意:给定n条边,问至少要增加一条多长的边才能使得这些边能组成一个凸多边形,保证n条边一定不能组成凸多边形,

  • 分析:

    • 增加一条边,使得这些边能组成三角形,这条边的最小值就是答案
    • 假设增加一条边之和,组成的不是三角形,假设是4边行,那么可以把某两条边缩短,使得某相邻的两条边变成一条边,进而使得4边形变成3角形,故不是三角形的情况一定还能把边缩短,所以三角形的情况才是最优的情况
  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. const int maxn = 1E5 + 10;
  5. int main(){
  6. int n,a,b,tmp;
  7. a = b = 0;
  8. scanf("%d",&n);
  9. for(int i = 0 ; i < n ; ++i){
  10. scanf("%d",&tmp);
  11. if(tmp > a){
  12. b += a;
  13. a = tmp;
  14. }else b += tmp;
  15. }
  16. int ans = a - b + 1;
  17. printf("%d\n",ans);
  18. return 0;
  19. }


来自为知笔记(Wiz)


posted on 2016-05-01 14:20  红洋  阅读(222)  评论(0)    收藏  举报

导航