洛谷 P1563 玩具谜题(模拟)】的更多相关文章

题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉小南一个谜題: “眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里. ” 小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向; 而面向圈外的玩具小人, 它的左边是逆时针方…
嗯... 题目链接:https://www.luogu.org/problem/P1563 这道题主要问题就是弄明白顺逆时针的问题,其实可以简化成一个异或的问题:当head与x异或值为零时,即为顺时针:否则为逆时针. 其次要注意顺逆时针的处理: 顺:now = (now + y) % n:  逆:now = (now + n - y) % n; 细节:a[]的下标要从0开始,因为在%操作中余数会出现0的情况 AC代码: #include<cstdio> #include<iostream…
没意义,注意方向别判错. Code: #include<cstdio> #include<cstring> using namespace std; const int maxn = 100000 + 3; char A[maxn][100]; int face[maxn]; int main() { // freopen("in.txt","r",stdin); int n,m; scanf("%d%d",&n,…
如果你想不耗费脑力做出这个题目,往下看: 本萌新看到这个题目,想到了乘法法则,题目中左右方向要判断两次,很耗脑力,和乘法中的正负号判断非常像. 抽象一点:这个人向内向外就是乘法中括号外的正负号,他的左右方向是括号内的正负号,所以我们以singer为标准,每个人的 0 (朝内)为 1 ,每个人的 1 (朝外)为 -1 . 而他们的左右方向,因为题目图中是逆时针走向,所以和他们的朝内朝外是相反的,故判断每个人左右方向时, 0 为 -1 , 1 为 1 . 最后将两个判断方向的数乘起来(这事当然交给电…
P1563 玩具谜题 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉小南一个谜題: “眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里. ” 小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向; 而面向圈外的玩具小人…
P1563 玩具谜题 结论: map在一些情况有种"对象"的意味,在JSON中,对象可以用K-V格式存储:mybatis中参数是map或者对象都可以实现解析...k-v格式的数据存储和对象可以相互转换. 使用map进行模拟 耗时1300ms....不会优化了...,代码没精简,凑合看吧,其中if判断可以简写两两在一起,这里不改了.也不是主要要说的. int rolenum,ordernum; cin>>rolenum>>ordernum; map<stri…
洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{X+1} +-+ A_Y<0,1<X<=Y<n,\)令\(S=A_X +A_{X+1} +-+ A_Y\),对于\(A_{X-1}\)和\(A_{Y+1}\)分别加上S,\(A_X\)和\(A_Y\)分别减去S(如果X=Y就减两次).问最少几次这样的操作使得最终数列是完美的. 输入输出…
题目链接:https://www.luogu.com.cn/problem/P1563 哈哈哈,这个题拿来一读是不是很吃惊hahaha,我刚开始读的时候吓了我一跳,这么长的题干,这么绕的题意,还有下面的子任务数据,好吓人,认为是一个难题. 其实,不必惊慌,这个题是一思路很清晰的模拟题.模拟一下就知道了. 首先,我们要开始中规中矩的输入n,m,在中规中矩的输入名字和朝向,题目要求我们输入一个整形数字和一个字符串,这个用结构体struct来解决即可. 大致过程如图: 下面开始模拟: 题目规定, 朝内…
就是一个简单模拟 #include<iostream> #include<string> using namespace std; ; int in[maxn], x[maxn], y[maxn]; string name[maxn]; int h; int n, m; int main(){ cin>>n>>m; ;i<n;++i)cin>>in[i]>>name[i]; ;i<m;++i)cin>>x[i]…
题目链接 纯模拟题,没啥好说的,就是要判断地方有点多,一定要注意细节. #include<iostream> #include<cstdio> #include<fstream> #include<algorithm> #include<string> #include<sstream> #include<cstring> using namespace std; int k[100005]; char s[100005]…
https://www.luogu.org/problemnew/show/1563 题目: 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉小南一个谜題: "眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里. " 小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具…
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. 之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N*N): 1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列的右一列: 2.若(K−1)在最后一列但不在第一行,则将K填在第一列,(K−1)所在行的上一行: 3.若(K−1)在第一行最后一列,则将K填在(K−1)…
P3195 [HNOI2008]玩具装箱TOY 第一道斜率优化题. 首先一个基本的状态转移方程是 要使f[i]最小,即b最小. 对于每个j,可以表示为一个点. 然后我们取固定斜率时截距最小的即可,高中线性规划. 单调队列维护下凸包. 然后每次二分出j,转移. 记得给(0,L * L)赋初值. 记得开long long ++,--最好别随便用,编译器的不同会让你爆0... #include <cstdio> typedef long long LL; ; LL sum[N], g[N], p[N…
传送门 惊叹考场dubuffdubuffdubuff. 这题还没有梭哈难啊233. 直接按照题意模拟就行了. 代码: #include<bits/stdc++.h> using namespace std; int T,n,typ,dep[105]; bool f; inline int calc(char s[]){ int len=strlen(s); int ret=0,pos=0; for(;pos!=len;++pos)if(isdigit(s[pos]))break; while(…
from HNOI2003 [题目描述:] 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则优先级越高. 如果一个进程到达的时候CPU是空闲的,则它会一直占用CPU直到该进程结束.除非在这个过程中,有一个比它优先级高的进程要运行.在这种情况下,这个新的(优先级更高的)进程会占用CPU,而老的只有等待. 如果一个进程到达时,CPU正在处理一个比它优先级高或优先级相同的进程,则这个(新到达的)…
题目描述 给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地.求到达终点的最少时间. 如果无法偏移至终点,输出“-1”. 输入输出格式 输入格式: 第一行两个正整数x1,y1,表示小明所在位置. 第二行两个正整数x2,y2,表示小明想去的位置. 第三行一个整数T,表示T个时刻. 第四至第N+3行,每行一个字符,表示风向,即东南西北的英文单词的首字母. 输出格式: 最少走多少步. 输入输出样例 输入样例#1: 1 1 2 2 5 E N W W N 输…
题目:https://www.luogu.org/problemnew/show/P1498 大约一年前该做的题...现在来填一下坑: 然而不怎么会模拟!还滚去看TJ了: 就是翻倍复制: \ 这个符号原来如此神奇!好像有什么功能,所以打两个(\\)才代表这个字符本身. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace…
传送门 ## T1 区间修改+单点查询.差分树状数组. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; inline int rd(){ ,f=;char ch=getchar(); :;ch=getchar();} )+(x<<)+ch-';ch=getchar();} return f?x:-x; } void out(int x){ if(!x)…
题目链接:https://www.luogu.com.cn/problem/P2058 这是一道用手写队列模拟的一道题,没有什么细节,只是注意因为数不会很大,所以直接用数作为数组下标即可,不用用map映射. AC代码: #include<cstdio> #include<iostream> using namespace std; ; int n,head,tot,b[maxn],ans; struct node{ int ti,id; } a[maxn]; int main(){…
嗯... 题目链接:https://www.luogu.org/problem/P5016 这道题是一道模拟,不要考虑复杂,直接暴力枚举每一个点,看看加上s2之后两个势力的差值,找最小,记录下标. 注意数据很大,用long long, 最小值的初始值要足够大. AC代码: #include<cstdio> #include<iostream> #include<cmath> using namespace std; long long n, p1, s1, s2, su…
这一题就是一个很普通的模拟,每次输入的时候存储四个角的值 把四个角的横纵坐标存储在一排.然后在倒序遍历一遍,查找的时候就看所要查找的坐标在不在这个范围内,如果找到了就标记一下再输出,如果没有找到就输出-1:时间复杂度只有O(n); 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n张地毯,编号从 1 到n.现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上. 地毯铺设完成后…
分析可知:将起点和终点按照从小到大的顺序排序,对答案不会产生影响 所以此时我们得到一种模拟做法: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=2e4+10; 4 int n,a[N],b[N],ans; 5 //模拟做法 6 int main(){ 7 scanf("%d",&n); 8 for(int i=1;i<=n;i++) 9 scanf("%d%d"…
题目大意: 有n个数,要将他们分成若干段,每一段的cost定义为: cost=r-l+ΣCk (k∈[r,l]) 该段的最终花费是:(cost-L)^2; 给出L,n,C(1~n),总共的最小花费. 分析: dp方程极容易想出来: f[i]=max(f[j]+(sum[i]-sum[j]+i-j-1-L)^2) 其中sum[i]表示c(1~i)的和.因为取的这一段数从j+1开始,所以i-j-1(题目中i-j并不是区间长度!没有再加1) O(n^2)直接挂掉. 因为状态O(n)已经非常不错,无法再…
题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中111111分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白111111分制和212121分制对选手的不同影响.在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙. 题目描述 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在111111分制和212121分制…
点此进入比赛 T1:小凯的数字 题意:给定q个l,r,求l(l+1)(l+2)...(r-1)r模9的结果 很显然,这是道考验数(运)学(气)的题目 结论:输出\((l+r)*(r-l+1)\over2\)(具体证明见比赛官方博客) 需要注意的是不能直接乘,不然会爆long long 而且,这道题卡快读... Code: #include<bits/stdc++.h> #define ll long long using namespace std; ll q,l,r; int main(){…
题目:https://www.luogu.org/problemnew/show/P1079 大水题. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,M=; int n,m; char a[N],b[N]; int get_int(char ch) { ; ; } int main() { scanf(); n=s…
把No写成NO,WA了一发-- 现在看这题也不难-- 用一个栈,记一下前面F的字母,是否合法,合法的有多长,每次入栈弹栈即可 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=105; int T,n,top,co[305],mx,fl,er,va; char o[10],c[N]; struct qwe { char c; int fl,va;…
题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i 次项,ai 称为 i 次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式: 1. 多项式中自变量为 x,从左到右按照次数递减顺序给出多项式. 2. 多项式中只包含系数不为 0 的项. 3. 如果多项式 n 次项系数为正,则多项式开头不出现“+”号,如果多项式 n 次项系 数为负,则多项式以“-”号开头. 4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项 系数…
传送门 ## $T1$ 一道结论题,设原来A队能力最大的是x,那么A队的选择方案就是$2^{x-1}$,B队的选择方案就是$(2^{n-x}-1)$种,因为不能不选.其中$1\leq x\leq n$,那么根据乘法原理,最后的答案就是 $\sum\limits^{n-1}_{x=1}2^{x-1}*(2^{n-x}-1)$,化简可得 $ans=n*2^{n-1}-(2^{n}-1)$,然后一个快速幂就行了. #include<iostream> #include<cstdio> #…
嗯... 题目链接:https://www.luogu.org/problem/P1076 这道题的题意首先太难理解...并且细节太多... 可以用b[i][j]记录每个指示牌上的数字,a[i][j]记录是否有楼梯.那我们开一个ans,每次到达一个门就ans+=a[i][j](如果有楼梯,a[i][j]=1,ans就加了1,如果没有楼梯,a[i][j]=0,ans加的就是0,相当于没加),当ans=一开始指示牌上的数字时,退出循环. ————并且正解要剪枝—————— 用c[i]记录第i层一共的…