摘要: 读完题目就知道要使用容斥原理做!下面用的是二进制实现的容斥原理,详见:http://www.cnblogs.com/xin-hua/p/3213050.html代码如下:#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)#define MAX 50000using namespace std;double an[22];double solve(int n){ int i,j; double ans=0.0; for(i=1;i>n){ ... 阅读全文
posted @ 2013-08-01 16:12 _随心所欲_ 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 有5个数列,将第一,二列合并去重得到s1,再将第三,四列合并去重得到s2,这样就剩下3列了。然后将s1,s2排序,枚举第5列,每次用x指向s1的头,y指向s2的尾,当取出的3个和恰好为0则退出;大于0时y--;否则x++!代码如下:#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)#define MAX 50000using namespace std;ll a[202],b[202],c[40002],d[40002];vectors1,s2;int m 阅读全文
posted @ 2013-08-01 14:59 _随心所欲_ 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 将每一个数分解质因数,得到每个质因数出现的次数(和质数本身没有关系),然后就要用到容斥原理了,也就是将每个质数出现的次数放到n个容器中去,这里要注意下1的情况也就是某个容器里面没有放数。这样结果=总的方案数-有一个容器没放数+有2个容器没有放数……将m个数放入n个容器的方法数有C(n+m-1,n-1)!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define SIZE 10241 阅读全文
posted @ 2013-08-01 09:39 _随心所欲_ 阅读(422) 评论(0) 推荐(0) 编辑