多校5 HDU-6090 Rikka with Graph 贪心
来源:互联网 发布:淘宝客工具箱 编辑:程序博客网 时间:2024/05/14 05:27
原题链接:
HDU-6090
大意:
多组样例,给出图的边和顶点数,求
思路:
贪心地考虑添加边,最优情形是一个菊花形,两点间路径为 1或 2
① 边如果太少,那么有一部分点为孤立点,额外计算。
② 边如果多了,每次添加边就是有一条路径长度 从 2 变为 1
考虑边大于完全连通图的边数,注意处理。
代码实现:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define mem(s,t) memset(s,t,sizeof(s))#define D(v) cout<<#v<<" "<<v<<endl#define inf 0x3f3f3f3f//#define LOCALinline void read(ll &x){ x=0;char p=getchar(); while(!(p<='9'&&p>='0'))p=getchar(); while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar();}const ll N =1e5+10;ll a[N];int main() {#ifdef LOCAL freopen("1006.in","r",stdin); freopen("out.txt","w",stdout);#endif ll t; read(t); while(t--){ ll n,m; read(n);read(m); ll ans=0; if(n-1>=m){ ll N=m+1; ans=2*(n-N)*N*n;ans+=(n-N)*(n-N-1)*n; ans+=2*(N-1)+2*(N-1)*(N-2); }else if(n-1<m){ m=min((n-1)*n/2,m); ll N=n; ans=2*(N-1)+2*(N-1)*(N-2); ans-=2*(m-(n-1)); } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- 多校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
- HDU 6090 Rikka with Graph
- HDU 6090 Rikka with Graph (贪心+构造, 2017 Multi-Univ Training Contest 5)
- HDU6090-思维&构造&贪心&&2017多校5-Rikka with Graph
- Rikka with Graph HDU
- Swift基础之封装一个WebViewController
- 【LIS最长上升子序列】O(n^2)与O(nlogn)算法(HDU1257)
- mysql跳过密码验证修改密码
- intellij+springboot+springloaded 实现热部署
- 从C过渡到C++
- 多校5 HDU-6090 Rikka with Graph 贪心
- const常量与define宏定义的区别
- Struts2(3)
- c之数组
- 网易面试题
- css 精灵
- qt库结构及示例
- java中的四大输入:System.in,Scanner,InputStreamReader,BufferesReader的用法与区别【改】
- WPF多语言切换