博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf1082D Maximum Diameter Graph(构造+模拟+细节)
阅读量:4564 次
发布时间:2019-06-08

本文共 1244 字,大约阅读时间需要 4 分钟。

QWQ不得不说 \(cf\)\(edu\ round\)出这种东西 有点太恶心了

题目大意:给你\(n\)个点,告诉你每个点的最大度数值(也就是说你的度数要小于等于这个),让你构造一个无向图,使其满足直径最大且包含所有点

一看就是个构造题

QWQ但是细节非常多。

大致上的思路就是,我们考虑把度数大于1的点拿出来,然后构成一条链,剩下的往这条链上挂就行,但是挂的时候要注意,优先往最头上的两个点挂,因为这样可以扩大直径,然后搞一搞就好

QWQ
(其实是强行凑博客文章数目)

记得特判一下只有一个度数大于1,或者没有的情况啊!

#include
#include
#include
#include
#include
#include
#define mk make_pairusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();} while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}const int maxn = 2010;vector
> ans;vector
v;int a[maxn];int n,m;bool flag=1;vector
v1;int tmp;int ymh;int main(){ n=read(); for (int i=1;i<=n;i++) {// a[i]=read(); if (a[i]>1) v.push_back(i),tmp+=a[i]; } for (int i=1;i<=n;i++) if (a[i]==1) v1.push_back(i); if (v.size()==1) { int pos=0; for (int i=1;i<=n;i++) if (a[i]>1) pos=i; if (tmp>=n-1) { cout<<"YES"<<" "<
<
=2) { ymh+=2; now = 2; ans.push_back(mk(v[0],v1[0])); ans.push_back(mk(v[v.size()-1],v1[1])); a[v[0]]--; a[v[v.size()-1]]--; int i=0; while (i
=2) { cout<<"NO"; } else { cout<<"YES"<<" "<
<

转载于:https://www.cnblogs.com/yimmortal/p/10161886.html

你可能感兴趣的文章
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
gulp
查看>>
pgsql查询优化之模糊查询
查看>>
不变模式
查看>>
20181227 新的目标
查看>>
androidtab
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>
每日一小练——数值自乘递归解
查看>>
qq登陆错误提示
查看>>
bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维 + 二进制
查看>>
没写完,没调完,咕咕咕的代码
查看>>
Android Studio使用技巧:导出jar包
查看>>
Problem E. TeaTree - HDU - 6430 (树的启发式合并)
查看>>