SEERC2017-Escape Room(思维)

2024-04-18 07:08
文章标签 思维 escape room seerc2017

本文主要是介绍SEERC2017-Escape Room(思维),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:点击打开链接


题目大意:给你n个数,表示已该处为起点的最长子序列的长度,让你形成一个1~n的队列满足条件。


题目思路:长度越大,很明显越小(因为可以比你大的数字越多),如果长度为1,那就说明你是老大,后面肯定都比你小,所以先根据长度进行排序,如果长度相同就根据序号排序(序号的存在是为了方便这次操作后变回去,这次操作是为了方便赋值),因为长度越小,说明数字越大,按照序号排序是因为,到时候还要根据序号变回去,然而假设两个数字长度相同,一定要前面那个数字大一点,为什么捏,你想, 5 4 3 1 2的话,拉出5 4单看,都是1但是如果你4 5,那就2 1直接凉了,在长度相同的情况下,让大的数字排在前面可以防止出错。然后就是从第一个一直到最后一个从n赋到1(注意长度越小,说明数字越大,我现在已经根据长度排好了顺序,因为答案对应的长度最小的最大,所以我就相当于先把顺序排好了,然后把答案赋值进去),然后根据序号再重新排序,就让它恢复了最开始的顺序,答案已经通过上一步赋值放进去了,所以直接输出结果就美滋滋了。


题目番外:很尴尬,又读错了题目..我搞成了以为是该处为起点,大于等于该数的数量,然后就用while,每次找出未被选择的数中第a[i]大的数字,结果tle了,后来改用vector终于不超时了,结果wa了...后来跟别人要了题解还没搞清楚为啥,用他的思路模拟按照我的题意理解是错的,还以为是题目数据太水有问题.....后来根据跟大佬的交流,发现是我的题目理解错了......无敌尴尬,真的要仔细读题啊,太太太吃亏了,一道题的差距可是很致命的...


以下是代码:

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{int pos,quan,ans;
}a[100005];
int cmp(node a,node b){if(a.quan==b.quan){return a.pos<b.pos;}return a.quan<b.quan;
}
int cmp2(node a,node b){return a.pos<b.pos;
}
int main()
{int n;while(~scanf("%d",&n)){for(int i=1;i<=n;i++){scanf("%d",&a[i].quan);a[i].pos=i;}sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++){a[i].ans=n-i+1;}sort(a+1,a+n+1,cmp2);for(int i=1;i<=n;i++){printf("%d%c",a[i].ans,i==n?'\n':' ');}}return 0;
}

这篇关于SEERC2017-Escape Room(思维)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914090

相关文章

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

散户炒股票为什么进步慢,学习程序化交易思维

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取股票实时数据和历史数据 Python炒股自动化(3):分析取回的实时数据和历史数据 Python炒股自动化(4):通过接口向交易所发送订单 Python炒股自动化(5):通过接口查询订单,查询账户资产 散户炒股的常见难题

数业智能心大陆告诉你如何培养孩子的批判性思维?

现今的教育体系自小学起便强调培养孩子的批判性思维,这种能力被视为在复杂世界中生存和发展的关键。在当今信息爆炸的时代,它能让我们在海量信息中辨别真伪、深入思考并做出明智决策。如今,如数业智能心大陆产出的AI 心理咨询平台的出现为培养孩子批判性思维提供了新可能,其通过互动引导孩子思考,助力孩子提升批判性思维能力。 什么是批判性思维呢? 批判性思维是一种思考方式,它能够使我们在接收信

华为OD机试 - 最优结果的a数组数量 - 贪心思维(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。 一、题目描述

互联网思维总结

目录 互联网八大思维 一 互联网思维 一 用户思维 二 产品思维 三 免费思维 四 社群思维 五 大数据思维 六 自媒体思维 七 跨界思维 八 平台思维 总结 互联网八大思维 简要列举以下思维,用户思维,社会化思维,大数据思维,简约思维,极致思维,跨界思维,流量思维,迭代思维,平台思维。 任何企业都可以找到一个竞争对手打,但是有一个对手是打不赢的,就是趋势,趋势一

【HDU】5566 Clarke and room【树链剖分+AC自动机】

题目链接:Clarke and room #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define ls ( o << 1 )#define lson ls , l , m#define rs ( o << 1 | 1 )#define rson rs , m + 1 , r#define rt

0904作业+思维导图

一、作业 (将昨天的作业修改为标准模板类的) 1、代码 #include <iostream>#include <stack>using namespace std;//队列模板类template<typename T>class Queue{private:int max; //队列最大容量int num; //队列内元素数T *ptr; //容器