07 2019 档案

摘要:【分析】 暴力搜顺子,贪心出散牌 为什么顺子要暴力? 玩过斗地主的都知道,并不是出越长的顺子越好,如果你有一组手牌, ,你一下把最长的出了去,你会单两张牌,不如出两个顺子,所以顺子要暴力。 贪心打散牌 这是核心所在,也是不超时的原因。 可以先统计一下不同牌个数的组数,然后再出牌, 那如何打出最优解? 阅读全文
posted @ 2019-07-06 20:40 hulean 阅读(295) 评论(0) 推荐(0)
摘要:【思路】 题目给出一棵树。第$i$步拆的一定是第$i$层与第$i+1$层之间的连边,否则不是最优(自行证明即可),所以可以暴力枚举每一次拆哪一个节点与上一个节点的连边。 把所有节点所在的层数存下来,一号点在第$1$层,枚举每一层的每个节点(由于$1$号节点已经被感染,从第二层开始搜索就可以了) 大概 阅读全文
posted @ 2019-07-06 20:39 hulean 阅读(626) 评论(0) 推荐(0)
摘要:概念 首先是最近公共祖先的概念(什么是最近公共祖先?): 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。 换句话说,就是两个点在这棵树上距离最近的公共祖先节点。 所以LCA主要是用来处理当两个点仅有唯一一条确定的最短路径时的路 阅读全文
posted @ 2019-07-06 20:36 hulean 阅读(34237) 评论(4) 推荐(49)
摘要:题目描述 物流公司要把一批货物从码头$A$运到码头$B$。由于货物量比较大,需要$n$天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够 阅读全文
posted @ 2019-07-04 16:16 hulean 阅读(318) 评论(0) 推荐(0)
摘要:【题意】 在一个赛车比赛中,赛道有$n(n\text{开启时间}$,说明此道路 关闭 ,反之此道路 开启 (自己想一想,应该能相通的) 【代码】 细节上面已经说的很清楚了 ~~(也方便进行复制)~~,就不加注释了 cpp include using namespace std; const int 阅读全文
posted @ 2019-07-04 16:15 hulean 阅读(290) 评论(0) 推荐(0)
摘要:本题看似很难,实际上思路非常简单——如果你想通了。 首先有一个问题:图中有几个点?大部分的人会回答$n$个点。错了,有$n+1$个。 多出来的那个点在哪?关键在于你要理解每一个决策的意义。实际上,多出来的那个点是地下的天然矿泉水。当我们打井时,我们实际上是在往地下连边。理解了这一点,代码就没有任何难 阅读全文
posted @ 2019-07-03 19:56 hulean 阅读(137) 评论(0) 推荐(0)
摘要:【题意】 补丁在修正$BUG$时,有时也会引入新的$BUG$,假定有$n(n<=20)$个潜在$BUG$,和$m(m<=100)$个补丁,每个补丁用两个长度为$n$的字符串表示,其中字符串的每个位置表示一个$BUG$,第一个串表示打补丁之前的状态 (“-”表示该$BUG$必须不存在,“+”表示该补丁 阅读全文
posted @ 2019-07-03 19:56 hulean 阅读(459) 评论(0) 推荐(1)
摘要:【题意】 如果两个人互相打电话(直接或者间接),则说他们在同一个电话圈里。例如,$a$打给$b$,$b$打给$c$,$c$打给$d$,$d$打给$a$,则这四个人在同一个圈里;如果$e$打给$f$,而$f$不打给$e$,则不能推出$e$和$f$在同一个电话圈。输入$n(n≤25)$个人的$m$次电话 阅读全文
posted @ 2019-07-03 19:55 hulean 阅读(289) 评论(0) 推荐(0)
摘要:【题意】 输入一个$C$个点$S$条边 $(Cj k``使得 的总长度等于 与``k j k``, 和``k j i j``的最短路径。把刚才推理中“之和”与“取最小值”换成“取最小值”和“取最大值”,推理仍然适用 【代码】 cpp include using namespace std; int 阅读全文
posted @ 2019-07-03 19:54 hulean 阅读(483) 评论(0) 推荐(1)
摘要:【题意】 给出一个$n(n using namespace std; const int MAXN=100+10; const int MAXM=10000+10; int n,m; int fa[MAXN]; int maxn,ans=0x3f3f3f3f; struct Node { int u 阅读全文
posted @ 2019-07-02 20:40 hulean 阅读(193) 评论(0) 推荐(0)
摘要:【题意】 平面上有$n(n using namespace std; const int MAXN=1000+10; const int MAXM=MAXN MAXN; int n,q,T,ans=0x3f3f3f3f; int s[10][MAXN]; int c[10]; struct Node 阅读全文
posted @ 2019-07-02 20:40 hulean 阅读(239) 评论(0) 推荐(0)
摘要:名词解释 ·(点的)度:对于无向图,和某个点相连的边条数 ·入度:对于有向图,终点是该点的边条数 ·出度:对于有向图,起点是该点的边条数 ·(两点间)路径:从起点点依次沿着边移动到下一个点,直到终点所经过的点和/或边若未有向图要求只能从边的起点移动到边的终点 ·圈:从一个点出发到自己的路径,常常被称 阅读全文
posted @ 2019-07-02 20:39 hulean 阅读(457) 评论(0) 推荐(0)
摘要:若图片出问题请转至 "[这儿]" 前置技能: "tarjan求强连通分量" 缩点 。 顾名思义,就是在图论算法中将一些点缩成一个点的一种算法。 应用 貌似明白了,但是这有什么用呢? 我们经常求最短路,但是如果我们要求最长路呢? 标准问法: 给你一张有向图,每个点都有一个点权(不是边权了哦),且每一个 阅读全文
posted @ 2019-07-02 20:37 hulean 阅读(4457) 评论(0) 推荐(3)
摘要:图论 tarjan缩点+最短路 的一道题 tarjan求强连通分量(为以后缩点打下良好的基础) (如果不会tarjan的请点击 "这儿" ) 所以... 在所有有酒馆的节点中选一个最大值输出就好了 cpp for(int i=1;i using namespace std; const int MA 阅读全文
posted @ 2019-07-02 12:47 hulean 阅读(278) 评论(1) 推荐(1)