码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces - 367C Sereja and the Arrangement of Numbers

时间:2018-02-10 21:54:24      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:png   its   pos   amp   number   最小   scanf   --   codeforce   

技术分享图片

技术分享图片

题目大意:

要求构建一个长为n的数组,其中每两种不同的元素必须有一对是相邻的

然后给出m个交易,如果数组中有q[i]这个元素,就给w[i]元钱,求最多能得到多少钱?

具体思路:

先求出有x个不同元素的最小长度,然后给钱排个序就好啦

怎么求最小长度呢?可以把数组看成一个完全图的一条路径

最小长度大概就是一个欧拉路径啦,奇偶分类讨论一下就好啦

 

AC代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[5000000],b[5000000],x,y,i,j,n,m;
main()
{
    scanf("%I64d%I64d",&n,&m);
    for(i=2;i<=100000;i++)if((i-1)%2==0)a[i]=i*(i-1)/2+1;else a[i]=i*(i-1)/2+1+(i-2)/2;
    for(i=1;i<=m;i++)scanf("%I64d%I64d",&x,&y),b[x]+=y;
    sort(b+1,b+1+1000000);
    int top=0;
    while(n>=a[top])top++;
    top--;
    int ans=0;
    for(i=1;i<=top;i++)ans+=b[1000000-i+1];
    printf("%I64d",ans);
    return 0;
}

 

CodeForces - 367C Sereja and the Arrangement of Numbers

标签:png   its   pos   amp   number   最小   scanf   --   codeforce   

原文地址:https://www.cnblogs.com/Orange-User/p/8439738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!