B Cat VS Dog
这题HDU上2728貌似是原题,坑爹啊
比赛时候还是想了好一会的,后来发现猫和狗的个数都是坑爹的,根本没用,求最多的人满意,我们只要关注人和人的关系就行了
如果i和j冲突,即要么i喜欢的是j不喜欢的,要么j喜欢的是i不喜欢的,那么连边i->j,j->i
然后求一个二分图的最小点覆盖或者最大独立集就行,答案再除个2
根据题意,一个人喜欢的动物和不喜欢的动物是不同种类的,这样冲突关系的图(无向)肯定是个二分图
E Earth Hour
这个题一开始以为是个几何题,后来想了想还是个图论题
模型是这样子的,如果两个圆可以相交或相切,那么这两个圆代表的点之间连一条无向边
然后要求用最少的点,即最少的边数加1,使得点1点2点3相连
标准做法是分别以1,2,3为源点求最短路,然后枚举分叉点,因为3个点相连,要么是三叉的形状,要么就是一条直线,即三叉退化过来的,现在我们只要枚举分叉点就行
我们的做法是分别以1,2,3为根,bfs构造一棵树,然后求另外两个点的lca,以这个lca做为分叉点,wa到4点多钟才想到反例
F YY‘s New Problem
这个题太坑爹了,暴力N^2的做法居然可以卡过,我一开始就想到了N^2的算法,但是没敢写,后来也没看别人跑了多久,如果看了的话可能还会试下暴力做法,就水过去了,太遗憾了
I R(N)
这个表示只会暴力sqrt(n)的算法,直接枚举就行,特判下i*i==n的情况
J Equivalent Sets
强连通分量缩点,然后如果缩成一个点的话,答案是0
否则找出度为0的点的个数x,入度为0的点的个数y,答案是max(x,y),意思大概就是尽量出度为0的向入度为0的两两匹配连边,如果有剩余的则和其他的都不为0的连边
今天的比赛还是暴露了一些问题,首先一点,就是查错能力太差,一个是表现在查代码的能力上,另一个表现在检查算法的问题上,不能找到一些tricky的数据或是可以challenge现有算法的数据,比赛时往往跟着感觉走,就不稳定了,也会浪费较多时间或者卡题
还有就是F题的教训,对于N=1000,N^2是不敢写,但是4点多的时候,已经有100多个人过了这个题,是过的第二多的,肯定有其水的地方,应该看看别人跑多少时间的,或许就敢暴力了,依稀记得川大校赛时有人说的一句话:有人过就敢暴!Orz...
今天和队友的交流还是比较好的,E题我提出来模型,他提出了算法,后来又提出可以cha掉算法的数据,而且他一直很投入的想trick,而我则是显得浮躁,后来在一旁没什么贡献,还有,这题枚举分叉点还是比较巧妙的,题目数据不大,枚举往往可以解决一些最优化问题