小a的旅行计划(BM模板)
题目链接:https://ac.nowcoder.com/acm/contest/223/B
题目大意:
1 #include<bits/stdc++.h> 2 using namespace std; 3 # define ll long long 4 const int maxn = 2e5 + 100; 5 const int N = 100; 6 ll n; 7 map<vector<ll>,bool>vis; 8 map<pair<vector<ll>,vector<ll>>,bool >vis2; 9 map<int,int>bao; 10 bool judge(vector<ll>q1,vector<ll>q2) 11 { 12 int flag=1; 13 if(q1==q2) 14 return false; 15 bao.clear(); 16 for(int i=0; i<q1.size(); i++) 17 { 18 bao[q1[i]]=1; 19 } 20 for(int i=0; i<q1.size(); i++) 21 { 22 for(int j=0; j<q2.size(); j++) 23 { 24 if(q1[i]==q2[j]) 25 { 26 flag=0; 27 break; 28 } 29 } 30 if(!flag) 31 break; 32 } 33 if(flag) 34 return false; 35 int num=0; 36 for(int i=0; i<q2.size(); i++) 37 { 38 if(bao[q2[i]]) 39 num++; 40 } 41 if(num==q2.size()) 42 return false; 43 bao.clear(); 44 for(int i=0; i<q2.size(); i++) 45 { 46 bao[q2[i]]=1; 47 } 48 num=0; 49 for(int i=0; i<q1.size(); i++) 50 { 51 if(bao[q1[i]]) 52 num++; 53 } 54 if(num==q1.size()) 55 return false; 56 return true; 57 } 58 vector<ll>q1; 59 vector<ll>q2; 60 bool check(ll tmp1,ll tmp2) 61 { 62 q1.clear(); 63 q2.clear(); 64 for(ll i=0; i<n; i++) 65 { 66 if((1ll<<i)&tmp1) 67 q1.push_back(i); 68 } 69 for(ll i=0; i<n; i++) 70 { 71 if((1ll<<i)&tmp2) 72 q2.push_back(i); 73 } 74 sort(q1.begin(),q1.end()); 75 sort(q2.begin(),q2.end()); 76 if(judge(q1,q2)) 77 return true; 78 return false; 79 } 80 ll cal(ll n) 81 { 82 ll maxstate=(1ll<<n)-1; 83 ll sum=0; 84 for(ll i=0; i<=maxstate; i++) 85 { 86 for(ll j=0; j<=maxstate; j++) 87 { 88 if(check(i,j)&&vis2[make_pair(q1,q2)]==0) 89 { 90 vis2[make_pair(q1,q2)]=1; 91 vis2[make_pair(q2,q1)]=1; 92 sum++; 93 } 94 } 95 } 96 return sum; 97 } 98 int main() 99 { 100 // freopen("hqx.out","w",stdout); 101 //scanf("%d",&n); 102 for(ll i=1; i<=10; i++) 103 { 104 n=i; 105 vis.clear(); 106 vis2.clear(); 107 printf("%lld ",cal(n)); 108 } 109 110 return 0; 111 }
很黄,很暴力
BM模板:
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 #define rep(i,a,n) for (long long i=a;i<n;i++) 5 #define per(i,a,n) for (long long i=n-1;i>=a;i--) 6 #define pb push_back 7 #define mp make_pair 8 #define all(x) (x).begin(),(x).end() 9 #define fi first 10 #define se second 11 #define SZ(x) ((long long)(x).size()) 12 typedef vector<long long> VI; 13 typedef long long ll; 14 typedef pair<long long,long long> PII; 15 const ll mod=1e8+7; 16 ll powmod(ll a,ll b) 17 { 18 ll res=1; 19 a%=mod; 20 assert(b>=0); 21 for(; b; b>>=1) 22 { 23 if(b&1) 24 res=res*a%mod; 25 a=a*a%mod; 26 } 27 return res; 28 } 29 // head 30 31 long long _,n; 32 namespace linear_seq 33 { 34 const long long N=10010; 35 ll res[N],base[N],_c[N],_md[N]; 36 37 vector<long long> Md; 38 void mul(ll *a,ll *b,long long k) 39 { 40 rep(i,0,k+k) _c[i]=0; 41 rep(i,0,k) if (a[i]) 42 rep(j,0,k) 43 _c[i+j]=(_c[i+j]+a[i]*b[j])%mod; 44 for (long long i=k+k-1; i>=k; i--) 45 if (_c[i]) 46 rep(j,0,SZ(Md)) _c[i-k+Md[j]]=(_c[i-k+Md[j]]-_c[i]*_md[Md[j]])%mod; 47 rep(i,0,k) a[i]=_c[i]; 48 } 49 long long solve(ll n,VI a,VI b) 50 { 51 // a 系数 b 初值 b[n+1]=a[0]*b[n]+... 52 // printf("%d\n",SZ(b)); 53 ll ans=0,pnt=0; 54 long long k=SZ(a); 55 assert(SZ(a)==SZ(b)); 56 rep(i,0,k) _md[k-1-i]=-a[i]; 57 _md[k]=1; 58 Md.clear(); 59 rep(i,0,k) if (_md[i]!=0) 60 Md.push_back(i); 61 rep(i,0,k) res[i]=base[i]=0; 62 res[0]=1; 63 while ((1ll<<pnt)<=n) 64 pnt++; 65 for (long long p=pnt; p>=0; p--) 66 { 67 mul(res,res,k); 68 if ((n>>p)&1) 69 { 70 for (long long i=k-1; i>=0; i--) 71 res[i+1]=res[i]; 72 res[0]=0; 73 rep(j,0,SZ(Md)) res[Md[j]]=(res[Md[j]]-res[k]*_md[Md[j]])%mod; 74 } 75 } 76 rep(i,0,k) ans=(ans+res[i]*b[i])%mod; 77 if (ans<0) 78 ans+=mod; 79 return ans; 80 } 81 VI BM(VI s) 82 { 83 VI C(1,1),B(1,1); 84 long long L=0,m=1,b=1; 85 rep(n,0,SZ(s)) 86 { 87 ll d=0; 88 rep(i,0,L+1) d=(d+(ll)C[i]*s[n-i])%mod; 89 if (d==0) 90 ++m; 91 else if (2*L<=n) 92 { 93 VI T=C; 94 ll c=mod-d*powmod(b,mod-2)%mod; 95 while (SZ(C)<SZ(B)+m) 96 C.pb(0); 97 rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod; 98 L=n+1-L; 99 B=T; 100 b=d; 101 m=1; 102 } 103 else 104 { 105 ll c=mod-d*powmod(b,mod-2)%mod; 106 while (SZ(C)<SZ(B)+m) 107 C.pb(0); 108 rep(i,0,SZ(B)) C[i+m]=(C[i+m]+c*B[i])%mod; 109 ++m; 110 } 111 } 112 return C; 113 } 114 long long gao(VI a,ll n) 115 { 116 VI c=BM(a); 117 c.erase(c.begin()); 118 rep(i,0,SZ(c)) c[i]=(mod-c[i])%mod; 119 return solve(n,c,VI(a.begin(),a.begin()+SZ(c))); 120 } 121 }; 122 123 int main() 124 { 125 scanf("%lld", &n); 126 printf("%lld\n",linear_seq::gao(VI{0,0,3,30,195,1050,5103,23310,102315,437250},n-1)); 127 }
View Code
转载于:https://www.cnblogs.com/letlifestop/p/10836859.html
小a的旅行计划(BM模板)相关推荐
- 牛客ACM赛 B [小a的旅行计划 ]
链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...
- [usOJ5528]小奇的旅行计划
题目 传送门 题目描述 小奇所在的国家一共由nnn个城市和mmm条连接这些城市的双向道路组成. 小奇非常喜欢骑自行车,它常常骑着自行车从一个城市,沿着某些双向道路到达另一个城市. 现在,这个国家要关闭 ...
- 从零开始学微信小程序开发:6 旅行计划调查
小程序对HTML5表单及表单元素进行了封装,提供了丰富的表单组件. 6.1 用form组件收集信息 form(表单)也是前端视图层与后端服务层交互过程中最重要的信息来源. 小程序的form组件具有一些 ...
- 【拓扑排序】【DP】旅行计划(luogu 1137)
旅行计划 luogu 1137 题目大意: 有一堆点,之间连接着一些边(有向),保证无环,现在要求出从任意地方出发到所有点的最长路(出发点不一定相同) 原题: 题目描述 小明要去一个国家旅游.这个国家 ...
- 51nod 1273 旅行计划——思维题
某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市, ...
- 个别化教育计划IEP模板
个别化教育计划IEP模板 一.基本信息 学生姓名: 性 别: 出生日期: 照 片: 年 龄: 障碍类别: 障碍程度: 年 级: 智商(IQ): 家庭住址: 入学时间: 家长 / 监护人信息: 姓 名: ...
- 动态规划+vector解旅行计划问题
动态规划+vector解旅行计划问题 题目描述 小明要去一个国家旅游.这个国家有#N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最 ...
- 微立体个人年终总结计划PPT模板
PPT介绍 一份高质量的PPT模板,可以帮助你在日常的工作里节省时间,还能提高工作效率.去赢得更多机会,今天小编分享一份精美的微立体个人年终总结计划PPT模板 PPT模板名称:微立体个人年终总结计划P ...
- IOS风工作总结计划PPT模板
模板介绍 一份高质量的PPT模板,可以让你在日常的工作中展示自我.脱颖而出.去赢得更多机会,今天小编分享一份精美的IOS风工作总结计划PPT模板 PPT模板名称:IOS风工作总结计划PPT模板,模板编 ...
- 【洛谷】P1137旅行计划
[洛谷]P1137旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市 ...
最新文章
- 计算机视觉系统学习书籍/综述汇总
- BZOJ 3101: N皇后 构造
- Flutter 1.17 | 2020 首个稳定版发布!
- SAP Fiori 应用 My Appointment - Belonging to me, Search by team, Search by group
- PDH光端机常见故障问题解决方法
- Java移位操作小测试
- iPhone Instruments工具使用_检测内存泄露(转)
- 一个优秀的 Node.js 开发者
- 送给创业的朋友:落入坑洞的猎人
- HeadFirstJava——6_Java API
- smartsvn 忽略文件夹_SmartSVN设置忽略文件类型设置上传.a文件
- 淘宝万能抢单exe,含python源码
- The name `AssetDatabase' does not exist in the current context
- userland免root运行linux,UserLAnd(GNU/Linux安装)
- A1、A2、A3、A4纸都是多大尺寸
- eureka服务返回的数据是xml格式
- 【一篇文章告诉你网格策略从理论到实盘的所有内容(python实现)】
- 数据分析---2.数据分析----爬取NBA中国官方网站的球员数据,并分析
- 【Python计量】DID模型构建
- PT2050(TWS 蓝牙耳机二合一触摸 IC)