博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网 牛可乐发红包脱单ACM赛 B题 小a的旅行计划
阅读量:5011 次
发布时间:2019-06-12

本文共 920 字,大约阅读时间需要 3 分钟。

【题解】

  题意其实就是把n个物品分成4个集合,其中三个集合不可以为空(只属于A、只属于B、AB的交),一个集合空或者非空都可以(不属于A也不属于B),问有多少种方案。

  考虑容斥,4个集合都不为空的方案数有4^n-4*3^n+6*2^n-4,3个集合不为空的方案数有3^n-3*2^n+3. 相加就是总的方案数。

  不过题目中认为(A,B)、(B,A)是同一种方案,所以答案要除以二。

1 #include
2 #include
3 #include
4 #define LL long long 5 #define N 200010 6 using namespace std; 7 const LL Mod=1e8+7; 8 LL n; 9 inline LL read(){10 LL k=0,f=1; char c=getchar();11 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();12 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();13 return k*f;14 }15 inline LL pow(int x,LL y){16 LL t=x,ans=1;17 for(;y;y>>=1,t=(t*t)%Mod) if(y&1) ans*=t,ans%=Mod;18 return ans;19 }20 int main(){21 n=read();22 printf("%lld\n",((1ll*pow(4,n)-4*pow(3,n)%Mod+6*pow(2,n)%Mod-4+pow(3,n)-3*pow(2,n)%Mod+3+Mod)%Mod*(Mod+1)/2)%Mod);23 return 0;24 }

 

转载于:https://www.cnblogs.com/DriverLao/p/9897267.html

你可能感兴趣的文章
C# DevExpress TreeList指定KeyFieldName后无法显示该列的问题
查看>>
多条记录的同一字段组合成一个字符串 FOR XML PATH
查看>>
APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
查看>>
剑指Offer面试题33(java版):把数组排成最小的数
查看>>
jquery中的 $(function(){ .. }) 函数
查看>>
奇怪的国家
查看>>
Linux nohup命令详解
查看>>
[MSDN] Using the Windows Azure Storage Services
查看>>
计算回文数
查看>>
MVC中如何选取后台数据展示下拉列表项
查看>>
java 代理的概念与作用
查看>>
get_free_page 和其友
查看>>
REVOKE - 删除访问权限
查看>>
解决UICollectionView的Cell复用引起的布局混乱问题
查看>>
校外实习报告(九)
查看>>
android之android.intent.category.DEFAULT的用途和使用
查看>>
CAGradientLayer 透明渐变注意地方(原创)
查看>>
【OpenSource】--Web Bench 1.5
查看>>
python-1:工欲善其事,必先利其器 安装配置Anaconda x32位 更新后,启动不了,解决方案(亲测)...
查看>>
Linux 命令(二) Linux下查看文件文件内容命令
查看>>