图论
a10.
这个作者很懒,什么都没留下…
展开
-
AtCoder Regular Contest 084
题目我们考虑如何搜索。很明显,我们以1为起步变成其他数字有两种方法,分别是x+1和x10,x+1是变新数字不进位的方案,进位的时候,我们为什么不从某一个状态10呢?大概思路有了,然后我们要做的就是把状态压缩到k以内,我们可以考虑对每一个x对k取模,为什么可以这么做呢,既然我们只有+和*两种方案,超过k的时候必须要从比k小的状态转移过来,取模并不影响答案,就这么做可以了。#include<cstdio>#include<algorithm>#include<iostrea原创 2021-11-02 00:11:52 · 152 阅读 · 0 评论 -
atcoder regular 111 B
题目可以把这题,每张牌的两个颜色看作图的两个端点(一个颜色一个端点),然后每次取一种颜色,其实就是每条边只能取一个结点,问最后最多能取几个结点。我们可以发现,只要图的连通块,存在一个环,那么这个连通块所有结点都能选上。树的话就只能取n-1个,因为每条边只能选一个结点吗。所以只需要找出所有连通块,对边数和结点数取min就可以了。#include<cstdio>#include<algorithm>#include<iostream>#include<cstr原创 2021-10-09 10:43:39 · 117 阅读 · 0 评论 -
codeforces 660 div2 D
题目好妙,可以用拓扑排序去做。首先我们要明白,我们先统计正数的,再去统计负数,这么做是最优的。正数的话,加上去另个一个数,一定会使得答案更优,而且题目说保证不会成环,所以拓扑排序是可以的。然后我们对负数的处理就是,按照拓扑序逆序处理。因为负数无论加到哪里,都会使得答案变差,按照拓扑序逆序,可以防止负数加到另一个数,具体细节看代码吧。#include<cstdio>#include<algorithm>#include<iostream>#include<原创 2020-07-31 19:24:01 · 126 阅读 · 0 评论 -
hdu 6667
题目这道题我们可以每个班的人和茶都拆分成一个个人和一杯杯茶,然后每个人和其他班的茶连边,求最大匹配,求二分图最大匹配我们想到匈牙利,但在这里数据太大跑不了。然后就可以上这个公式了。虽然看起来是直接套公式就可以了,但毕竟∣S∣|S|∣S∣是子集,还是不容易的,那怎么做呢?那就分类讨论吧。翻译第一句,当S′S'S′为空集,答案就为∣U∣|U|∣U∣,这个怎么理解呢?我们所有学生都能分配到一杯茶,这个情况就成立了。翻译第二句,当所有学生都来自同一个班级,那么∣S∣|S|∣S∣就是全体学生,后面那个就原创 2020-07-23 09:31:48 · 126 阅读 · 0 评论