AcWing 4500. 三个元素

题目描述

给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,…,r\_n\)。

请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r\_a < r\_b < r\_c\) 成立。

输入格式

第一行包含整数 \(n\)。

第二行包含 \(n\) 个整数 \(r\_1,r\_2,…,r\_n\)。

输出格式

共一行,输出 \(a,b,c\)。

注意,题目要求输出的是元素的下标。

如果方案不唯一,输出任意合理方案均可。

如果无解,则输出 -1 -1 -1

数据范围

前三个测试点满足 $ 3≤n≤10 $。

所有测试点满足 $3≤n≤3000 $ ,$1≤ri≤109 $。

输入样例1:

6
3 1 4 1 5 9

输出样例1:

4 1 3

输入样例2:

5
1 1000000000 1 1000000000 1

输出样例2:

-1 -1 -1

输入样例3:

9
10 10 11 10 10 10 10 10 1

输出样例3:

9 8 3

算法

找出最大值和最小值,然后for循环找出比最大值小的,比最小值大的值,

C++ 代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm> using namespace std; const int N = 3010;
int a[N]; int main()
{
int n;
cin >> n; int maxval = -2e9 , maxadd;
int minval = 0x3f3f3f3f , minadd; for(int i = 1;i <= n;i ++)
{
cin >> a[i]; if(a[i] > maxval)
{
maxval = a[i];
maxadd = i;
}
if(a[i] < minval)
{
minval = a[i];
minadd = i;
}
} bool flag = false;
int ans; for(int i = 1;i <= n;i ++)
{
if(i == maxadd || i == minadd)
continue;
if(a[i] > minval && a[i] < maxval)
{
ans = i;
flag = true;
break;
}
} if(!flag || ans == 0)
cout << "-1 -1 -1" << endl;
else
cout << minadd << " " << ans << " " << maxadd << endl; return 0;
}

4501. 收集卡牌【补】

题目描述

某干脆面厂商在每包面中都放置有一张武将卡。

武将卡共分为 \(n\) 种,编号 \(1 - n\)。

当集齐 \(1 - n\) 号武将卡各一张时,就可以拿它们去换大奖。

为了换大奖,李华先后购买了 \(m\) 包该品牌的干脆面。

其中第 \(i\) 包面中包含的武将卡的编号为 \(a\_i\)。

每当买完一包面,得到该面赠送的武将卡后,李华都会审视一遍自己手中的全部卡牌。

如果此时自己现有的卡牌能够凑齐全部武将卡,那么他就会立即将每种武将卡都拿出一张,并将拿出的卡牌寄给厂商,用来换奖。

请你分析李华购买干脆面的整个过程并计算购买完每一包面后,李华能否凑齐全部武将卡用来换奖。

注意,每次换奖都需要消耗卡牌,消耗掉的卡牌就不属于他了。

输入格式

第一行包含两个整数 \(n,m\)。

第二行包含 \(m\) 个整数 \(a\_1,a\_2,…,a\_m\)。

输出格式

输出一个长度为 \(m\) 的 \(01\) 字符串,如果买完第 \(i\) 包面后,李华能够凑齐全部武将卡用来换奖,则第 \(i\) 位字符为 \(1\),否则为 \(0\)。

数据范围

前 \(5\) 个测试点满足 $ 1≤n,m≤20 $。

所有测试点满足 $ 1≤n,m≤105 \(,\) 1≤ai≤n $。

输入样例1:

3 11
2 3 1 2 2 2 3 2 2 3 1

输出样例1:

00100000001

输入样例2:

4 8
4 1 3 3 2 3 3 3

输出样例2:

00001000

算法

模拟解决,但需要使用tot记录总数,如果tot达到n时,可以兑换,否则不可以兑换,需要注意兑换后需要判断哪些数--后会变成0,tot--

C++ 代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm> using namespace std; const int N = 1e5+10; int cnt[N]; int main()
{
int n , m;
scanf("%d%d",&n,&m); int tot = 0;
string s;
while(m --)
{
int x;
scanf("%d",&x); if(cnt[x] == 0)
tot ++; cnt[x] ++; if(tot == n)
{
s += '1';
for(int i = 1;i <= n;i ++)
if(-- cnt[i] == 0)
tot --;
}
else
s += '0' ;
} cout << s << endl;
return 0;
}

【AcWing】第 62 场周赛 【2022.07.30】的更多相关文章

  1. AcWing 第11场周赛题解

    计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...

  2. LeetCode-第 166 场周赛

    LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...

  3. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  4. LeetCode--第180场周赛

    LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...

  5. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  6. 第二场周赛(递归递推个人Rank赛)——题解

    很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...

  7. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  8. Leetcode 第133场周赛解题报告

    今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...

  9. LeetCode第152场周赛(Java)

    这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...

随机推荐

  1. vue - Vue路由

    至此基本上vue2.0的内容全部结束,后面还有点elementUI和vue3.0的内容过几天再来更新. 这几天要回学校去参加毕业答辩,断更几天 一.相关理解 是vue的一个插件库,专门用来实现spa( ...

  2. 用简单的 Node.js 后台程序浅析 HTTP 请求与响应

    用简单的 Node.js 后台程序浅析 HTTP 请求与响应 本文写于 2020 年 1 月 18 日 我们来看两种方式发送 HTTP 请求,一种呢,是命令行的 curl 命令:一种呢是直接在浏览器的 ...

  3. vmware 无法安装 win 10

    因为默认是 UEFI,但我们并没有 UEFI 引导分区,所以需要改成 BIOS

  4. nodejs使用 svg-captcha 做验证码及验证

    一.需求 使用 nodejs 做后端开发,需要请求验证码,在 github 上看到了 svg-captcha 这个库,发现他是将 text 转 svg 进行返回的,安全性也有保证,不会被识别成文字. ...

  5. .NET 6 从0到1使用Docker部署至Linux环境

    前言 作为一名.Net菜鸟开发者,平时对Linux接触的并不多,项目部署这一块都是运维小哥顶着,但是作为混迹在云原生项目组的人咱也不能什么都不知道,该掌握的知识还是要懂的,所以借着这次机会,梳理一下项 ...

  6. 微信小程序避坑指南——input框里的图标在部分安卓机里无法点击的问题

    问题场景: 下图中的显隐密码和验证码均为包裹在 input标签 中的 image标签, 但在开发测试中发现点击不了这俩个image标签,因为是被input标签的padding挡住了. 解决方法:将im ...

  7. ElasticSearch7.3学习(二十九)----聚合实战之使用Java api实现电视案例

    一.数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期字段 PUT /tvs PUT /tvs/_mapping { "properties": { "price& ...

  8. 关闭StackExchange等平台的privacy收集窗口

    技术背景 当我们打开一个StackExchange页面的时候,经常会出现一个很大的privacy收集窗口,而且不管怎么点都关闭不了,比如像下图这样: 如果屏幕足够大,影响可能也不是很大,但是关键是对于 ...

  9. vue大型电商项目尚品汇(后台篇)day01

    开始我们后台篇的内容,前面处理了一些事情,去学校完成授位仪式,由校长授位合影,青春不留遗憾,然后还换了一个电脑,征战了四年的神船终于退役了,各种各样的小毛病是真的烦人. 现在正式开始后台篇的内容,做了 ...

  10. Python中的逻辑表达式

    首先要明确一点,Python的逻辑运算符,可以用来操作任何类型的表达式(不局限于Bool类型),且运算后的结果也不一定是Bool类型的,而是其左右其中一个表达式的值 表达式1 and 表达式2 pyt ...