[题解+总结]NOIP历年题目分析

1、前言

  迎接NOIP的到来。。。在这段闲暇时间,决定刷刷水题。这里只是作非常简单的一些总结。

2、NOIP2014

<1> 生活大爆炸之石头剪刀布(模拟)

这是一道考你会不会编程的题目。。。方法有很多,预处理输赢矩阵,或者一大堆if什么的乱搞就行了。

<2> 联合权值(搜索)

简单的树上求解问题,由于只需要长度为2的链,只要能够清楚地分析出各种情况,一遍DFS直接出来:自身节点与祖父节点有一对;自身节点与兄弟节点有若干对。在计算权值的时候存在一个优化,即如果每次得到一对之后就计算貌似会超时,我们可以对于每一个点记录与其距离为2的点,求和,最后在相乘。

<3> 飞扬的小鸟(动态规划)

完全背包动态规划+优化。个人感觉70分的裸DP比50分暴力还好拿些,毕竟搜索写起来比较麻烦。但是由于n<=10^5(貌似是的?),O(n^2)是过不了的,需要强加优化至O(n log n)。

<4> 无线网络发射器(模拟)

这道题给我们的教训就是,预估时间复杂度是很重要的。听说考场上有多人加些优化然后跪了的。。。数据范围极小,所以我们暴力枚举地图上所有点,然后求在发射器范围内点的个数,所以这又是一道考你会不会变成的题目。

<5> 寻找道路(搜索/最短路)

正反进行两次搜索(DFS/BFS/SPFA均可,但是推荐BFS+SPFA),第一次求得所有可以经过的点;第二次直接跑就是了。

<6>解方程 (高精度/哈希/其他)

这次NOIP唯一上点档次的题目吧?30分暴力;50分直接高精度;70分的话就需要一定技巧了,取几个合适的模,然后进行判断,在取模意义下为0就认为是为0。注意到在mod p的情况下,将x和x+kp代入,解显然是相同的,所以随便搞搞就行了。用FFT什么的就不说了。

3、NOIP2013

<1> 转圈游戏(GCD+快速幂)

转圈次数无比之大,但是显然结果是存在循环的。首先通过寻找规律,求得循环节,然后利用快速幂,求得答案。

<2> 火柴排队(逆序对+树状数组)

这道题个人觉得有点非主流。首先我确保我考场上写搜索,写贪心,写动规,但是觉得不会知道逆序对这种东西,毕竟我YY能力有限的。。。。知道逆序对之后,基本就保证80分了,因为直接O(n^2)循环就行了;但是由于100分数据,n<=10^5,故需要利用树状数组优化到O(n log n)。

时间: 2024-10-11 20:02:39

[题解+总结]NOIP历年题目分析的相关文章

【题解】【原创题目】せやな~

[题解][原创题目]せやな- 出题人:辰星凌 验题人:\(\text{YudeS}\) 楪 题目传送门:せやな- [题目描述] 简化题意: [分析] [Solution #1] 纯暴力,把所有区间权值算出来排个序取前 \(K\) 个即可,注意开 \(\text{long long}\) . 时间复杂度:\(O(n^2logn)\) . 分数:\(10pt\) . [Code #1] #include<algorithm> #include<cstring> #include<

SCJP_104——题目分析(5)

18. public class Test { public static void add3(Integer i) { int val=i.intvalue(); val+=3; i=new Integer(val); } public static void main(String args[]) { Integer i=new Integer(0); add3(i); System.out.println(i.intvalue()); } } what is the result? bA.

SCJP_104——题目分析(3)

11. what is reserved words in java?A. run B. default C. implement D. import Java 中,给标识符取名的时候,不能使用关键字和保留字. 在 Java 中常用的关键字有: 1.访问控制符: public.protected.private 2.数据类型 byte.short.int.long.float.double.char.boolean 3.与类.方法有关的 new.class.extends.implements.

SCJP_104——题目分析(2)

3. public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x=y) System.out.println("Not equal"); else System.out.println("Equal"); } } what is the result? 这一题考察的是 if 语句.if 语句的写法如下: if (boolean expression) { st

最长英文单词串题目分析

题目来源: 这是题目来源 序: 简述一下事情的经过 一天邹欣老师在群里向我提出了一个问题: "把这个题目分析一下,主要是从工程上考虑,假如50个学生提交了程序,你如何写一个测试的系统,判断对错,和测量学生程序的对错" 一.首先分析一下这道题的核心 "最长的能首尾相连的英语单词链,每个单词最多只能使用一次" 这里题目的描述有一点不明确,关于"最长",题目并没有给出详细定义. 因此可能有两种情况. 单词链中单词数最多 单词链中字符数最多 (看到这里我

数列 题解(NOIP模拟T2)

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. [题目描述] a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1]  (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值. [输入格式] 第一行一个整数T,表示询问个数. 以下T行,每行一个正整数n. [输出格式] 每行输出一个非负整数表示答案. [样例输入] 3 6 8 10 [样例输出] 4 9 19 [数据范围] 对于30%的数据 n<=100: 对于60%的数据 n<=

3Sum 等类似题目分析

3Sum 题目描述:给定一个整数数组,找出其中的三个数之和为0的所有组合(排除相同的组合). 分析:利用TwoSum 中两指针的思路,我们可以先将数组排序.要找到3个数之和为0,我们可以先固定一个数num[i],将i+1和len-1分别作为头指针和尾指针,当num[i].num[i+1]与num[len-1]的和大于0时,移动尾指针:小于0时,移动头指针:等于0则找到一组数.在循环查找下一组解时,当下一个值与当前值相等会出现重复的解,此时可以跳过当前循环来去除重复.具体代码如下: 1 vecto

MySQL索引题目分析

1.之前看视频呢的时候,里面提到一道索引题目:假设某个表有一个联合索引(c1,c2,c3,c4)-只能使用该联合索引的c1,c2,c3部分 a.where c1=x and c2=x and c4>x and c3=x b.where c1=x and c2=x and c4=x order by c3 c.where c1=x and c4=x group by c3,c2 d.where c1=? and c5=? order by c2,c3 e.where c1=? and c2=? a

SCTF 2014 pwn题目分析

因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很符合套路的:一道栈溢出.一道格式化字符串.一道堆溢出. pwn200 一个栈溢出. 题目给出了libc.保护只有nx. 拿到题后的基本思路就是leak出got表中函数的地址,然后拿libc算偏移算出system的地址.然后用这个地址去覆盖一个函数的got表. pwn300 一个明显的格式化字符串漏洞