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. data:image字符转byte[]

    var data = "data:image/bmp;base64,Qk3aHwAAAAAAADYAAAAoAAAAZAAAABsAAAABABgAAAAAAKQfAAAAAQAAAAEAA ...

  2. 【Axure】母版引发事件

    引发事件是指你将母版中某一元件的事件从母版中提升出来,以使其在页面的级别可用. 通过引发事件,可以对在不同页面上母版实例的同一个元件设置不同的交互. 设置引发事件 打开一个母版: 选择其中一个组件: ...

  3. 一些基本的jar包

    jackson与前端传送数据 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti ...

  4. Spring Ioc源码分析系列--容器实例化Bean的四种方法

    Spring Ioc源码分析系列--实例化Bean的几种方法 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分 ...

  5. csv.reader(f)和f.readlines()、追加数据

    假如某个文档f中存储如下内容: 你好,中国. 1,2,3,4 共两行内容. 当你使用csv.reader(f),则会存储为如下形式: [['你','好','中','国'] ['1','2','3',' ...

  6. java类的学习

    什么是类: 类=属性+方法 属性来源于状态(以变量的形式存在):方法来源于动作: *属性对应的是数据,而数据只能存在变量中. 方法内的变量为局部变量:类体中的变量称为成员变量(也称为属性) java中 ...

  7. VisonPro · 视觉工具列表说明

  8. 简单实现python接口自动化(一)

    目的:excel中维护接口用例数据,通过python中requests库进行读取用例,并把运行结果与excel中的预期结果对比,最后把执行情况写入到excel中去. excel维护数据: 具体的接口名 ...

  9. MySql中数据表增加字段很慢怎么办

    正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...

  10. MySql字段增删改语句

    新增表字段:alter table 表名 需要添加的字段信息; ALTER TABLE nation add seq VARCHAR(20) COMMENT '顺序' 字段名的修改:alter tab ...