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的更多相关文章

  1. 是时候开刷NOI了

    整天挨着毛爷爷,压力好大.. 看毛爷爷即将炖完NOI,我的确也该刷了 原则是从头到尾自己想(虽然看了一次题解),可以不A掉. NOI2009 day1: T1 题目略神,我还是不讲了...(就这题我W ...

  2. 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题, ...

  3. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  4. NOIp2016 Day1&Day2 解题报告

    Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...

  5. day1

    day1.py ][][: ][: ): : ]['lock'] = 0 json.dump(userlist_message, open(userlist, 'w')) break #输错次数到3次 ...

  6. day1作业--登录入口

    作业概述: 编写一个登录入口,实现如下功能: (1)输入用户名和密码 (2)认证成功后显示欢迎信息 (3)输错三次后锁定 流程图: readme: 1.程序配置文件: 黑名单文件blacklist.t ...

  7. luogu1003铺地毯[noip2011 提高组 Day1 T1]

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  8. BZOJ2432 [Noi2011]兔农

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  9. 【NOI2011】道路修建 BFS

    [NOI2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建 ...

随机推荐

  1. 网页设计之PS画渐变线条

    第一种线条的画法:画两条直线,这两条直线是 以背景色为基础 , 一个比背景色深  ,一个比背景色浅``. 第二种线条的画法:第一种画法是 图层样式 渐变叠加   叠加一个  背景色 到中间色 再到背景 ...

  2. Javascript基本概念(语句和函数)

    语句 for语句 for语句中的初始化表达式,控制表达式和循环后表达式都是可选的,将这三个表达式省略,就会创建一个无线循环. ECMAScript中不存在块级作用域,因此在循环内容部定义的变量也可以在 ...

  3. 用正则表达式抓取网页中的ul 和 li标签中最终的值!

                获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1& ...

  4. DELPHI 任务栏无EXE显示

    需要用到的一个函数: LONG SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong ); program Project; usesForms,  ...

  5. Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    依赖包(附件有下载): 包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll wind ...

  6. [Leetcode][Python]19: Remove Nth Node From End of List

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 38: Count and Sayhttps://oj.leetcode.co ...

  7. fuel iso光盘刻录机usb Driver 烧录

    ISO image to a DVD or burn the IMG file to a USB drive For a bare-metal installation ipmitool, HP iL ...

  8. android 百度地图定位功能实现

    历经几天时间,终于把定位功能给实现了,可谓是费劲千辛万苦啊,有定位知识还有图层知识,在这里我把代码给大家贴出来,一起分享一下下啦. package com.example.foreveross.off ...

  9. 全国计算机等级考试二级教程-C语言程序设计_第6章_字符型数据

    #include <stdio.h> main() { char c; char d; c = ; d = '; if (c == d) { printf("yes\n" ...

  10. javascript小知识1 this的用法

    函数的应用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...