摘要: 利用并查集建好图后:不断地求最大匹配、删除匹配边直到最大匹配不够n。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N = 101; 8 bool mp[N]... 阅读全文
posted @ 2015-07-31 20:34 hxy_has_been_used 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 画一个图分析一下就清楚啦,应该优先考虑完成损失最大的作业,因为一天只能完成一门作业,而同时应该倒着从deadline往回找合适的完成时间,因为这样对于别的作业来说,它们有更多的机会被完成。另外,deadline的数据范围也是1000以内。 1 #include 2 #include 3 #inc... 阅读全文
posted @ 2015-07-31 20:00 hxy_has_been_used 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 判断是否存在欧拉(回)路,注意先要用并查集判断图是否连通。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 26; 7 const int M = 1001; 8 int f[N]; 9 in... 阅读全文
posted @ 2015-07-31 19:06 hxy_has_been_used 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 比较基础的线段树,1A。线段树: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 typedef long long ll; 7 const int N = 50001; 8 const int MOD ... 阅读全文
posted @ 2015-07-31 15:24 hxy_has_been_used 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 标准解法应该是线段树,这里提供另一种思路:将“断点”(即被摧毁的村庄)放入stl的容器(我用的是set)中维护,对于每次查询,只要找这个数在哪两个断点之间即可,写起来轻松愉快。 PS:hdu上的数据略坑,同一个村庄可以被摧毁多次,恢复的时候一次恢复就可以让它不再是断点,但是第一次恢复以后剩下几次也是 阅读全文
posted @ 2015-07-31 12:51 hxy_has_been_used 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 和I相比有了单点更新,所以不能只记录一个前缀和,而是要在线段树上多维护一个sum,表示这个结点的区间和,然后其他的就和I一样了。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 5... 阅读全文
posted @ 2015-07-31 08:47 hxy_has_been_used 阅读(178) 评论(0) 推荐(0) 编辑