NOIP2014解方程
题目:求一个n次整系数方程在1-m内的整数解 n<=100 系数<=10000位 m<=100W
题解:最暴力的想法是枚举x,带入求值看是否为0.
这样涉及到高精度乘高精度,高精度乘单精度,高精度加高精度和高精度减高精度。
复杂度 n*m*len*len ,显然只能过30%的数据
让我们考虑优化:
我们先来研究一下这个算法的主要耗时在哪里
1)将x带入方程左边求值
2)选择多少x带入
我们考虑第一个优化
1)秦九韶算法
只要我们把原方程左边化为 ((An*x+An-1)*x+An-2)*x+An-3+.....A0
我们发现这样就不用写高精乘高精了。复杂度下降一个len 大概可以得到50分
第二个优化
2)去除冗余
我们发现直接代值是复杂度相当高的,即使用了秦九韶算法复杂度也是 n*len,1s的时限仅供我们尝试100个x是否为该方程的解。
让我们先筛去显然不可能是方程的解的数。
我们发现0的一个特征就是模任何一个数都是0,但我们多模几个质数是否能一定保证该数为0呢?当然不行。
那模谁呢?x。
显然,左边 mod x=A0 mod x ,所以A0 mod x=0
也就是说x一定是A0的约数! (搞数竞的应该看题就想到了吧233)
然后我们的算法来了:
枚举1-m的每个数i,先判断它是不是A0的约数,这只要类似于高精除单精扫一遍就行了,如果不是,那么显然 2*i,3*i,……都不会是A0的约数,我们类似筛法筛掉这些
如果是的话,带入求值判断是否为0.
当然如果A0=0的话,该方程的一个解是0,然后其余的解都满足 A1+A2*x^1+A3*x^2+……An*x^n-1=0,我们试A1即可。
当然,到这里,算法的复杂度还是不好估计,不过是不可能达到n*m*len的上界的,应该有很大一部分被剪掉了。
如果还需要优化的话,压4位是个不错的选择。
当然,我在考场上并没有想到第二个优化。但我确实想到了mod x,但忽略了 A0这一项,认为显然左边 mod x=0,然后。。。这也是本次noip最大的一个遗憾吧。
当然,上述只是我考后的一个想法,能不能拿到满分我也不清楚。
如果神犇们发现还有什么可以优化的方法或者其它更好的方法,请指出,谢谢。
UPD:TAT 为何看到有人说只模一个质数就能100了。。。我是sb?想了这么多。。。知道真相的我眼泪掉下来。。。
UPD:发现我果真是sb,100W内的素数大约有7W+,然后。。。请大家无视上面的话吧T_T(貌似压位可以搞?)
NOIP2014解方程的更多相关文章
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- BZOJ 3751: [NOIP2014]解方程 数学
3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- [BZOJ3751] [NOIP2014] 解方程 (数学)
Description 已知多项式方程:$a_0+a_1*x+a_2*x^2+...+a_n*x^n=0$ 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m ...
- bzoj 3751: [NOIP2014]解方程
Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
随机推荐
- c# 格式化百分比
代码示例: <%#Eval("total").ToString() == "0" ? "00.00%" : (Convert.ToDe ...
- css hack 大全
各个浏览器的css hack区别属性: IE6: _zoom:1; IE6/7: *zoom:1; IE6/7/8/9 :\9 各个浏览器的css hack区别规则 IE6: *html{} IE7: ...
- CSS自动控制图片大小的代码
img { max-width: 800px; height: auto; } 代码中的max-width:800px限制图片的最大宽度为800像素,而下面的hight:auto很关键,可以保证图片有 ...
- phpMyAdmin教程 之 创建新用户/导入/导出数据库
盗用了被人的教程. 需要看就点击进去吧.复制过来实在是过意不去 http://www.wpdaxue.com/phpmyadmin-import-export-database.html
- C#调用ActiveX控件
背景:最近项目中需要用到ActiveX控件,项目是在.Net平台下开发的.因此就直接在项目中添加了对ActiveX控件的引用,添加引用成功.在代码中实例化类的实例也没有问题,但在调用其方法或属性时总是 ...
- .net 对配置文件内容的操作
配置文件分为两种 :一种是winform应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会时时更新, 应用程序的配置文件不会实时更新. 更新应用程序的配 ...
- sass学习--什么是sass
1.预备知识--什么是 CSS 预处理器 CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这 ...
- php接口开发--复制缩减Codeigniter的车轮
接口需求: 输出json 单一入口 安全 http://segmentfault.com/q/1010000000143852基于token验证?session? 缓存 session cookie ...
- 帝国cms7.0设置标题图片(缺失状态下)
有时候因为我们没有设置标题图片,程序就会是使用自己的标题图片,这就是问题所在,现在有2个办法解决这个问题, [1]直接替换调程序的标签图片,但是这样的方法虽然简单,但是图片大小固定,要是每个模版的图片 ...
- 2016030101 - ubuntu15.1上安装git客户端
使用ubutun15.1安装git客户端. 根据git官网提示内容(参考http://git-scm.com/download/linux) 1.使用命令:sudo apt-get install g ...