![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构造
Love_xyh
这个作者很懒,什么都没留下…
展开
-
CF1092E Minimal Diameter Forest
和CF455C Civilization貌似挺像。 我们求出每棵树的直径和中点,找到直径最大的树后,将别的树的中点与直径最大的树的中点相连,即可完成构造。 #include <bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,u,v,ans,p,mid,pos; int f[N]; bool vis[N],jay; int cnt,head[N]; struct edge{int next,to;}e[N<<原创 2020-09-28 23:50:34 · 290 阅读 · 0 评论 -
CF1373E Sum of Digits
网上的好多题解没有看懂,题解中的一些"显然"的结论也觉得完全不显然… 我们如果枚举这个数列的第一个数字的个位,那么,如果存在这个数列的话,是一定可以构造出这个数列的。(因为k<=9,所以数列长度<=10,最多只会进位一次) 1.当这个数列不存在进位的时候,且第一个数的最后一位为now时,就可以表示为:a+now,a+now+1,a+now+2, … ,a+now+k。(其中,因为不进位,所以now+k<=9,而a则表示他们相同的 最高位到十位) 对于这种情况,知道now,k和n后,就能够求原创 2020-09-13 04:45:40 · 238 阅读 · 2 评论 -
CF1385E Directing Edges
胡编乱造的定理一:给定一个无向图,对边标记方向,则一定可以有方法使得图中无环。 当时想到的做法是:先将有向边进行拓扑排序,根据定理一,如果此时出现环那么就puts(“NO”),否则就根据之前拓扑排序得到的拓扑序,由小到大连边。因为我们知道,DAG中均是由拓扑序小的点连向拓扑序大的点。 按照拓扑序的大小,对无向图标记方向,貌似之前已经做到过一次了。希望下次类似的题能想到这个方法吧。 #include <bits/stdc++.h> using namespace std; const int N=原创 2020-09-08 02:30:21 · 114 阅读 · 0 评论 -
CF1296F Berland Beauty
利用贪心的思想进行构造,然后检验。 注意到在一棵树中,一个节点最多只有一个根节点,所以可以把边权转化为点权来存储:一个点与它父节点之间的边的权值,存储在它的身上即可。 5000的数据就是用来暴力跳lca的。 #include <bits/stdc++.h> using namespace std; const int N=5e3+5; int n,u[N],v[N],m,now; in...原创 2020-02-10 23:59:35 · 183 阅读 · 0 评论 -
BZOJ 2079: [POI2010]GIL-Guilds
给定一张图,让对这张图进行染色,可以染黑,白,灰三种颜色。 要求: 1.黑点旁必须有一个白点; 2.白点旁必须有一个黑点; 3.灰点旁必须有一个白点,一个黑点。 问,是否能够染色成功。 显然,灰点是没有用的,并且,只要没有单独的一个点,那么就一定能成功,所以在特判有没有单独的一个点后,就成了一道简单构造题。O(n+e)的简单dfs即可。 #include <bits/stdc++.h>...原创 2019-12-29 13:36:39 · 138 阅读 · 0 评论