首页 > 编程语言 >算法刷题记录:P1563 [NOIP2016 提高组] 玩具谜题

算法刷题记录:P1563 [NOIP2016 提高组] 玩具谜题

时间:2023-06-09 16:47:26浏览次数:47  
标签:std NOIP2016 idx int P1563 cin https 刷题

题目链接

  https://www.luogu.com.cn/problem/P1563

题目分析

既然是环形问题,那么直接取模来进行模拟即可,注意顺时针逆时针
顺时针的箭头是向左拐,是+,逆时针的箭头是向右拐,是-

AC代码

// Problem: P1563 [NOIP2016 提高组] 玩具谜题
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1563
// Memory Limit: 500 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <iostream>

#define fs first
#define sc second
typedef std::pair<std::string, int> psi;
const int N = 100010;

int n, m;
psi w[N];

// 朝内:左->顺->+,右->逆->-, 0  
// 朝外:相反, 1
int main()
{
	std::cin >> n >> m;
	for (int i = 0; i < n; ++ i)
		std::cin >> w[i].sc >> w[i].fs;
	
	// p=0:左数, p=1右数
	int p = 0, q = 0, idx = 0;
	while (m -- ){
		std::cin >> p >> q;
		if (!w[idx].sc)		// 朝内
			if (p) idx = (idx + q) % n;
			else idx = (idx + n - q) % n;
		else				// 朝外
			if (p) idx = (idx + n - q) % n;
			else idx = (idx + q) % n;
	}
	std::cout << w[idx].fs;
}

标签:std,NOIP2016,idx,int,P1563,cin,https,刷题
From: https://www.cnblogs.com/ClockParadox43/p/17469599.html

相关文章

  • 【华为HCIP | 高级网络工程师】刷题日记(9)
    个人名片:......
  • [刷题笔记] Luogu P3073 [USACO13FEB]Tractor S
    ProblemSolution和汽车拉力比赛差不多,思路都是二分,二分\(d\),但是汽车拉力比赛从一个路标开始搜即可,本题没有给定起点。一条合法路径起点是未知的,不得随便从一个点开始搜,否则可能找不到正确路径。怎么处理呢?容易想到对于每一个二分的\(d\),开一个\(n^2\)的循环,从每一个点开始搜......
  • 【LeetCode】11月每日一题刷题记录
    575.分糖果classSolution{public:intdistributeCandies(vector<int>&candyType){unordered_set<int>S;for(autoc:candyType)S.insert(c);returnmin(candyType.size()/2,S.size());}};237.删除链表中的节点由于是单链表......
  • re | buuctf逆向刷题之Ultimate MineSweeper全分析
    写在前头最近在buuctf上刷逆向题,做到UltimateMineSweeper,这是一道用.NET写的扫雷题,题目不难,有类名和函数名符号,分析起来很容易,耐心一点都能找到flag,但是我还是对这个题目很感兴趣,毕竟每个逆向爱好者都有一颗破解扫雷的心,所以我还是认真的把整个程序都逆了一遍,再加上目前在网上看......
  • 牛客网刷题一
    牛客网FPGA题库刷题之快速入门题库(一)1~8题第一题题目链接:四选一多路器代码:`timescale1ns/1nsmodulemux4_1(input[1:0]d1,d2,d3,d0,input[1:0]sel,output[1:0]mux_out);//*************code***********//reg[1:0]mux_out_tmp;always@(*)begin......
  • 刷题日记--最长公共子串问题
    题目描述:给定两个字符串str1和str2,输出两个字符串的最长公共子串abcdebebcd==>bcd实现代码:实现代码publicclassMaxSubString{publicstaticvoidmain(String[]args){Stringst1="abcde";Stringst2="ace";System.out.println......
  • [刷题笔记] Luogu P2895 Meteor Shower S
    ProblemSolution显然bfs,只不过有了限定条件,有实时的流星雨这里提供两种做法:Solution1这也是我一开始的做法模拟实时流星,由于bfs是按层搜的,是严格按照时间递增搜的,故可以模拟实时放流星。需要注意放流星的时间,如果第\(t\)秒有流星,则该秒不可以走,需要在每一秒前放流星。那......
  • [刷题笔记] LuoguP2658 汽车拉力比赛
    ProblemSolution需要找到最小满足题意的\(d\),显然\(d\)满足单调性,考虑二分二分\(d\),然后直接bfs,每次bfs判断能不能走的时候还需要加上高度差不超过二分的\(d\)(即满足),bfs跑完后看看所有的路标都被访问了没。(可以记录个数,因为不可能重复走)二分的时候注意\(l\)从0开始,不然会WA......
  • [刷题笔记] ybt1250:The Castle
    ProblemSolution显然bfs,只不过扩散的时候需要判断墙那么如何判断墙呢?题目只给出了每个方块墙方向的和原来的思路是可以暴力,很复杂但是可做,代码就不给了。后来教练讲到了可以用位运算巧妙实现,这里重点介绍一下:首先,我们观察一下每面墙代号的二进制:十进制二进制100......
  • [刷题笔记] ybt1255:迷宫问题
    题目传送门Solution数据范围很小,一共才\(5\times5\),所以乱搞做法很多比如我一开始就先bfs单纯跑最短路,然后dfs找路径但是忘回溯被嘲讽其实可以边bfs边记录路径,因为bfs是按层数搜的,所以第一次到达终点的路径一定是最优的。那么如何记录路径呢?我原来用pair,经教练指导发现可以......