NOI2011 Day1
NOI2011 Day1
兔农
题目描述:\(fib[1]=fib[2]=1, fib[i]=fib[i-2]+fib[i-1] (i\geq 3)\),若\(fib[i] \equiv 1(mod k)(i \geq 3)\),则\(fib[i]=fib[i]-1\),已知\(k, P\),求\(fib[n] mod P\)
solution:
先看一下当\(k=7\)时,\(fib[i] mod k\):(每行的最后一个数变为0)
1, 1, 2, 3, 5, 1
5, 5, 3, 1
3, 3, 6, 2, 1
2, 2, 4, 6, 3, 2, 5, 0, 5, 5, 3, 1
3, 3, 6, 2, 1
……
出现循环了,也就是说这是有循环节的,而且每一行都是一个斐波那契数列,由于每行的最后一个数为\(0\),下一行的第一个数变成了该行的倒数第二个数,下一行的第二个数与第一个数相同,构成新的斐波那契数列的首两项。
设每行首项为\(X\),每一项除以\(X\),就是原来的斐波那契数列。
令\(X*fib[i] \equiv 1 (mod k)\)成立的最小的\(i\)记为\(Len[X]\),这就是以\(X\)为首项的长度,如果\(Len[x]\)不存在,则说明以后都不会再减一,之后就按照斐波那契数列去做就好了。
求\(Len[X]\),就要求\(X\)的逆元,因为\(k\)不一定是质数,只好用扩展欧几里得求出\(fib[Len[X]]\),从而求出\(Len[x]\)。
计算斐波那契数列时用到矩阵乘法,自己构造一下就好了。
这题的可行性在于一个结论:模\(k\)意义下的斐波那契数列的循环节\(\leq 6k\)
时间复杂度:\(O(6k)\)
智能车比赛
题目描述:给出\(n\)个矩形,第\(i\)个矩形区域的左下角和右上角坐标分别为\((x_{i,1},y_{i,1})\)和\((x_{i,2},y_{i,2})\), 保证\(x_{i,1}<x_{i,2}=x_{i+1,1},y_{i,1}<y_{i,2}\),给出起点坐标与终点坐标,只能在矩形内行走,问起点到终点的最短路径。
solution:
只有相邻两个矩形的重边的端点是有用的,然后\(n^2\)连边,最短路。
时间复杂度:因算法而异
阿狸的打字机
题目描述:给出一串操作,包含小写字母或\('B','P'\),小写字母表示在字符串末尾添加该字母(字符串一开始为空),\('B'\)为删去最后一个字母,\('P'\)为输出当前字符串。有若干个询问\((x, y)\),问第\(y\)个输出的字符串包含多少个第\(x\)个输出的字符串。
solution:
容易想到AC自动机+fail-tree,然后把询问离线读入,按\(y\)从小到大排序。在fail-tree中,任意一个点的子树的字符串都包含该点所对应的字符串。
按照操作顺序模拟,将\(y\)到根的点\(+1\)(AC自动机),查找\(x\)的子树的和(fail-tree)即为答案。
时间复杂度:\(O(nlogn)\)
NOI2011 Day1的更多相关文章
- 是时候开刷NOI了
整天挨着毛爷爷,压力好大.. 看毛爷爷即将炖完NOI,我的确也该刷了 原则是从头到尾自己想(虽然看了一次题解),可以不A掉. NOI2009 day1: T1 题目略神,我还是不讲了...(就这题我W ...
- CH Round #54 - Streaming #5 (NOIP模拟赛Day1)
A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- day1
day1.py ][][: ][: ): : ]['lock'] = 0 json.dump(userlist_message, open(userlist, 'w')) break #输错次数到3次 ...
- day1作业--登录入口
作业概述: 编写一个登录入口,实现如下功能: (1)输入用户名和密码 (2)认证成功后显示欢迎信息 (3)输错三次后锁定 流程图: readme: 1.程序配置文件: 黑名单文件blacklist.t ...
- luogu1003铺地毯[noip2011 提高组 Day1 T1]
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- BZOJ2432 [Noi2011]兔农
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 【NOI2011】道路修建 BFS
[NOI2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建 ...
随机推荐
- javascript中的with
with语句主要用来对一个对象操作多个属性,使代码简洁易读. 语法: with(object) statements object是新的默认对象,statements是一个或多个语句 例如: var ...
- wifi 攻破
链接1 wifi 加密方式 1,wep加密 2.WPA/WPA2-PSK加密 WPA2 的破解方式: 1 爆力破解 2,pin 破解 1) 先破解 pin 码 2)再用 minidwep-gtk 破解
- [转]前端利器:SASS基础与Compass入门
[转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...
- perl 对象 bless 引用
[root@dr-mysql01 ~]# cat aa.pl use LWP::UserAgent; use Data::Dumper; my $ua = LWP::UserAgent->new ...
- c语言结构体排序示例
设计性实验编程实现对学生成绩表的相关信息排序.实验要求:⑴ 建立一个由n个学生的考试成绩表,每条信息由学号.姓名和分数组成.⑵ 按学号排序,并输出排序结果.⑶ 按分数排序,分数相同的则按学号有序,并输 ...
- linux学习之八-Linux本机性能监控
Linux 优化 1.看看磁盘有没有满(根目录有没有满).内存有没有满.CPU有没有满 查看磁盘有没有满,使用df -h 看看磁盘使用情况 查看内存使用 free -m 特别关注swap用了多少 ...
- foj 2150 Fire Game(bfs暴力)
Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M ...
- 打包ipa分发给测试机安装步骤
1.确定可以打包的Mac电脑,即该Mac电脑已经具备可以打包的权限. 需要上传一份Mac电脑的描述文件,即csr文件. 2.创建bundle id 3.添加测试设备 4.生成证明描述文件 5.Xcod ...
- wormhole提升hivereader读取速度方案
背景: 最近dw用户反馈wormhole传输速度很慢,有些作业甚至需要3-4个小时才能完成,会影响每天线上报表的及时推送.我看了下,基本都是从Hive到其他数据目的地,也就是使用的是hivereade ...
- 【玩转Ubuntu】02. Ubuntu上搭建Android开发环境
一. 基本环境搭建 1.官网http://developer.android.com/sdk/index.html ,下载adt-bundle-linux-x86_64-20130729.zip 2. ...