摘要: 最近学习容斥原理,实现容斥原理大致有三种方法:dfs,队列数组,二进制。今天主要讲下二进制实现容斥原理: 有一个集合{A1……An},求集合的子集?很显然答案为也就是2^n个,也就是每一个子集有唯一标志符 i (0 2 #include 3 #include 4 #include 5 #includ... 阅读全文
posted @ 2013-07-24 21:57 _随心所欲_ 阅读(1735) 评论(2) 推荐(1) 编辑
摘要: 水题,注意不要去掉前导0……#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;char an[100005];int m;int fun(){ int sum=0,i; for(i=0;i9) { t=(an[i]-'0')/10; an[i]=(an[i]-'0')%10+'0'; } else t=0; } if(t!=0) an[m++]=t+'0' 阅读全文
posted @ 2013-07-24 18:59 _随心所欲_ 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 这题主要是推公式……#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;ll mod=1000000007;ll pows(ll a,ll b){ ll ans=1; while(b) { if(b&1) ans=(ans*a)%mod; b>>=1; a=(a*a)%mod; } return ans;}int main(){ int t; ll ans,n,k,m; cin>>t; 阅读全文
posted @ 2013-07-24 18:58 _随心所欲_ 阅读(148) 评论(0) 推荐(0) 编辑
摘要: #include#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;int gcd(int a,int b){ int t; if(a>t; while(t--) { cin>>an; len=an.length(); pos2=an.find('(',0); pos3=an.find(')',pos2); if(pos2<0) { a=0; for(i=2;i& 阅读全文
posted @ 2013-07-24 18:17 _随心所欲_ 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 这题枚举k节省时间#include#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)using namespace std;int an[9],n,m,x,k,dp[102][102];bool vis[9];void dfs(int d,int num){ int i,temp; if(d==n) { for(i=1;inum) dp[i][temp]=num; return ; } for(i=0;i<n;i++) { if(vis[i]==0) 阅读全文
posted @ 2013-07-24 12:01 _随心所欲_ 阅读(130) 评论(0) 推荐(0) 编辑