【总结】[NOIP]提高难度以下题目汇总①

来源:互联网 发布:河南省考行测成绩算法 编辑:程序博客网 时间:2024/06/05 06:50

前言

现在已经准备好从1997年NOIP(普及&提高)的题做到2016年了 这20年的题目洛谷上都有
因为提高难度以下的题目比较简单 就简单的汇总来写 概括一下每一个题的核心 这是第一弹 提高难度以上的题会一个一个写的

题目列表

NOIP题目
NOIP题目
NOIP题目
NOIP题目

总结

*时间关系不加链接了 按洛谷的难度顺序排序

NOIP2005普及组T1 P1046 陶陶摘苹果:
按题意模拟即可 注意加板凳长度 可练离散化优化

NOIP2010普及组 P1179 数字统计:
从L到R一个数一个数的找即可 能%2就total++ 然后/=10

NOIP2002普及组 P1035 级数求和:
按照1+1/2+1/3+…+1/n一直加 加到符合题意就停 输出

NOIP2016普及组 P1909 买铅笔:
需要送到sort 从最实惠的开始买一直到买完

NOIP2012普及组T1 P1075 质因数分解:
从2开始寻找 肯定找到小的那个质因数i会比较快 然后用n/i得到答案

NOIP2004普及组T1 P1085 不高兴的津津:
还记得新生刚来不会for循环int了14个变量…直接循环找最不高兴的那一天就行了 也可以用线段树

NOIP2015普及组 P2669 金币:
入门数论?还是模拟过吧…把for循环设计的猥琐一点按题意模拟(以前我都不会这个题…)

NOIP2013普及组 P1980 计数问题:
基本同数字统计

NOIP2006普及组T1 P1059 明明的随机数:
sort 去重 统计个数 大概就这样

NOIP1997提高组&普及组T1 P1548 棋盘问题:
边长为min{n,m}的正方形个数:

(mmin(nm)+1)(nmin(nm)+1)

长方形加正方形个数:
((1+n)(1+m)nm)/4

长方形个数通过上面两式相减即可得出
所以思路就是 先算出正方形个数 然后用公式得出长方形和正方形个数总和 最后得到长方形个数

NOIP2011普及组T1 P1307 数字反转:
用字符串 每一位拆开翻转 注意正负

NOIP2005普及组T2 P1047 校门外的树:
朴素的做法用数组模拟路然后有树的地方赋值最后慢慢拔然后统计

NOIP2015普及组 P2670 扫雷游戏:
二维数组当地图 枚举每一个点 是地雷 那么周围的空里值都加1 最后如果是地雷就输出* 不是就输出地图里的数据

NOIP2004提高组 P1089 津津的储蓄计划:
提高组最简单的题…按照题意模拟津津每个月的经济流动就好了

NOIP2008普及组T1 P1055 ISBN号码:
字符串模拟 唯一难度是细节多了点 尤其是那个X

NOIP1998普及组 P1008 三连击:

 cout << "192 384 576" << endl; cout << "219 438 657" << endl; cout << "273 546 819" << endl; cout << "327 654 981" << endl;

NOIP2010普及组 P1190 接水问题:
贪心搞搞 先排序 然后就是挑出接水的人中用时最少的加上下一个正在排队的人

NOIP2001普及组 P1028 数的计算:

f(n)=f(n1)+f(n/2)
递推递归真恶心

NOIP2014普及组 P2141 珠心算测验:
用一个数组维护一下 扫一遍符合题意就total++

NOIP1999提高组 P1014 Cantor表:
①第k行有k个数②第k行每对数之和是k+1③奇数行从k开始偶数行从1开始(找规律慢慢做吧)

NOIP2008提高组T1 P1125 笨小猴:
字符串+模拟+排序+素数判断 挺好玩的题 把字符换成数字比较方便 素数判断建议直接朴素

NOIP2007普及组 P1093 奖学金:
结构体+sort很方便 然后按照题意模拟 编个规则 先判断总分 如果总分相同 就判断语文分 如果语文分相同 再判断学号

NOIP2007普及组 P1094 纪念品分组:
看到之后果断用的贪心 排序之后头找尾 发现…不对! 于是调出了这么一个东西——

    int ans=0i=1,j=n;    while(i<=j){        if(i==j){            ans++;i++;j--;break;        }        if(a[i]+a[j]<=m){            ans++;i++;j--;        }        else if(a[i]+a[j]>m){            ans++;j--;        }    }    cout<<ans<<endl;

别问我为什么..忘了

NOIP2009普及组T2 P1068 分数线划定:
啥排序任你选 考虑好细节就行(包括多录取等分的..等等) 推荐结构题 代码别太乱了…

NOIP2005提高组T1 P1051 谁拿了最多奖学金:
字符串+模拟+排序 题解就在题目中 真的只是考翻译… 然后算就行

NOIP2014普及组T2 P2118 比例简化:
基础数论gcd 直接枚举所有答案 然后每次更新最优解 注意输出格式

NOIP2011提高组D1T1 P1003 铺地毯:
模拟 注意地毯铺的先后顺序 后来者居上 所以找到解就输出

NOIP2009普及组T1 P1067 多项式输出:
呵呵…
坑死人算了好么 再见
就是普通的字符串模拟 摸死你

NOIP2014提高组D1T1 P1328 生活大爆炸版石头剪刀布:
“打表”题 情况屈指可数 t==na||nb的时候折回来

NOIP2007提高组T1 P1097 统计数字:
sort 相同的数计数器累加 遇见不同的 输出 清零

NOIP2002提高组 P1031 均分纸牌:
多个教参上的贪心例题 很经典 平均数贪心慢慢移

NOIP2015提高组D1T1 P2615 神奇的幻方:
【模拟】[NOIP2016&2015]玩具谜题&神奇的幻方

NOIP1997提高组&普及组 P2626 斐波那契数列(升级版):
题目主要分为两步 找到第 n 个斐波那契数然后给那个斐波那契数分解质因数
斐波那契数列+质因数 模拟 注意输出格式

NOIP1998提高组 P1012 拼数:
核心代码

int cmp(string x,string y){    return (x+y>y+x);}

NOIP2006普及组T2 P1060 开心的金明:
01背包模板

NOIP2008提高组 P1149 火柴棒等式:
很烦啊这个题我不会 看题解吧 别忘了加上 + 和 = 的火柴棒

NOIP2016普及组 P2010 回文日期:
一年一个回文日期 找到年份生成回文日期 再看看在不在范围内 枚举把 感觉挺好的题 一开始我不会…

NOIP2011普及组T2 P1308 统计单词数:
又是一个比较烦的题 枚举文章中的每个单词 判断两个单词长度是否相同 枚举单词中的每个字母 判断是否都相同 如果都相同则答案加一

NOIP2001普及组T4 P1049 装箱问题:
竟然是T4!?
【动态规划】【贪心】动态规划与贪心的联系

NOIP2005普及组T3 P1048 采药:
T3!? 同开心的金明

NOIP2010提高组 P1540 机器翻译:
用一个数组维护单词在不在内存中 模拟即可

NOIP2003普及组 P1042 乒乓球:
简单模拟 注意局数以及获胜条件

NOIP2002普及组 P1036 选数:
好题诶 用的STL的全排列 但是要用一个数组维护一下 要不然会很尴尬(可以试一下) 素数判断用朴素或埃氏

NOIP2001普及组 P1030 求先序排列:
树的基本知识 后序最后一个是根 然后在中序中找到根 然后分成左右两半 继续这样找

NOIP1998提高组 P1011 车站:

f[i]=fibo[i1]b+fibo[i2]a;

斐波那契数列

NOIP2003普及组 P1044 栈:
第一次接触卡特兰数 会了就很简单

f[i]+=f[j]f[ij1];

不会的话..dp?

NOIP2004普及组T2 P1086 花生采摘:
基本模拟+搜索 注意题目要求
核心

for(int i=1;i<=t;i++){        if(i==1) if(total+a[i].y+a[i].y-1>k) break;        if(i!=1) if(total+abs(a[i].y-a[i-1].y)+abs(a[i].z-a[i-1].z)+a[i].y>k) break;        if(i==1) total+=a[i].y-1;        if(i!=1) total+=abs(a[i].y-a[i-1].y)+abs(a[i].z-a[i-1].z);        ans+=a[i].x;        total++;     }

NOIP2012提高组D1T1 P1079 Vigenère 密码:
打表??差不多吧
有个式子:明文字母=密文字母-密钥字母
真无聊…

第一部分就先这样吧 …
COYG

原创粉丝点击