Hdu 6090 Rikka with Graph【贪心】

来源:互联网 发布:九阴绝学玄兵进阶数据 编辑:程序博客网 时间:2024/06/08 00:48

Rikka with Graph

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 112    Accepted Submission(s): 81


Problem Description
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them:

For an undirected graph G with n nodes and m edges, we can define the distance between (i,j) (dist(i,j)) as the length of the shortest path between i and j. The length of a path is equal to the number of the edges on it. Specially, if there are no path between i and j, we make dist(i,j) equal to n.

Then, we can define the weight of the graph G (wG) as ni=1nj=1dist(i,j).

Now, Yuta has n nodes, and he wants to choose no more than m pairs of nodes (i,j)(ij) and then link edges between each pair. In this way, he can get an undirected graph G with n nodes and no more than m edges.

Yuta wants to know the minimal value of wG.

It is too difficult for Rikka. Can you help her?  

In the sample, Yuta can choose (1,2),(1,4),(2,4),(2,3),(3,4).
 

Input
The first line contains a number t(1t10), the number of the testcases. 

For each testcase, the first line contains two numbers n,m(1n106,1m1012).
 

Output
For each testcase, print a single line with a single number -- the answer.
 

Sample Input
14 5
 

Sample Output
14

题目大意:


一个有N个点的完全无向图,希望我们从中选出不超过M条边,使得选出的图 ni=1nj=1dist(i,j).    的值最小。


思路:

显然类似这样的菊花图去取边是最优的方案。



那么考虑:

①最初如果M=0的时候,答案是n^3-n^2

②当M=1的时候,对答案减少的贡献是n-1.

③当M>1&&M<=n-1的时候,每条边对答案减少的贡献是(i-1)*(n-2)+(n-1);

④当M>n-1的时候,每条边对答案减少的贡献是2或者是0.

⑤答案最小是n^2-n;


那么我们暴力搞一下就行了。


Ac代码:

#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;#define ll __int64int a[1500000];int main(){    int t;    scanf("%d",&t);    while(t--)    {        ll n,m;        scanf("%I64d%I64d",&n,&m);        ll Ans=n*n*n-n*n;        for(ll i=1;i<=n-1&&i<=m;i++)        {            if(i==1)Ans-=2*(n-1);            else Ans-=2ll*((i-1)*(n-2)+(n-1));        }        m=max(0ll,m-(n-1));        Ans-=2*m;        Ans=max(Ans,n*n-n);        printf("%I64d\n",Ans);    }}








原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃了牙痛药胃痛怎么办 吃了药刺激胃怎么办 吃凉的刺激到胃怎么办 误食打农药的菜怎么办 狗把蛇咬死了怎么办 吃过毒死的狗怎么办 偷用室友东西被发现怎么办 室友看综艺太吵怎么办 被甲鱼咬住不放怎么办 凤仙叶子干焦怎么办 香槟开了没喝完怎么办 土豆酸了吃了怎么办 吃了发酸的土豆怎么办 土豆没煮熟吃了怎么办 吃了发绿的土豆怎么办 孩子吃蒸土豆发恶心怎么办 吃了发麻的土豆怎么办 吃了没熟的土豆怎么办 吃土豆没熟中毒怎么办 吃小土豆能中毒怎么办 猪吃土豆中毒了怎么办 吃了不熟的土豆怎么办 吃了变绿的土豆怎么办 吃炸洋芋中毒了怎么办 脸上长毒气痘痘怎么办 吃鸡游戏中遇到毒气怎么办 吃多了颠茄片怎么办 玲珑骰子沾了水怎么办 花的枝干长歪了怎么办 电脑中毒了怎么办开不了机 台湾竹长得太高怎么办 文竹长得太高怎么办 桑叶牡l丹长虫怎么办 日本海棠开完花后枯萎了怎么办 长寿冠海棠烂根怎么办 夏季长寿冠海棠掉叶怎么办 竹节海棠有点烂根怎么办? 丽格海棠烂茎怎么办 长寿花徒长不开花怎么办 长寿花植株长了怎么办 丽格海棠不爱长怎么办