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 graphG 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 graphG (wG ) as ∑ni=1∑nj=1dist(i,j) .
Now, Yuta hasn nodes, and he wants to choose no more than m pairs of nodes (i,j)(i≠j) 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 ofwG .
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) .
For an undirected graph
Then, we can define the weight of the graph
Now, Yuta has
Yuta wants to know the minimal value of
It is too difficult for Rikka. Can you help her?
In the sample, Yuta can choose
Input
The first line contains a number t(1≤t≤10) , the number of the testcases.
For each testcase, the first line contains two numbersn,m(1≤n≤106,1≤m≤1012) .
For each testcase, the first line contains two numbers
Output
For each testcase, print a single line with a single number -- the answer.
Sample Input
14 5
Sample Output
14
题目大意:
一个有N个点的完全无向图,希望我们从中选出不超过M条边,使得选出的图
思路:
显然类似这样的菊花图去取边是最优的方案。
那么考虑:
①最初如果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); }}
阅读全文
0 0
- Hdu 6090 Rikka with Graph【贪心】
- 多校5 HDU-6090 Rikka with Graph 贪心
- hdu 6090 Rikka with Graph(思维 +贪心+轮图)
- HDU 6090 Rikka with Graph
- HDU 6090 Rikka with Graph
- [HDU 6090]Rikka with Graph
- hdu 6090 Rikka with Graph
- HDU 6090 Rikka with Graph
- HDU 6090 Rikka with Graph
- hdu 6090-Rikka with Graph
- hdu--6090--Rikka with Graph
- [HDU 6090]Rikka with Graph
- hdu 6090-Rikka with Graph
- HDU 6090-Rikka with Graph
- HDU 6090 Rikka with Graph
- Rikka with Graph HDU
- HDU_6090 Rikka with Graph 【贪心】
- hdu 6090 Rikka with Graph [想法题]
- 【STL】实现简单的空间配置器
- 并发学习->《Java并发编程的艺术》->重点摘录总结
- 练习6
- WaitForEndOfFrame
- C语言实现图的关键路径算法
- Hdu 6090 Rikka with Graph【贪心】
- linux面试题
- jni 学习
- 类必须放在包里
- ubuntu14.04 系统docker安装
- HDU 6069 Counting Divisors【素数筛】【约数个数定理】
- FreeModbus 移植--REG_INPUT_START 各种寄存器起始地址
- 枚举的访问权限
- Python学习笔记·Python开发环境配置