51nod 矩阵无重复元素 V2
来源:互联网 发布:淘宝天下是阿里的吗 编辑:程序博客网 时间:2024/04/29 15:51
传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1026
题解:
其实我并不知道正解是什么,搜索了一晚上没有找到用容斥原理做这道题的方法,思考没有得到结果,可能因为我是正常人吧。
考虑集合分类计数,考虑,将所有的底数
代码:
#include<iostream>#include<cstring>#include<string>#include<cstdio>#define N 1000000#define S 18using namespace std;typedef long long LL; LL ans,m,n,a,b,num,sum,t[N + 5],f[N + 5],g[S + 5][S + 5],l[N + 5],r[N + 5];bool vis[N * S + 5],flag[N + 5];inline void get_g(){ for (int i = 1;i <= S; ++i){ sum = 0; memset(vis,0,sizeof(vis)); for (int j = i;j <= S; ++j){ for (int p = b;p < b + m; ++p) if (!vis[p * j]) { ++sum; vis[p * j] = 1;} g[i][j] = sum; } }}inline void init(){ scanf("%lld%lld%lld%lld",&m,&n,&a,&b); memset(f,0,sizeof(f)); memset(flag,0,sizeof(flag)); for (LL i = 2;i <= N; ++i) if (!flag[i]){ num = 1; for (LL j = i;j <= N;j *= i){ if (j != i) flag[j] = 1; f[j] = num; t[j] = i; ++num; } } get_g(); for (int i = a;i < n + a;++i) if (!l[t[i]]) l[t[i]] = f[i]; for (int i = n + a - 1;i >= a;--i) if (!r[t[i]]) r[t[i]] = f[i]; ans = 0; for (int i = 1;i < n + a; ++i) if (!flag[i]) ans = (ans + g[l[i]][r[i]]); }int main(){ init(); cout<<ans; return 0;}
注意:1.循环变量优势会爆int
2.bool的内存是int 的1/4,不要算错了
0 0
- 51nod 矩阵无重复元素 V2
- 51nod 1024 矩阵中不重复的元素
- 51 NOD 1024 矩阵中不重复的元素(技巧)
- 51nod 1024 矩阵中不重复的元素
- 51NOD 1024 矩阵中不重复的元素
- 51Nod-矩阵中不重复元素的个数
- 51nod-1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- [51nod]矩阵中不重复的元素
- 51Nod 1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- 51nod 1024 矩阵中不重复的元素
- 51NOD 1024 矩阵中不重复的元素
- 51Nod 1024 矩阵中不重复的元素
- 51NOD 1024 矩阵中不重复的元素
- Nginx反向代理Odoo后导致日志中Werkzeug记录的IP地址不正确的问题
- 身份证实名认证
- 使用gson解析json及注意事项
- logstash入门(简单而全面)
- 详解angularjs指令中的replace与transclude参数
- 51nod 矩阵无重复元素 V2
- IO之阻塞与非阻塞比较
- hd 1869 六度分离(最短路 Floyd算法)
- Bilateral Filtering(双边滤波) for SSAO
- Window输出窗口运行时调试信息中没有显示调用的dll情况
- Python环境配置
- vector的使用
- peerconnection_client简单分析
- 总结遇到的错误