luogu 3952 时间复杂度(模拟)】的更多相关文章

题目链接 luogu P3952 时间复杂度 题解 直接模拟即可 注意不要直接return 我真是naive ...... 代码 #include<map> #include<stack> #include<cstdio> #include<cstring> #include<algorithm> #define rep(a,b,c) for(int a = b;a <= c;++ a) #define gc getchar() #defi…
时间复杂度 这道题从两个月前开始做,一直没做出来,最后今晚决心一定要做出来.于是开始认真的在打草纸上写思路,最后在AC的那一刻,差点哭了出来!! 题目大意 这个自己看吧,noip2017的D1T2 solution 先介绍一下这道题我们用到的每个变量他们的用处 stack[]记录变量的循环层 vis[]记录变量在栈中是否出现过 cmp函数,这个可以用作比较循环中a和b的大小 \[ \begin{cases} a<b -> 进入新的一层循环\\ a>b -> 无法进入新的循环,循环终…
noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时间复杂度 判断每个程序给出的时间复杂度是否正确. A++语言的循环结构如下: F i x y 循环体 E 其中F i x y表示新建变量i(变量i不可与未被销毁的变量重名)并初始化为 x 然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环 否则不进入 每次循环结束后 i 都会被修改成…
[Luogu 3952] NOIP2017 时间复杂度 一年的时间说长不长,说短,也不短. 一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿. #include <cstdio> #include <iostream> #include <set> #include <stack> #include <string> int T; struct Layer { std::string name; int state; Layer(std:…
https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈. 第一次就错在发现ERR退出太及时,把剩余的信息留在流里面. 所以下次还是全部保存在字符串里面就好.一次下载一整段程序. #include<bits/stdc++.h> using namespace std; typedef long long ll; void solve() { int l; scanf("%d"…
对于2017 D1 T2 这道题 实实在在是个码力题,非常考验耐心. 其实大体的思路并不是非常难想出来,但是要注意的小细节比较多. 题目链接:https://www.luogu.org/problemnew/show/P3952 思路 对于每一个程序,先读入L和O(),并将其中的时间复杂度抠出来. 其次整行读入字符串,即所给定的程序. 判断第一个字符是F or E F i x y 需要把x y拿出来,把i压进栈 E 退栈 压进i后为了方便退栈及退栈时判断,用一个flag标记 每做完一个程序,与前…
其实,也没那么难写 这种模拟题,仔细分析一下输入格式,分析可能的情况,把思路写在纸上,逐步求精,注意代码实现 主要思路就是算一个时间复杂度,和给出的复杂度比较,这就先设计一个函数把给出的复杂度由字符串形式化为数字形式 然后开始分析,对于F: 检查变量合法 分类:常量-常量和n-n:O(1),常量-n:O(n),n-常量:无法进入,记为0,特殊标记一个slay 3.压栈:栈内记录变量名和贡献的复杂度,用map标记变量为使用过 对于E: 检查栈空 如果没有slay标记就更新答案 弹栈,清空变量使用…
链接 : Here! 思路 : 这是一道大模拟, 区分好情况就没问题了 循环构成部分 : $F , x , i , j$ 和 $E$ , 需要注意的是 $i , j$, - 分析 $i, j$ 的情况 : - 当 $i, j$ 全为 $n$ 的时候, 复杂度为 $O(1)$ - 当 $i, j$ 为 $number$ 和 $n$ 的时候复杂度为 $O(n)$ - 当 $i, j$ 为 $n$ 和 $number$ 的时候复杂度为 $O(0)$ - 当 $i, j$ 全为 $number$ 时,…
跪着看评测很优秀. 题目描述 给你若干个程序,这些程序只有 For 循环,求这些程序的时间复杂度. Solution 大模拟.讲下细节. flag[i]flag[i]flag[i] 表示第 iii 位有没有对复杂度产生贡献,而且只有 F 开头的语句才会计算. ed[i]ed[i]ed[i] 表示第 iii 位配套的 E 的位置(第 iii 位必须是 F). 注意判 CE 的时候, F x 2 1 F x 1 2 E E 这个程序也要判 CE. 最后贴上代码 #include<cstdio> #…
原本只是想看下多久能码完时间复杂度 然后在30min内就码完了,然后一A了???? 首先,这题完全可以离线做 我们先把所有的操作读完,判断合不合法之后,再去判断和标准答案的关系 具体而言 把所有的操作读完之后 对于$F$操作,我们存下这个操作对应的$E$操作,循环范围$[L, R]$以及循环变量 对于$E$操作,我们存下这个操作对应的循环变量 我们记$F$操作对应的$E$操作为$match[i]$ 我们可以从左往右对于每一个$E$操作暴力寻找其对应的$F$操作 然后判断一下合不合法,十分好写 之…
题意 题目链接 Sol 咕了一年的题解..就是个模拟吧 考场上写的递归也是醉了... 感觉一年自己进步了不少啊..面向数据编程的能力提高了不少 #include<bits/stdc++.h> #define fi first #define se second #define MP make_pair using namespace std; const int MAXN = 101; int T, top = 0, now, mx, flag; pair<char, int> s…
sscanf读入数字,getline(cin,string)读一整行,其余暴力模拟即可. #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long long ll; using namespace…
题目链接 Solution 用栈进行模拟. 记录一个 \(map\) 来看循环变量有没有用过. 对于每一次入栈都加信息. 出栈直接将 \(top\) 减一下. 反正一堆乱七八糟的东西瞎搞... 注意条件如果循环内均为常数,算作 \(O(1)\). Code #include<bits/stdc++.h> using namespace std; const int inf=0x3f3f3f3f; map<char,bool>v; int sta[108],top,sum[108];…
题目大意:略 傻了吧唧的我wa了好几次 我的模拟功底真的不咋地 linux下用gets会报错,我用的fgets #include <string> #include "stdio.h" #include <cstring> #include <iostream> #include <algorithm> #define ll long long #define N 1010 #define rint register int #defin…
T1 传送门 解题思路 这似乎是小学数学知识???mod 9就相当于各位之和mod 9,打表求了个逆元,等差数列求和公式就行了. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; typedef long long LL; inline LL rd(){ LL x=,f=;char ch=getchar(); :;ch=getc…
这才是真正的$N\sqrt{N}$吧$qwq$ 记录每个数$vl$出现的位置$s[vl]$,和每个数$a[i]=vl$是第几个$vl$,记为$P[i]$,然后预处理出块$[i,j]$区间的答案$f[i][j]$; 对于$[l,r]$,现将$ans$设为$[l,r]$中整块的答案:对于散块,将散块中的每个数$a[i]=vl$,有对应的$P[i]$,我们用$s[vl]$检查第$P[i]+ans+1$个$vl$对应的位置是否在$[l,r]$,如果在的话就更新答案$ans=ans+1$,并重复上述过程,…
传送门 解题思路 贪心,首先因为\(n\)比较小,可以\(2^n\)枚举子集.然后判断的时候就每次看后面的如果用最大生产力生产能不能达成目标,解一个二次函数. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define int long long using namespace std; const int…
P2827 蚯蚓 题意 题目描述 本题中,我们将用符号\(\lfloor c\rfloor\)表示对\(c\)向下取整,例如:\(\lfloor 3.0\rfloor =\lfloor 3.1\rfloor =\lfloor 3.9\rfloor =3\). 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现在共有\(n\)只蚯蚓(\(n\)为正整数).每只蚯蚓拥有长度,我们设第\(i\)只蚯蚓的长度为\(a_i(i=1,2,\dots…
NOIP2010~2017部分真题总结 2010 (吐槽)md这个时候的联赛还只有4题吗? 引水入城 只要发现对于有合法解的地图,每个蓄水厂贡献一段区间这个结论就很好做了 那么\(O(n^3)\)对每个蓄水厂的dfs一遍,判掉有无解之后贪心线段覆盖 所以这是个爆搜+性质+贪心题? 关押罪犯 贪心+并查集 贪心显然正确,那么并查集维护一下每个点的补集就没了 机器翻译 暴力模拟 乌龟棋 dp \(f[i][j][p][q]\)表示剩余4中卡片多少张,四方枚举dp一下 或者\(f[i][j][p][q…
口胡警告 NOIP2009 潜伏者 模拟 Hankson 的趣味题 对四个数\(a_0,a_1,b_0,b_1\)分解质因数,结果序列分别记为\(\{p1^{b1}\},\{p2^{b2}\},\{p3^{b3}\},\{p4^{b4}\}\),然后对于每种质因子\(p_i\),它的指数\(a_i\)要满足\(b2_i\le a_i\le b4_i\),然后如果\(b1_i\neq b2_i\),那么\(a_i\)只能为\(b2_i\),如果\(b3_i\neq b4_i\),那么\(a_i\)…
写在前面 一个简略的\(NOIp\)题高组历年题目复习记录.大部分都有单独写题解,但懒得放\(link\)了\(QwQ\).对于想的时候兜了圈子的题打上\(*\). \(NOIp2018\ [4/6]\) 铺设道路 模拟/结论 从左往右扫一遍,扫到高度比前一个大的就累加上两者的高度差. 货币系统 \(dp\)/背包 考虑从货币系统中去掉不必要的货币,不必要的货币其实就是能被其他货币表示出的货币.货币无限多,可以看成完全背包问题,设\(f_i\)为数值\(i\)能否被小于它的数表出. \(*\)赛…
Luogu codeforces 前言 模拟赛原题.. 好好一道送分被我硬打成爆蛋.. \(\sf{Solution}\) 看了一波数据范围,感觉能 dfs 骗分. 骗成正解了. 大概就是将这个 \(n\times n\) 的矩阵全扫一遍,可以选择填 \(1\) 或不填.回溯一下就行啦. 位置问题 假设现在的坐标为 \((x,y)\) 若 \(x>n\) ,则结束 dfs ,比较一下矩阵字典序,较为简单不题. 若 \(y>n\) ,则 \(x→x+1,y=1\) ,即跳到下一行第一位. 对称处…
题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/problem/P4217 题解 模拟费用流. 首先可以建出下面这样的图: 对于每一天\(i\)建一个点,另新建源汇\(S,T\). (1) \(S\)向\(i\)连\((D_i,0)\) (表示订单) (2) \(i\)向\(i+1\)连\((+\inf,C_i)\) (拖延订单) (3) \(i+1\)…
题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法. 那就是直接用堆模拟这个过程. 对于q,我们只需要在堆中多维护一个T,记录每个点插入的时间,在新的元素插入时直接计算所比较的点的当前长度就可以完成插入了. 时间复杂度O(M*log(M)) 这样的做法只能获得65-70分,因为后面的数据非常大. 所以说,我们要另寻他路. 首先,我们经过看题解手玩可以发现一个很显然但是很重要的结论: 在q=0…
题目链接 完全模拟 1.模拟结果 当我们的模拟程序执行结束时,直接执行模拟结果函数,用于比对我们的结果和数据给出的结果. bool yes(char a[],char b[]) { ;i<=;++i) if(a[i]!=b[i]) ; ; } void print() { memset(o,,sizeof(o)); &&mk==)||(mk==)){o[]=]=]=]=')';} else { ; mi1=mk%; ) {mi10=mk/;o[]=]=]=]=]=mi10+]=mi1…
题目链接:https://www.luogu.org/problemnew/show/P1086 题目描述鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都很开心,因为花生正是他们的最爱.在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图 $1$).有经验的多多一眼就能看出,每棵花生植株下的花生有多少.为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株…
https://www.luogu.org/problemnew/show/P3952 模拟,日常认识到自己zz. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<vector> using namespace std; ; ]; int n,ans,ke; int f[maxn]={}…
题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注:本题解大部分摘自Imagine大佬提供在洛谷的题解 我们设$f(x)$表示最小循环节长度为x的合法序列数,那么有$ans=\sum_{d|gcd(n,m)}\frac{1}{d}f(d)$ 这是因为最小循环节为d的序列对应的环会被计算d次,比如 0101,最小循环节长度为 2(循环节为 01),其对…
https://www.luogu.org/problemnew/show/P3952 考场上输出的是 "YES" "NO" ++ ,如果不是亲身经历,打死我我都不信 思路: 递归模拟 细节挺多 难度不大 容易写挂 #include <bits/stdc++.h> using namespace std; ; int T, L, Maxpow; ]; ], flag; int last; inline int get() { ]; scanf("…
说一说 题目分析请从目录空降... 没想到模拟题还会卡这么久...菜得真实... 这是一个励志的故事:从$0pts->9pts->18pts->27pts->36tps->54pts->72pts->84pts->100pts$ (还不是面向数据编程,虽然这个分数的变化看来很像...) 题目分析 题目传送门 非常明显的模拟题. 由$F$和$E$的匹配关系可以想到像括号匹配那样用栈来做.(其实之前没有想到用栈的,是想用一个$tot$变量来判断能不能匹配,但是后…