摘要: 10.7更新:见最下面 离NOIP2018没剩多长时间了,我突然发现我连对拍还不会,于是赶紧到网上找资料,找了半天发现了一个特别妙的程序,用c++写的! 不过先讲讲随机数据生成吧。 很简单,就是写一个程序模拟输入数据,然后利用rand()编写随机数。 在头文件cstdlib中,有rand(), sr 阅读全文
posted @ 2018-08-27 21:53 mrclr 阅读(2435) 评论(1) 推荐(2) 编辑
摘要: 嘟嘟嘟 这题还是比较水的。首先O(n2)模拟显然过不了,那就换一种思路,考虑每一个数对答案的贡献,显然一个数a[i]会对后面的a[i] * 2, a[i] * 3,a[i] * 4……都贡献1,。那么就想线性求因数个数一样,对于每一个a[i],都计算出对能被他整出的数的贡献。 1 #include< 阅读全文
posted @ 2018-08-27 17:59 mrclr 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 考虑建图:如果A喜欢B,那么从A 到B就有一条边。有因为牛之间的喜爱关系有传递性,所以如果途中存在一个环的话,那就说明这个环中的任意一头牛都会被喜爱。那么自然可以想到用tarjan缩点来简化图。这样在一个DAG中,会发现被该联通块喜爱的牛一定是没有出边的。因为这张图可能不连通,所以还有记录这 阅读全文
posted @ 2018-08-27 17:33 mrclr 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 遇到这种判断相等或不等的题,一般都能想到并查集。 我的做法是如果遇到两个数相等就将这两个数所在集合合并,不等就存下来。带输入完后,在验证不等的数,如果他们相等或是在同一个集合中,说明和前面的描述矛盾,因此是不可满足的;若是直到最后都可以满足,那么这些问题可以同时满足。 数据较大,因此用一个m 阅读全文
posted @ 2018-08-27 15:44 mrclr 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 树剖自然可解,就是一道板子题,而且这道题还只问到根节点的距离是多少,而不是树上任意两点距离,就更方便了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cs 阅读全文
posted @ 2018-08-27 09:39 mrclr 阅读(167) 评论(0) 推荐(0) 编辑