模拟
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
P1766 液体滴落(模拟)
P1766 液体滴落(模拟)需要的前置知识:已知直线两点求直线解析式。难点:判断当前水滴需要落在什么位置。判断方法:当前S∈[xl,xr]S\in[x_l,x_r]S∈[xl,xr],且Y≥min(yl,yr)Y\ge min(y_l,y_r)Y≥min(yl,yr),然后在所有能落的线段中选取Y′Y'Y′最大的那一个,如果没有答案则是SSS,否则更新S,YS,YS,Y。code// Problem: P1766 液体滴落// Contest: Luogu// URL: https:/原创 2021-05-08 10:35:24 · 455 阅读 · 3 评论 -
牛客小白月赛29 F.项链
牛客小白月赛29 F.项链思路:就是维护一个有前驱和后继的链表就行了,或者开两个数组l[],r[]l[],r[]l[],r[]下标存编号也可以,挺简单的模拟。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e4+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset(a,b,sizeof a)#define PII原创 2020-11-20 22:43:39 · 298 阅读 · 0 评论 -
POJ-1086 Parencodings (模拟)
POJ-1086 Parencodings (模拟)思路:利用题意给的数组我们求出每个右括号距离前一个右括号之间有多少左括号,作差即可,然后我们就可以模拟操作了。#include<iostream>#include<cstdio>#define pb push_backusing namespace std;int main(){ int t;scanf("%d",&t); while(t--){ int n,a[25]={}; scanf("%d",原创 2020-10-22 16:58:02 · 289 阅读 · 0 评论 -
Humidex POJ-3299 (模拟)
Humidex POJ-3299 (模拟)传送门思路:模拟题意分三种情况C(3,2)=3C(3,2)=3C(3,2)=3讨论就好了。#include<iostream>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memse原创 2020-10-19 11:02:50 · 327 阅读 · 0 评论 -
Yandex.Algorithm Open 2011: Qualification 1 B. Sequence Formatting
Yandex.Algorithm Open 2011: Qualification 1 B. Sequence Formatting (模拟)题意:给定由数字,逗号,省略号(3个点)组成的字符串,要求输出规范格式后的字符串。思路:简单模拟题,需要注意一些细节。数字之后如果没有逗号需要空格。如果省略号在开头则前面不需要加空格。如果逗号后面是省略号则它们之间只能有一个空格。字符串末尾不能有空格,如最后一个符号是逗号或者数字。#include<bits/stdc++.h>using n原创 2020-10-18 09:13:18 · 914 阅读 · 0 评论 -
Codeforces Beta Round #76 (Div. 1 Only) A. Frames
Codeforces Beta Round #76 (Div. 1 Only) A. Frames (模拟)题意:给定nnn个文件夹,每行至多放mmm个文件夹,给定编号a,ba,ba,b,求删除[a,b][a,b][a,b]的所有文件夹的最小操作数。思路:显然最多我们只需要删除333次,因此我们只需要找出1,2,31,2,31,2,3次分别对应哪些情况即可,事实上我们只需要找两种,令一种直接elseelseelse即可。一.先从111开始找。我们令a,ba,ba,b分别对应的二维坐标位置为(xa,原创 2020-10-18 09:06:57 · 212 阅读 · 0 评论 -
1060 Are They Equal (字符串)
1060 Are They Equal (字符串)科学计数法的模拟题,注意前导0和不足要补0,并且判断小数点的位置。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset(a,b,sizeof a)#define lx x<<1#define rx原创 2020-10-10 18:01:35 · 299 阅读 · 0 评论 -
牛牛的01游戏(递归&模拟)
牛牛的01游戏(递归&模拟)思路:递归或者模拟。模拟的时候注意到一旦ans.back()=c=1ans.back()=c=1ans.back()=c=1时,这时ccc不产生贡献了。模拟方法string solve(string s) { string ans; for(char c:s){ bool f=true; while(!ans.empty()&&ans.back()==c){原创 2020-08-14 09:56:12 · 348 阅读 · 0 评论 -
J.Pointer Analysis(模拟)
J.Pointer Analysis(模拟)思路:模拟,多次循环暴力所有情况,具体看代码。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=26+5,M=205,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a) memset(a,0,sizeof a)int tmp[N][N][N],g[N][N],n,loop=52;char s[M][N<原创 2020-08-02 13:54:01 · 991 阅读 · 0 评论 -
B.Namomo子串(模拟&DP)
B.Namomo子串(模拟&DP)思路:简单模拟&dpdpdp。显然我们只需每次找到namomonamomonamomo类型的串,然后枚举循环次数。假设从长度为9开始(前两个momomo不计算)momomo的个数xxx个,显然nanana开头的贡献数为x+1x+1x+1个(分别是长度为6,8…6,8\dots6,8…)。接下来不以nanana开头的子串显然有1+2+…x1+2+\dots x1+2+…x个。因为长度为666的有xxx个,888的有x−1x-1x−1个,长度为2x+4原创 2020-07-05 09:04:22 · 641 阅读 · 0 评论 -
F. Cyclic Shifts Sorting(模拟&排序)
F. Cyclic Shifts Sorting(模拟&排序)传送门思路: 模拟冒泡排序,只不过两个数交换,变成了三个数进行位置转换。显然三个数可以顺时针走,也可以逆时针走(顺时针操作两次等价于逆时针操作一次)(顺时针操作两次等价于逆时针操作一次)(顺时针操作两次等价于逆时针操作一次)。我们可以第iii轮将当前最小的数移动到位置iii,因为每操作一次,第三个数可以移动到第一个数的位置。如果当前最小的数与位置iii的距离不是2的倍数,我们需要让位置pospospos操作一次,使其变为pos原创 2020-06-29 21:25:46 · 601 阅读 · 0 评论 -
P1895 数字序列
P1895 数字序列传送门思路:模拟。先要找到是在那一个子序列ep:sub1=1,sub2=12,sub3=123,sub4=1234ep:sub_1=1,sub_2=12,sub_3=123,sub_4=1234ep:sub1=1,sub2=12,sub3=123,sub4=1234.我们记录每个子序列的长度然后求和查找即可。我们可以找到答案在第k1k_1k1个子序列的第xxx位。然后我们需要找到第xxx位是在哪一个数里面。还是利用子序列的长度查找。保证第k2k_2k2个子序原创 2020-06-13 21:49:06 · 652 阅读 · 0 评论 -
Arithmetic Problems(后缀表达式)
Arithmetic Problems(后缀表达式)传送门思路:后缀表达式裸题,只不过换了下运算符的意义。栈或者数组模拟栈都可以。注意用cincincin跳过空格就行了。栈模拟:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;#define mst(a) memset(a,0,sizeof a)int main(){ double n; char c;原创 2020-06-04 15:00:47 · 504 阅读 · 0 评论 -
Stay up Late and Wake up Early(模拟)
Stay up Late and Wake up Early(模拟)传送门思路:简单模拟的水题,注意可能不是同一天取下模即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;#define mst(a) memset(a,0,sizeof a)bool jg(int x){ int h=x/60,m=x%60; if(h%10==7||m%10==7原创 2020-06-04 13:59:45 · 595 阅读 · 0 评论 -
汉诺塔专题讲解。
汉诺塔000题意:三根柱子,每次移动距离无限制,一次移动一个圆盘,问将所有圆盘从AAA按大小顺序移动到CCC最少需要多少步。思路:因为这里不需要小圆盘始终在大圆盘上面,所以设移动nnn个圆盘的方案为f(n)f(n)f(n),显然先将n−1n-1n−1个圆盘移动到BBB上需要n−1n-1n−1步。然后最后一个圆盘移动到CCC需要111步,然后再将n−1n-1n−1个圆盘移动到CCC需要n−1n-1n−1步。所以f(n)=2n−1f(n)=2n-1f(n)=2n−1.汉诺塔1题意:三根柱子,每次移原创 2020-06-04 09:16:17 · 408 阅读 · 0 评论 -
红石音乐(模拟)
红石音乐(模拟)传送门思路:转换一下模拟,先将每个音符转换为对应的数字,可以观察到每个数组对应A,B,C,D,F,GA,B,C,D,F,GA,B,C,D,F,G我们令A1=1A1=1A1=1,以半调为1个单位,则有B1=3,C1=4,D1=6,E1=8,F1=9,G1=11B1=3,C1=4,D1=6,E1=8,F1=9,G1=11B1=3,C1=4,D1=6,E1=8,F1=9,G1=11.而A2=13A2=13A2=13,B2=15…B2=15\dotsB2=15…因此我们可以将121212为一个原创 2020-05-30 19:11:11 · 467 阅读 · 0 评论 -
D. Constructing the Array(排序&递归)
D. Constructing the Array(排序&递归)思路:因为只分成了nnn个区间,对于分区间我们可以用递归实现,然后根据题目要求进行排序即可,因此我们可以用pairpairpair来储存区间长度和当前的中点下标。对于排序方式,我们可以用将区间长度取相反数然后从小到大排,或者自己写一个自定义排序。时间复杂度:O(nlogn)O(nlogn)O(nlogn)#include <bits/stdc++.h>using namespace std;const int N原创 2020-05-15 08:38:42 · 568 阅读 · 0 评论 -
C - Colliders (素数筛&模拟)
C - Colliders (素数筛&模拟)思路:本题关键 在于判断是否冲突,互质的一个特点:两个数的素因子没有交集。因此我们可以用一个数组储存每个素因子的归属,并且用一个二维vectorvectorvector保存每个数的素因子。再用一个vis[]vis[]vis[]数组记录机器是否打开,就可以完成模拟了,具体看代码。AC代码:#include<cstdio>#i...原创 2020-05-04 10:29:35 · 360 阅读 · 0 评论 -
Codeforces Round #632 (Div. 2) D. Challenges in school №41 (模拟&思维)
Codeforces Round #632 (Div. 2) D. Challenges in school №41 (模拟&思维)题目传送门题意:给定序列求使得转身k轮刚好序列中不再存在转身的序列的解决方案。思路:AC代码:#include<bits/stdc++.h>using namespace std;vector<vector<int&...原创 2020-04-09 12:14:20 · 553 阅读 · 0 评论 -
P1086 花生采摘 (贪心&模拟)
P1086 花生采摘 (贪心)题目传送门题意:给一矩阵,按贪心思路最多能才多少花生并在规定时间内返回。思路:由于是贪心所以直接对有花生的点排序一下就好了,然后遍历每次判断一下即可。AC代码:#include<bits/stdc++.h>using namespace std;struct p{ int x,y,w;}a[405];int m,n,k,id=0,ans...原创 2020-04-06 16:05:05 · 931 阅读 · 0 评论 -
P1079 Vigenère 密码 (简单模拟&字符串)
P1079 Vigenère 密码 (简单模拟&字符串)题意:给出密钥和密文求明文。思路:分两种情况:每种情况又分大小写两种情况即可。大小写可以用toupper( ),tolower( )实现。ps:看起来花里胡哨的。AC代码:#include<bits/stdc++.h>using namespace std;int main(){ string a,b,c;...原创 2020-04-06 15:39:26 · 388 阅读 · 0 评论 -
P1067 多项式输出 (字符串&细节)
P1067 多项式输出 (字符串&细节)题目传送门题意:给定一元n次多项式的n+1个系数,输出该多项式。思路:detail1: 注意判断an和a0.detail2:系数绝对值为1和0的情况.detail3:还有指数为1的情况.detail4:不为第一个系数的正数要加上’+‘#include<bits/stdc++.h>using namespace std;i...原创 2020-04-04 16:08:19 · 342 阅读 · 0 评论 -
P1051 谁拿了最多奖学金 (简单排序)
P1051 谁拿了最多奖学金 (简单排序)题目传送门题意:求最多奖金的学生姓名和奖学金,以及所有人的奖学金总数。思路:结构体排序即可。#include<bits/stdc++.h>using namespace std;struct p{ string s; int a,b; char c,d; int e,id,sum;}f[105];bool cmp(p x...原创 2020-04-04 15:13:31 · 379 阅读 · 0 评论 -
P1042 乒乓球 (模拟)
P1042 乒乓球 (模拟)题目传送门题意:给若干行字符串求11分制和21分制下的比分全部输出。思路:用getchar读入,一边读一边记录,对11分制来说,若有一方分数大于等于11且两者比分差大于等于2则记录下比分,然后初始化状态继续。注意的细节:detail1:结束后还需记录一下最后的比分,比如1:2还没有比完的比分。 detail2:0:0也算比分。即输入EWLWLWL 要输出0:0...原创 2020-04-04 14:57:03 · 540 阅读 · 0 评论 -
P1022 计算器的改良(模拟&字符串)
P1022 计算器的改良(模拟&字符串)题目传送门题意:输入一个一元一次方程字符串,求解。思路:和后缀表达式有点类似,不过这个要判断是数字还是字母。每当读取的字母时则对字母前的系数求和,如果遇到运算符就对运算符前的数字求和。以“=”为界限,全部移到一边,最后系数相除得结果,注意-X=0的情况。#include<bits/stdc++.h>using namespace...原创 2020-04-03 13:53:50 · 462 阅读 · 0 评论