问题描述

  饱了吗终于发现泡泡破解了它的代码并借此白吃白喝。饱了吗当即改变了自
己的幸运儿生成源码,但是,又被机智的泡泡偷瞄到了,机智的泡泡马上意识到
可能要饭碗不保了:
每当有人参与抽奖,这个人就进入队列。当人数达到 n 的时候开奖一次。
1. 开奖时,将执行 m 次操作,每次操作挑一个不超过 200 的数 d,且保证 d
不超过人数的一半,然后把第 D 个人和第 n-D+1 个人这两个人之间的队伍反转:
2. 反转前: 1,2,...,D-1,D,D+1,..., n-D+1, n-D+2,...n(从左往右编号)
3. 反转后: 1,2,...,D-1,n-D+1,n-D,..., D+1, D, n-D+2...n(这里的编号
是旋转前从左到右的编号)
m 次操作完后从队头开始报号,没报到 x 的回到队尾,报到 x 的就是幸运儿
啦;
机智的泡泡马上又意识到,当 n 和 m 次操作和 x 的值已知的时候,幸运儿仍
然是可以预知到是第几个参与抽奖的人的。
机智的泡泡马上又意识到,自己的饭碗保住了。
但是!机智的泡泡马上意识到一个问题,这个预知结果的代码不好打。
但是!机智的泡泡马上想起了你。
机智的泡泡马上把锅又扔给了你。

★数据输入
输入第一行为三个正整数 n, m, x。
接下来 m 行,第 i 行给出第 i 次操作的 d,如题;
对于 80%的数据, 2<=n<=2000, 1<=m<=2000;
对于 100%的数据, 2<=n<=100000, 1<=m<=100000
1<=x<=1000,000,000, 1<=d<=min(n/2,200);

★数据输出
输出幸运儿是第几个参加抽奖的人。

输入示例 输出示例
5 2 1
2 1
5
输入示例 输出示例
5 4 3
2 1 2 1
3

解题思路

  假设有五个元素,对1~5与2~4哥翻转一遍,那么2~4相当于没有翻转

  使用flag确定目标值是否翻转,若翻转,用对称性可推出翻转后得index

code

 #include <stdio.h>

 int main()
{
int i;
int num,opnum,x;
int tmp;
bool flag = false; scanf("%d %d %d",&num,&opnum,&x);
x%=num;
if(x==) x=num;
for(i=; i<opnum; i++)
{
scanf("%d",&tmp);
if(tmp<=x && x<=num-tmp+)
flag = !flag;
} if(flag)
printf("%d",num-x+);
else
printf("%d",x); return ;
}

数据结构_wow(泡泡的饭碗)的更多相关文章

  1. 数据结构_XingYunX(幸运儿)

    数据结构_XingYunX(幸运儿) 问题描述 泡泡最近下了个饱了吗 app,这个 app 推出了个坑蒙拐骗的红包系统,只要花一块钱买张一元抵用券,就有参与 20 元红包的抽奖机会,抽奖界面会实时显示 ...

  2. 泡泡后台Couchbase缓存使用经验分享

    一.导读 爱奇艺的社交业务“泡泡”,拥有日活用户6千万+,后台系统每日高峰期间接口QPS可以达到80K+,与视频业务的主要区别是泡泡业务更多地引入了与用户互动相关的数据,读.写的量均很大.无论是庞大的 ...

  3. 【PHP数据结构】交换排序:冒泡、快排

    上篇文章中我们好好地学习了一下插入类相关的两个排序,不过,和交换类的排序对比的话,它们真的只是弟弟.甚至可以说,在所有的排序算法中,最出名的两个排序都在今天要介绍的交换排序中了.不管是冒泡.还是快排, ...

  4. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  5. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  6. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  7. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

  8. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  9. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

随机推荐

  1. javascript之面试题精讲

    from:http://blog.csdn.net/q121516340/article/details/51332454 1,检测数组的几种方式: Array.isArray(); es5 toSt ...

  2. 六、python沉淀之路--int str list tuple dict 重点总结

    一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {na ...

  3. DWZ富客户端HTML框架

    一.了解 概述:是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 目的:简单实用.扩展方便(在原有架构基础上扩展方便).快速开发.RIA思路.轻量级 使用:用html扩展的方式来代替 ...

  4. Makefile中的路径

    使用 $(shell pwd) 可以在Makefile中指定为当前Makefile所在目录的路径

  5. python之 centos6.7下 python 3.5.2 源码、Django-1.9 安装

    在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...

  6. k近邻算法C++二维情况下的实现

    k近邻算法C++二维实现 这是一个k近邻算法的二维实现(即K=2的情况). #include <cstdio> #include <cstring> #include < ...

  7. Redis 分布式锁 - 分布式锁的正确实现方式

    前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...

  8. Linux SPI驱动(一)

    转载:http://www.cnblogs.com/lknlfy/p/3265019.html (原作者注:)根据我个人所知道的,Linux SPI一直是处于被“忽略”的角色,市场上大部分板子在板级文 ...

  9. linux 学习 端口占用 && 内存使用

    安装: apt-get update apt-get install net-tools Linux上:netstat -anop | grep ':50001' windows上:netstat - ...

  10. appium_python_android测试环境搭建

    第一步  安装appium •Appium是由.NET 开发的,所以,它会依赖 .NET framework相关组件,所以先安装.net framework 4.5,备注: Appium最低支持.ne ...