HDU 5139数据离线处理
此题可以找到规律f(n) = 1! * 2! *...*n!, 如果直接打表的话,由于n比较大(10000000),所以会超内存,这时候就要用到离线处理数据,就是先把数据存起来,到最后在暴力一遍求解就行了,代码如下
代码一(超内存):
- #include <stdio.h>
- const long long mod = ;
- const int N = ;
- long long a[N];
- int main()
- {
- a[] = a[] = ;
- for (int i = ; i < N; i++)
- {
- a[i] = a[i - ] * i % mod;
- }
- for (int i = ; i < N; i++)
- {
- a[i] = a[i - ] * a[i] % mod;
- }
- int n;
- while (~scanf("%d", &n))
- {
- printf("%I64d\n", a[n]);
- }
- return ;
- }
代码二(AC)
- #include <stdio.h>
- #include <vector>
- #include <map>
- const long long mod = ;
- using namespace std;
- int main()
- {
- int n;
- vector<int> a;
- map<int, long long> vis;
- while (scanf("%d", &n) != EOF)
- {
- a.push_back(n);
- vis[n] = -;
- }
- long long prep = , nowp, prea = , nowa;
- for (int i = ; i <= ; i++)//离线算法
- {
- nowp = prep * i % mod;//相当于求阶乘
- prep = nowp;
- nowa = nowp * prea % mod;//求n个阶乘的乘积
- prea = nowa;
- if (vis.count(i))
- {
- vis[i] = nowa;
- }
- }
- for (int i = ; i < a.size(); i++)//暴力一遍
- {
- printf("%I64d\n", vis[a[i]]);
- }
- return ;
- }
离线算法确实挺神奇的,要深刻理解才能做题
HDU 5139数据离线处理的更多相关文章
- hdu 5139 数据的离线处理
所谓的数据离线处理,就是将所有的输入数据全部读入后,在进行统一的操作,这样当然有好处,比如让你算好多数的阶层,但是输入的每个数是没有顺序的,其实跟可以线性的解决,但是由于没有顺序的输入,这样处理的话复 ...
- HDU 5139 Formula --离线处理
题意就不说了,求公式. 解法: 稍加推导能够得出 : f(n) = n! * f(n-1) , 即其实是求: ∏(n!) ,盲目地存下来是不行的,这时候看见条件: 数据组数 <= 100000 ...
- HDU5200 数据离线处理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5200 ,数据离线处理. 这是BestCoder Round #36的C题,比赛时自己用线段树做,姿势不 ...
- ODAC(V9.5.15) 学习笔记(十五)数据离线模式
数据离线模式(Disconnected Mode)是指数据库只有在需要的时候才连接,数据的处理放在客户端内存缓冲区中完成.这样做最大的好处是减少了网络资源依赖,对数据库服务器的资源开销和压力也减少.如 ...
- IOS开发笔记(4)数据离线缓存与读取
IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...
- hdu 5139(离线处理+离散化下标)
Formula Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- hdu 5139 Formula
http://acm.hdu.edu.cn/showproblem.php?pid=5139 思路:这道题要先找规律,f(n)=n!*(n-1)!*(n-2)!.....1!; 不能直接打表,而是离 ...
- hdu 5441 Travel 离线带权并查集
Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...
- hdu 4940 数据太水...
http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...
随机推荐
- 对于方法 String.Contains,只支持可在客户端上求值的参数。
var ProjectLevel_XJJS = "06,07,08,09"; p.Where(e =>ProjectLevel_XJJS.Contains(e.LevelCo ...
- Html5 Canvas学习
canvas: 首先在html页面中加入canvas标签 <canvas id="canvas" width="1024" height="74 ...
- JS中break continue和return的用法?
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环 ...
- Ubuntu16.04下编译vim with python support失败的原因
- youcompleteme原话:On Ubuntu 16.04, Python support was not working due to enabling both Python2 and P ...
- django 序列化json问题
from django.core import serializers @login_required def ajax_get_data(request): json_data = serializ ...
- border做箭头的例子
<style> .test{ margin:0 auto; width:100px; height:100px; background:lightskyblue; position:rel ...
- 打印机PCL漏洞原理分析
0x01 漏洞概要 PCL代表打印机控制语言(Printer Control Language),由惠普公司开发,并被广泛使用的一种打印机协议.关于另一种页面描述语言,应该提一提由Adobe设计的Po ...
- centos7 install jdk
setp1: remove default java [lhs@localhost soft]$ rpm -qa | grep javajava-1.7.0-openjdk-1.7.0.75-2.5. ...
- hdu 4550 卡片游戏
http://acm.hdu.edu.cn/showproblem.php?pid=4550 贪心 #include <cstdio> #include <cstring> # ...
- Qt: 网络编程之UDP(理论+实例)
http://blog.csdn.net/rl529014/article/details/52888525