摘要:
B: 二分图的染色应用。 首先,注意题目的信息。 每个人最多有三个认识的人。 那么,我们可以思考,当有三个人和一个人连边时。 如果有两个人和他同色,一个人不同色。 那么将这个人反转,就变成了,一个人和他同色,两个人不同色。 那么可以发现,对于每一个人,翻转后可以减少同色的数量。 可以证明,必定存在解 阅读全文
摘要:
最近太迷茫了,一直在思考ACM的意义是什么。 在知乎上看到了一句话特别好。 ACM教会我的,是: 坚定,敬畏和自知。 问了一位好友,他说如果不打ACM的话,他都不知道他能干什么了。 突然明白,其实我并不是在意获得的奖项和ACM带来的. 我只是想享受这个过程而已。 不是我的起点,也不是我的终点。 所以 阅读全文
摘要:
可以发现,对于从右开始的操作。 可以看成从左边某个点开始不断向右加b的操作。 那么显然可以发现左边开始的点为n%b+1. 那么我们找到a,b第一次遇到的情况。这时是第一个左右手都有糖的人。 那么我们又可以发现,从这点开始,他们俩下次遇到的情况,显然是+lcm(a,b). 即从这点开始每隔lcm(a, 阅读全文
摘要:
A: 数位dp。dp[i]表示从小到大第i位时的贡献。可以发现。当第i位为7时。它的贡献即为(i+1~n)*10.即70.71,72,73,74,75,76,77,78,79.对于每一位都有10个数。0~10有10个.0~100有100个.所以可以预处理出这个数。显然可以发现,当该位没有到达上界时, 阅读全文
摘要:
C: 显然步数只存在0,1,2,3,-1的情况。随便画画就能明白.对于0的情况,显然是(0,0).对于1的情况,显然为该点在(0,0)和某点的连线上。这里可以用斜率来判断。 还有就是如果斜率的个数 <= 1,说明无法完成,这里需要在下面的情况之前特判。对于2的情况。当n > 3时。都可以2步。 对于 阅读全文
摘要:
思路: 显然那个集合点肯定是某两个点的LCA。 因为到LCA,两个点走的距离不会重叠。另外一点到LCA也没有重叠。 那么直接枚举LCA判断就行。 这里时间卡的很紧。 于是:链式向前星存图,倍增常数优化,卡卡常。 Code: #include<bits/stdc++.h> using namespac 阅读全文
摘要:
D: 思路:模拟. 因为n的数量比较小。所以可以去模拟这个操作. 每次给最小的加上n-1,其他的减去1.当a[1] < 0时说明不合法. 当a[1] = a[n]时说明可以实现。 因为a[n]的值在[0,1000],所以很明显这个模拟次数最多1000次. 当1000次还没退出时说明在这之前肯定出现过 阅读全文
摘要:
题意:对于题意可以分解为. 有n个点,由n-1条白色的边连接,同时又有着m条边. 因为这里说到了白色的边都不重复也不缠绕,显然是n-1条边构成树边. 然后有m条非树边。然后问我们删去一条树边和一条非树边使树分为两部分。这条边完全断开. 思路: 我们可以从每条树边出发。 对于每条树边。 如果没有非树边 阅读全文
摘要:
C: 思路: 观察表可以发下,路径权值和最小的走法为一直向右然后一直向下。 最大的走法为一直向下然后一直向右。(因为权值是斜向下递增) 从下面图片可见,当我们将向右走的操作改成向下走,就可以让总的权值增加1.且发现最大值和最小值之间的数都能得到. 那么显然ans = max-min+1. 如果直接暴 阅读全文