JNUOJ 1180 - mod5
首先,可以自己先一个超时的标程出来:
- #include<cstdio>
- typedef long long ll;
- ll n,m,cnt;
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- cnt=;
- for(int i=;i<=n;i++)
- {
- for(int j=;j<=m;j++)
- {
- if((i+j)%==) cnt++;
- }
- }
- printf("%lld\n",cnt);
- }
- }
那么考虑如何进行时间优化:
这样一来,原本例如(2 + 3)mod 5 = 0 的情况,我们得到的是 ( i_num = 1 ) * ( j_num = 1 ) = 1,1对( i , j ),
现在就可以使 ( i_num = 2 ) * ( j_num = 3 ) = 6,6对( i , j )
因此可以得到一个优化了时间复杂的算法:
- #include<cstdio>
- #include<cstring>
- typedef long long ll;
- ll n,m,cnt,i_mod5_equal[],j_mod5_equal[];
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%lld%lld",&n,&m);
- cnt=;
- for(int i=;i<=;i++) i_mod5_equal[i]=;
- for(int i=;i<=n;i++) i_mod5_equal[(i%)]++;
- for(int j=;j<=;j++) j_mod5_equal[j]=;
- for(int j=;j<=m;j++) j_mod5_equal[(j%)]++;
- for(int i=;i<=;i++){
- for(int j=;j<=;j++){
- if((i+j)%==) cnt+=i_mod5_equal[i]*j_mod5_equal[j];
- }
- }
- printf("%lld\n",cnt);
- }
- }
显然,这样一个O(n)的算法,依然比较慢,还可以进一步优化:
- #include<cstdio>
- #include<cstring>
- typedef long long ll;
- ll n,m,cnt,i_mod5_equal[],j_mod5_equal[];
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%lld%lld",&n,&m);
- cnt=;
- for(int i=;i<=;i++) i_mod5_equal[i]=n/;
- for(int i=;i<=n%;i++) i_mod5_equal[i]++;
- for(int j=;j<=;j++) j_mod5_equal[j]=m/;
- for(int j=;j<=m%;j++) j_mod5_equal[j]++;
- for(int i=;i<=;i++){
- for(int j=;j<=;j++){
- if((i+j)%==) cnt+=i_mod5_equal[i]*j_mod5_equal[j];
- }
- }
- printf("%lld\n",cnt);
- }
- }
这样就得到了一个O(1)的算法。
两次的时间比较很明显:
JNUOJ 1180 - mod5的更多相关文章
- Flex 1046: 找不到类型,或者它不是编译时常数;1180: 调用的方法 CompPropInfo 可能未定义
导入项目之后一直报这个错误, 1046: 找不到类型,或者它不是编译时常数: 1180: 调用的方法 CompPropInfo 可能未定义 想这应该是没有把当前这个类编译进项目当中,找了半天也没有找到 ...
- timus 1180. Stone Game 解题报告
1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...
- 【BZOJ-2843&1180】极地旅行社&OTOCI Link-Cut-Tree
2843: 极地旅行社 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 323 Solved: 218[Submit][Status][Discuss ...
- Vijos 1180 (树形DP+背包)
题目链接: https://vijos.org/p/1180 题目大意:选课.只有根课选了才能选子课,给定选课数m, 问最大学分多少. 解题思路: 树形背包.cost=1. 且有个虚根0,取这个虚根也 ...
- HDU 1180 (BFS搜索)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1180 题目大意:迷宫中有一堆楼梯,楼梯横竖变化.这些楼梯在奇数时间会变成相反状态,通过楼梯会顺便到达 ...
- 【BZOJ】1180: [CROATIAN2009]OTOCI & 2843: 极地旅行社(lct)
http://www.lydsy.com/JudgeOnline/problem.php?id=1180 今天状态怎么这么不好..................................... ...
- hdu - 1180 诡异的楼梯 (bfs+优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...
- ural 1180 Stone Game
http://acm.timus.ru/problem.aspx?space=1&num=1180 #include <cstdio> #include <cstring&g ...
- URAL 1180. Stone Game (博弈 + 规律)
1180. Stone Game Time limit: 1.0 second Memory limit: 64 MB Two Nikifors play a funny game. There is ...
随机推荐
- Disconf (version : 2.6.21)
通常我们会做如下配置:(disconf 2.6.21) <!-- 一次扫描 --> <bean id="disconfMgrBean" class="c ...
- iOS 图片剪切和压缩的几个方法
// 图片剪切 - (UIImage*)clipImageWithImage:(UIImage*)image inRect:(CGRect)rect { CGImageRef imageRef ...
- java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available
好久没有使用MyEclipse10了,今天打开看了以前大学的项目,在Tomcat7中发布启动,我嚓嘞,报错: SEVERE: Exception initializing random number ...
- QT——信号槽
结合教程,写出如下关于信号槽的代码,将教程中信号槽两种方式写入同一个界面中. #include "mainwindow.h" #include <QApplication&g ...
- 【Linux】python 2.x 升级 python3.x 之后 yum命令出现except OSError, e: ^ SyntaxError: invalid syntax
python2.7升级到python3.6.4 文章链接 : https://zhuanlan.zhihu.com/p/33660059 我在服务器上.把linux默认安装的python2.7 升级 ...
- 【cs229-Lecture9】经验风险最小化
写在前面:机器学习的目标是从训练集中得到一个模型,使之能对测试集进行分类,这里,训练集和测试集都是分布D的样本.而我们会设定一个训练误差来表示测试集的拟合程度(训练误差),虽然训练误差具有一定的参考价 ...
- python基础---->python的使用(六)
这里记录一下python中关于class类的一些知识.不解释就弄不懂的事,就意味着怎样解释也弄不懂. python中的类知识 一.class的属性引用与实例 class MyClass(): '''A ...
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...
- Android.mk(4) 依赖:目标编程的模式
https://www.jianshu.com/p/3777a585a8d0 另一种范式 我一直觉得,Makefile确实是C/C++程序员的良配,因为Makefile所使用的两种范式都是C/C++程 ...
- router之switch
比较路由中有无switch的区别: 代码一: <Router history={history}> <Route exact path="/" component ...