题目链接https://www.luogu.org/problemnew/show/U25598

这个题是我昨天在补HDU5361时根据它的优化方法想出来的一道题。我写的标解是并查集。

题意

有n个椅子n个人,每个人都有个目标椅子,但是如果目标椅子已经被人抢了,就继续往后找。n<=10^7

输出最后每把椅子上做的是谁。

分析

开一个并查集,pos=find(i)代表第i把椅子右边最近的空椅子。初始时所有的椅子都是空的所以p[i]=i,最近的时它本身。

当第i把椅子被选了以后,则更新p[find(i)]=find(i+1)。

代码如下

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <iostream>
 5
 6 using namespace std;
 7 const int maxn=10000000+10;
 8 int a[maxn],v[maxn],p[maxn];
 9 int T,n;
10 int find(int x){
11     return p[x]==x?x:p[x]=find(p[x]);
12 }
13 int main(){
14    // freopen("out.txt","r",stdin);
15    // freopen("out2.txt","w",stdout);
16     scanf("%d",&T);
17     for(int t=1;t<=T;t++){
18         scanf("%d",&n);
19         memset(v,0,sizeof(v));
20         for(int i=0;i<=n+2;i++)p[i]=i;
21         for(int i=0;i<=n;i++){
22             scanf("%d",&a[i]);
23         }
24         bool ok=1;
25
26         for(int i=0;i<=n;i++){
27             int pos=find(a[i]);
28            // cout<<i<<" "<<pos<<endl;
29             if(pos>n){
30                 ok=0;
31                 break;
32             }
33             v[pos]=i;
34             p[pos]=find(pos+1);
35         }
36         if(!ok){
37             printf("-1");
38         }
39         else{
40             for(int i=0;i<=n;i++)
41                 printf("%d ",v[i]);
42         }
43         printf("\n");
44     }
45 return 0;
46 }

View Code

转载于:https://www.cnblogs.com/LQLlulu/p/9033844.html

【自定义】抢妹子大作战相关推荐

  1. 2018,抢票大作战

    寒冬腊月,雾霾笼罩,又到了抢票的季节! 抢票资源 了解更多抢票信息.软件及技巧,请加群:417633743 抢票记录 2018.1.17 多次失败后,终于抢到了有座的了. 2017.12.29 今天进 ...

  2. Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. 一起忙Day大作战,抢戴尔显示器!

    申耀的科技观察 读懂科技,赢取未来! 忙Day大作战 又是新的一周,你的工作忙碌指数如何?有没有爆表? 小戴对"忙碌"的辛苦感同身受,也对"忙碌"的价值.工作的 ...

  4. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. Expo大作战(十九)--expo打包后,发布分用程序到商店的注意事项

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  6. 《球球大作战》游戏优化之路(上)

    自从2015年<球球大作战>发布以来,现已拥有五亿多的玩家.如此庞大的玩家群体,对游戏的画面,性能要求是非常高的.在Unite Shanghai 2019大会中,<球球大作战> ...

  7. 转dem_约会大作战:真那离开DEM社,欠着的500万就不用还了

    <约会大作战>中,有着两股主要的战斗力,其一是大家非常熟悉的精灵妹子,其二便是魔术师.作为作品中战斗力的主要构成之一,魔术师在整个故事里可以是发挥了相当重要的作用.只不过,魔术师们大多数情 ...

  8. 新年Java小游戏之「年兽大作战」祝您笑口常开

    这个游戏加上编写文章,上班摸鱼时间加上回家的空闲时间,大概花了三天多. java写这玩应真的很痛苦,各种状态位,各种图片和逻辑判断,脑袋都快炸了.而且肯定没有前端的精致,效果一般,偶尔会有卡顿,各位就 ...

  9. Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

最新文章

  1. Educational Codeforces Round 108(Rated for Div. 2) E - Off by One(一种一般图的边最大匹配,好题)
  2. OpenGL关于纹理和基本图形的混合问题
  3. error: object MultivariateNormalDistribution is not a member of package
  4. Python实现中文分词--正向最大匹配和逆向最大匹配
  5. 2017尼毕鲁笔试算法题
  6. c# 写文件注意问题及用例展示
  7. php str_replace替换特殊字符
  8. java: cannot execute binary file问题的解决
  9. 清除Eclipse工作空间列表
  10. 操作系统 第二部分 进程管理(一)
  11. 朋友圈文字怎么到中间_怎样查看微信朋友圈访客记录
  12. 河北省考计算机知识点,河北省计算机一级考试上机操作题考点总结与分析
  13. 每日一题系列:考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法
  14. bootstrap 滚动 进度条_Bootstrap中的进度条
  15. java爬取今日头条文章
  16. 我不敢再哭了,因为我怕自己成为职场上的杨超越
  17. Linux日常运维1 w vmstat top sar nload io free ps tcpdump
  18. jQuery入门(1)
  19. Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)
  20. 全志T7 Display驱动简介

热门文章

  1. 电磁兼容(EMC)设计如何融入产品研发流程~系统流程法
  2. 【怎么用系列】怎样正确使用百度及其他搜索引擎
  3. c盘爆满--如何清理电脑C盘
  4. react兄弟组件之间的传值
  5. Android HIDL passthrough模式与binderized
  6. 学生选课系统——数据库应用项目
  7. Sxs.exe病毒处理方法
  8. 为什么写入ReplicatedMergeTree引擎表里的数据少了?
  9. 腾讯碾压小公司全纪实:血腥的3Q大战
  10. 字节跳动取消大小周,网友炸了!