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对象-遍历对象
为了方便了解每个javascript对象包含的方法,我写一个函数. function GetCollection(obj){ try{ if(obj){ var sType=""; ...
- Python中字符串切片操作
一:取字符串中第几个字符 print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符 二: ...
- C语言程序设计(翁恺)--第三周课件中的三个遗留点
刚刚写完第二周遗留点,下面写第三周的 第三周:判断 1.if和else后面也可以没有{}而是一条语句.如果if后不带{},但是后面跟了两条语句,并且后面还有else语句,那么程序会怎么执行? 在Dev ...
- SQL Server 创建数据库快照
创建数据库快照: 必须在create database 命令中包括源数据库的每一个数据文件,原始逻辑名,新物理名与路径, 不能指定其他属性 create database db_snapshot_na ...
- UITableViewCell性能优化
5.UITableViewCell性能优化 > 定义一个循环利用标识 static NSString *ID = @"C1"; > 从缓存池中取出可循环利用的cell ...
- Spring、Spring依赖注入与编码剖析Spring依赖注入的原理
Spring依赖注入 新建PersonIDao 和PersonDao底实现Save方法: public interface PersonIDao { public void save(); } pub ...
- 调magento自定义模板发邮件
1. 设置邮件模板 <global> <template> <email> <custom_email_template1 module="Samp ...
- C#.net连接SQLite及遇到的问题
1.Slite简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需 ...
- js实现弹出窗口、页面变成灰色并不可操作的例子
function show() //显示隐藏层和弹出层 { var hideobj=document.getElementById("hidebg"); hidebg.style. ...
- js工具常用方法
/* function obj$(id) 根据id得到对象 function val$(id) 根据id得到对象的值 function trim(str) 删除左边和右边空格 function ltr ...