A.圆环出列

A - 圆环出列

Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 128000/64000 KB (Java/Others)

Submit Status

Problem Description

n个人坐成一个圆环(编号为1 - n),有一个广播在随机报号,每次被点到编号的人出列,若被点到的编号的人已经不在圆环中了,则它左边第一个还在圆环上的人出列,其中编号i左边的人的编号是i-1(i>1),编号1左边的人是n

Input

?每个样例第一行输入两个数n(1≤n≤10^6),q(1≤q≤10^5 && q≤n)
?接下来q行每行有一个数id(1≤id≤n),表示被点到的编号
所有样例的q的和不超过10^7

Output

对于每组数据输出一行,形如"Case #X:",X表示第几个样例

对于每个被点到的编号,输出一行出列的人的编号

Sample Input

10 3
6
6
6

Sample Output

Case #1:
6
5
4

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 const int N=1e6+10;
 5 const int INF=0x3f3f3f3f;
 6 int cas=1,T;
 7 int pa[N],n,q;
 8 int tot=0;
 9 int find(int x)
10 {
11     tot++;
12     return x==pa[x]?x:pa[x]=find(pa[x]);
13 }
14 int main()
15 {
16 //    freopen("1.in","w",stdout);
17     freopen("1.in","r",stdin);
18     freopen("1.out","w",stdout);
19 //    scanf("%d",&T);
20     int sumn=0,sumq=0;
21     while(scanf("%d%d",&n,&q)==2)
22     {
23         sumn+=n;sumq+=q;
24         for(int i=1;i<=n;i++) pa[i]=i;
25         pa[0]=n;
26         printf("Case #%d:\n",cas++);
27         while(q--)
28         {
29             int x;
30             scanf("%d",&x);
31             x=find(x);
32             printf("%d\n",x);
33             pa[x]=x-1;
34         }
35     }
36     cerr<<"time="<<(double)clock()/CLOCKS_PER_SEC<<" "<<sumn<<" "<<sumq<<" "<<tot<<endl;
37     return 0;
38 }

solve.cpp

题解:

这道题的代码本来是用来生成数据的,要生成[1,n]区间内的所有数,有一个随机数生成器在生成数字,但每个数只能出现一遍,于是当这个数不存在时就取这个数的下一个数
做法是用并查集,每个根表示存在的数,当一个数出现过之后就将这个数连到后一个根上去,记得路径压缩

由于当时出题时题目顺序没部署好,这题放在了第一题,而且题面是中文的,题意易懂,师弟上来就开始做这题,半个小时左右有个师弟A了,然后就把榜带歪了,很多人在卡这道题不去看后面的水题,其实这道题并不好想,而且专门卡了log的做法,最终也只是5个人AC

时间: 2024-10-13 20:41:33

A.圆环出列的相关文章

自定义控件:绘制圆环的实现过程

使用自定义控件绘制一个圆环,需要重现的方法是OnDraw()实现对view 的绘制,从而输出符合自己需求的view 控件观察圆环的组成部分:外层圆+中间百分比文字+不断变化进度的弧形圈--->分析:每一个组成部分需要的属性,构成几个关键的自定义属性1:外层圆的颜色2:弧形进度圈的颜色3:中间百分比文字的颜色4:中间百分比文字的大小5:圆环的宽度(作为进度弧形圈的宽度)6:*首页当中也有一个圆环进度,为了兼容使用首页的圆环进度,增加一个自定义属性,绘制进度弧形圈的风格(实心[Fill],空心[St

自定义组合控件 圆环 ring

说明 可以设置内部填充或不填充 可以社会中边框颜色 View public class MyRingView extends RelativeLayout {     private Context mContext;     private ImageView iv_circle;     private ImageView iv_solid;     public MyRingView(Context context) {         super(context);         in

iOS边练边学--(Quartz2D)图片裁剪,带圆环的裁剪

一.图片裁剪,示意图 二.带圆环的图片裁剪示意图

带缺口的圆环CSS3 Loading动画

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

[WebGL入门]二十,绘制立体模型(圆环体)

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 立体的模型 这次稍微喘口气,开始绘制立体模型.这里说的[喘口气]是指本次的文章中没有出现任何新的技术知识点.只是利用到现在为止所介绍过的内容,来绘制一个立体的圆环体.到现在为止,只绘制了三角形和四边形,当然,在三维空间中绘制简单的多边形也没什么不对,但是缺点儿说服力.

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序.她们甚至也不能通过仍硬币的方式. 所以她们通过"round number"竞赛的方式.第一头牛选取一个整数,小于20亿.第二头牛也这样选取一个整数.如果这两个数都是 "round numbers"

MySQL查询计划输出列的含义

"一:MySQL查询计划输出列的含义:1.id:每个被独立执行的操作的标识,表示对象被操作的顺序:id值越大,先被执行:如果相同,执行顺序从上到下.2.select_type:查询中每个select子句的类型.3.table:名字,被操作的对象的名称,通常是表名,但有其他格式.4.partitions:匹配的分区信息(对于非分区表值为NULL).5.type:连接操作的类型.6.possible_keys:备选的索引(列出可能被使用到的索引).7.key:经优化器选定的索引:常使用ANALYZE

两种CSS3圆环进度条详解

晚上睡觉之前,我抽了1个多小时,研究了一下圆环进度条,结合从网上查阅的资料,我终于掌握了两种圆环的生成方法. 这次的效果就是单纯的CSS3效果,也没有写具体的JS,等以后有时间在好好整理一下吧~. 第一种:通过overflow溢出隐藏的方式: 这种方法好处在于容易理解,只需要一层一层的嵌套,即可得到效果,但是实现起来较为繁琐,HTML的结构也比较冗余. 先看HTML结构: <div class="circle-one"> <div class="circle

Android 自定义View修炼-高仿猎豹清理大师自定义内存开口圆环比例进度View

一.概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思路,利用上下两张图,旋转上面张图以及使用 PorterDuffXfermode  来设置合适的渲染模式,就可以达到效果.下面看看咱们的效果吧 二.效果图 三.Xfermode渲染模式简介: xfermode影响在Canvas已经有的图像上绘制新的颜色的方式 * 正常的情况下,在图像上绘制新的形状,如果新的Paint不是透明的,