模拟题
文章平均质量分 58
SindarDawn
QZOIer,FTCer,UESTC ACMer,梦想成为大神的Yuta
展开
-
leetcode刷题记录&题解&c++代码 剑指 Offer 43. 1~n 整数中 1 出现的次数
剑指 Offer 43. 1~n 整数中 1 出现的次数输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。思路:这个题是属于特别让人讨厌的题233,有几种思路,分0-9,10-99,100-999来做,或者按位来做,我是按位来做的,我个人认为这样会好做很多。然后对每一位进行分析,发现他们有一个很简单的规律来描述其出现次数,可以画图会比较容易看出来,其实就是每个数字在前一个数取最大时要单独考虑,原创 2021-05-03 20:25:15 · 120 阅读 · 0 评论 -
leetcode刷题记录&题解&c++代码 剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列题意:如题目思路:纯模拟(懒惰如我,其实是用的数组x)364ms(45%) 101.9M(28%)class CQueue {int head,tail,num[10000+5];public: CQueue() { head=0;tail=0; } void appendTail(int value) { num[tail++]=value; } int del原创 2021-04-20 19:10:23 · 111 阅读 · 0 评论 -
NOIP模拟题 [线段树][矩阵快速幂]
有一定难度,要深入挖掘问题特性。 T1: 题意: 给定一个序列,每次操作把操作位置及其后面比它小的数按顺序排列(整体上仍在原来的位置),求每次操作后的逆序对数。 分析: 每个数对逆序对数都有一个贡献(在它后面比它小的数,对一个数进行操作就是取消它及它后面的数的贡献(因为对一个数来说,它都被重排了,它后面比它更小的就更会被重排了。 所以可以知道,每个点被取消贡献的时间就是它前面且比它大的数原创 2016-11-11 21:22:22 · 618 阅读 · 0 评论 -
NOIP模拟题[递推][并查集][DP]
不能换考试策略。 数组大的那一维定义在前面可以减小常数(我用的时候有4倍)。T1: 题意: 求一个数列在可以修改一个数的情况下最长连续上升子序列。 分析: 用第二维标记一下改没改过,乱搞一下就可以了(从前向后推一次,从后向前推一次,继承修改和修改当前数交叉修改)。注意为了防止重复修改,修改区间不要重复。 加强版:可修改一个区间:见紫书第八章。#include<cstdio>#inclu原创 2016-10-31 21:49:42 · 681 阅读 · 3 评论 -
NOIP模拟题 [暴力][贪心][栈][dfs][找规律]
不擅长写暴力,要多练。 学习一下传说中的打表找规律。 定数组大小之前一定要认真地算并且留够变化区间(即如果算出来是1e5左右,你开1e5,你死了。(我就是这么死的摔,长记性啊。) 稳啊稳啊,每次都要交智商税吗。T1: 题意: 对于给定序列进行加数(若有三个及以上相同则删除),输出每次加数后的序列。 分析: 按理说典型链表,不过看一下数据范围,感觉写链表多用的时间应该是智商税(看到这里的原创 2016-11-01 14:55:43 · 612 阅读 · 0 评论 -
NOIP模拟题 [模拟][递推][平衡规划]
在写暴力的时候也不要放过发现的每一个题目特点,这可能就是正解的关键。T1: 题意: 求给定一个序列最大公约数为1的最长长度; 分析: 傻逼题,害我读了几次题。#include<cstdio>#include<iostream>#include<cmath>#include<cstdlib>#include<cstring>#include<string>#include<algo原创 2016-11-16 20:17:13 · 1050 阅读 · 2 评论 -
NOIP模拟 [筛法][构造][扫描线]
好好好好好写暴力,不要因为觉得太简单了就乱写,最后少考虑了特殊情况。 现在是暴力会出这种错,以后写正解也少考虑情况就惨了。 LOGIC. 掌握时间复杂度的分析方法和常见算法的时间复杂度。T1: 题意: 求l-r里的素数数。 分析: 垃圾T1毁我青春。 先打根号以内的素数表,再筛一次,注意第二次筛要限制max(i*i,lef/i*i),这样才能够尽量减少无意义的更改,免得T1就T。#i原创 2016-11-17 15:30:05 · 780 阅读 · 0 评论 -
NOIP模拟题 [递推][优化][dp][线段树][离散]
稳啊稳啊。对拍大法好。 不过最开始看题的时候要记住评估一下正解难度和暴力难度,T3明明可以搞60分的,可惜了。 还有就是,写程序之前一定要想清楚!处理好特殊情况,确保算法在实现过程中的正确性!对拍出错再来改代价太大!T1: 题意: 对一个给定字符串进行多次复制黏贴操作,求最后得到字符串的前n位,若字符串过长,只保留前m位。 分析: 看了下m的大小,觉得非常酸爽。 因为如果正向处理的话,原创 2016-11-14 16:59:58 · 897 阅读 · 0 评论 -
NOIP模拟题 [递推][DP][搜索]
T1: 题意: 要求将1-n的数排成两列,使得两列数的个数相等且都递增,还要求其中一列比另一列对应位置上的数大。 分析: 两个方法: 1.先写个暴力打表找规律,因为反正也要写对拍。 2.分析一下: 还涉及到除法取mod,求逆元,我用的费马小定理,还可以exgcd,线性递推。#include#include#include#include#include#includ原创 2016-11-13 22:00:13 · 759 阅读 · 0 评论 -
NOIP模拟题 [位运算][生成树]
如约而至。 愿不辜负。说正事,不要因为写得很快而沾沾自喜,对拍要快快快一点啊啊啊! 然后推的时候要用变量代替样例数据,同时一定!要自己出数据。 还有,一定要在思路理清楚以后认真检查一次程序的逻辑关系,是否能达到要求,尤其是常数的使用。 静态差错一!定!要!认真看每一句,清醒一点呀喂! 现在脑子不太好使,很容易想不出来,每抓住一个可能的思路,不要因为问题而退缩,要想一下如果我要用这个方法的话原创 2016-11-18 14:56:32 · 560 阅读 · 0 评论 -
NOIP模拟题 [LIS][建图][递推][容斥]
正确评估题目难度。T1: 题意: 给定一棵树,求使得每一个节点的左子树任意值都比当前节点值小,右子树任意值都比当前节点大所需要的最小改动点数。 分析: 首先对于这种神奇的递归定义,我们通过传递大小关系可以发现,通过上推我们可以确定任意两点之间的大小关系,然后很容易想到把树上的点排序。 所以如果先忽略掉“严格递增”和“可能中间不能加数”,这道题显然可以直接贪心减去LIS。 那么这种算法会遇原创 2016-11-15 21:37:45 · 814 阅读 · 1 评论 -
NOIP模拟题 [SPFA][DP][栈结构]
冷静。 我不想再集齐傻逼错了还是认真检查吧。T1: 题意: 在一个有的点不能走的图上求最少经过多少不能走的点能走到某一点或图的边界。 分析: 其实就是图上最短路,走个SPFA,因为更新很少所以不会T; 我下次再也不用dfs玄学大法乱搞图论了,再也不!#include<cstdio>#include<iostream>#include<cmath>#include<cstdlib>原创 2016-11-11 15:26:13 · 707 阅读 · 0 评论 -
XJOI NOIP模拟题2[数论][组合数][树规]
今天玩得有点嗨,嗯冷静冷静。 考试策略很重要,时间分配啊难度的选择啊对拍啊都很重要。建议还是看一遍题,像今天觉得T1好写结果不知不觉卡很久,T3其实是写过的水题就这么没了。该开始复习数论了不然药丸,组合数,逆元,拓展欧几里得,费马小定理,欧拉函数……T1: 题意: 给定n,k和两个字符串A,B,求与A相差字母个数为K的所有字符串按字典顺序排好后,B所在的位置。 分析: 若我们外层循环枚举光原创 2016-10-30 20:17:33 · 795 阅读 · 2 评论 -
hzwer2015.9.13 NOIP模拟题 explo seq earth[DP][数论][二分][SPFA]
一套有难度的题,据说平均水平一百多,我感觉…差不多吧。 静下心来搞程序。 T1. 题意:对一个数给操作,分别是获得这个数乘以某个数的收益且成比例减小此数,或相反。求最后的最大收益。 分析:反向DP,因为当前决策会对后来产生影响,所以如果正向的话显然是不能存的,然后可以发现,现在的能力值对后面的影响是成正比的,并且这个无法用单价的提高来替换——毕竟单价本身不影响后面的收益,不过想到这里我们就可原创 2016-10-17 13:06:29 · 494 阅读 · 0 评论 -
NOIP2015 day2 [二分][DP][树剖]
只弄出来前两道,第三道链剖要爆栈我弄了一下午决定放一放。 T1: 题意:在一个n长序列中取走m个数,使得任意相邻数之间差值最小值最大。 分析:要最大值最小最小值最大,典型的二分答案套路。二分答案以后把不满足的数给去掉(因为去掉前一个肯定不会比去掉当前这个更优),然后注意最后一个也要算,如果要用的次数不够了就不满足,然后就没了。#include<iostream>#include<cstdio原创 2016-10-23 18:27:13 · 760 阅读 · 4 评论 -
NOIP模拟题[贪心][离散化][LIS]
思考深入再深入! 小心MLE(躺 T1: 题意: 有n个怪物,生命值分别是hi,你有M魔法值,魔法值可用来使某一怪物失去2点生命值或所有怪物失去1生命值。每一轮你可以选择是否用魔法值(若不用则使一怪物失1血),在你做出选择后,所有生命值严格大于一的怪物会分别使你失去1生命值,求怎样决策能使得你失去的生命值最少。 分析: 首先,肯定优先攻击生命值低的怪物,因为这样绝不会使你被攻击的次数增多原创 2016-11-06 22:01:11 · 1010 阅读 · 0 评论 -
NOIP模拟题[dfs][DP]
深入思考,仔细读题,抽象化问题本质,寻找相同点。 DP的话,思考一种可以完美概括影响又没有多存无意义信息的表示。 所以要分析什么信息对后来的计算有用。T1: 题意: 判断一棵子树所有节点的编号是否刚好为一完整区间。 分析: 简单分析一下,可以一次dfs搞定,就上传最小节点编号,最大节点编号,然后比较一下子节点个数即可。#include<cstdio>#include<iostream>原创 2016-11-07 18:25:59 · 565 阅读 · 0 评论 -
noip模拟题 小奇2 by hzwer[DP][路径压缩][分类讨论][位运算]
这么颓下去,迟早要完。这套题只考了2h,感觉还不错,T2做过类似的所以A了,T1和T3基本上也没什么大问题,关键就是要深入挖掘问题特质,学会分类讨论(很多题都可以剪掉大量的枝,比如T1,小奇1的T3,noip2015 day1 T3,都是需要有这种分类意识的。 T1: 题意:在坐标轴上有一些点有收益,问从0开始,每次只能向前跳4(0+4=4)步或7(0+7=7)步,最大收益是。原创 2016-10-27 19:21:05 · 575 阅读 · 0 评论 -
NOIP模拟题 [构造][贪心][暴力]
从以往犯的错上汲取经验。 注意循环,if的嵌套以及break等地方。 训练暴力能力。 如果要修改一个地方一定注意看一下有没有忘了的东西!还有复制黏贴也是一样。T1: 题意: 给定一些字符串,可对字符串的长度为偶数的前缀进行反转操作,相同则消除,求最后剩下多少。 分析: 先考虑把后面的匹配,则只要把某两个看作一块,只要还有一个相同且没有被配对的块,就一定可以被翻到最前面且调换方向,然后翻原创 2016-11-08 17:04:54 · 948 阅读 · 0 评论 -
NOIP模拟题 [DP][二分][树剖][树上差分]
认认真真地想…… T1: 题意:求三个字符串的LCS; 分析: 开三维,只在都相等的时候考虑加1,因为每个配对点都只顺序枚举一次,所以不会漏不会重。#include<cstdio>#include<iostream>#include<cmath>#include<cstdlib>#include<cstring>#include<string>#include<algorithm原创 2016-11-09 20:03:19 · 678 阅读 · 0 评论 -
NOIP模拟题[数论}[暴力][拆点]
沉迷T3,不能自拔。 T1: 题意:求2的n次方modp,p为质数; 分析: 如果n小,就是快速幂。 如果n大,又是质数,就是费马小定理先把nmod了再直接暴力算。 有人写高精度快速幂,过了70,辛苦了。#include<cstdio>#include<iostream>#include<cmath>#include<cstdlib>#include<cstring>#incl原创 2016-11-09 21:31:55 · 846 阅读 · 0 评论 -
NOIP模拟题 [DP][RMQ][分块]
要稳一点啊。 一定要对拍! 然后就是加快写对拍的速度,给最后一道题多争取一点时间。 T1: 题意:给定n,k,对于1-n的所有排列,求出逆序对数为k的所有排列数。 分析:fa一fa图我们会发现,其实这里存在着一个状态转移,即对于当前位选出的数让后面增加几个逆序对(其实就是模拟自己生成满足一定条件的序列)。因为很容易证明前面的数列到底是什么并不重要,所以这道题只需要f[i][j],i为还需要原创 2016-10-29 15:23:31 · 817 阅读 · 2 评论 -
NOIP模拟题 [模拟][DP][线段树]
抽象题目所求性质。 熟练模板。T1: 题意: 把一序列重复,求一区间内某字符出现次数。 分析: 显然把超出该区间长度的直接乘法算就行了,注意一下并区间,区间从1开始导致len取不到的问题处理。思路很简单,但可能会被包装在比较难的题里面。解锁新错误:读入优化没开longlong 不知道什么时候才能把这些傻逼错集齐。#include<iostream>#include<cstdio>#i原创 2016-11-10 20:37:06 · 1508 阅读 · 0 评论 -
NOIP模拟题[二分][树规][倍增][双向链表]
感觉自己的弱点在代码实现上面,就是知道怎么写但写要很久而且易错难调,解决措施: 1.敲键盘之前要画好流程图,想好一共需要几个函数,函数的功能以及要怎么实现,需要用到哪些库函数哪些数据结构等等,思路要清晰,思路清不清晰看程序就知道。 2.如果是改程序,就先理清楚标程是怎么实现的,基本上按照标程写,把握标程好的代码特色。 3.如果是调试,就在每一步理清楚程序的数学本质,如果还调不好就: 1原创 2016-10-19 15:21:48 · 1040 阅读 · 0 评论 -
NOIP模拟题[贪心][DP][数论]
改程序之前,写程序之前,确保自己理解了,不然效率会很低。 写程序少用复制黏贴,容易细节出错,不好调试。 T1: 题意: 给定两字符串,判断B串是否是A串的字串且输出B串每个字母的匹配位置字典序最大的匹配方案。 分析: 典型贪心,特别是“字典序最大”,不过好久没写贪心了有点迟钝233. 从后向前遍历B串和A串,找到B串单词的第一个匹配位置即可比较下一个。#include<cstdio>原创 2016-11-02 17:28:07 · 723 阅读 · 2 评论