【AcWing】第 62 场周赛 【2022.07.30】
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】的更多相关文章
- AcWing 第11场周赛题解
计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...
- LeetCode-第 166 场周赛
LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...
- LeetCode 第 165 场周赛
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...
- LeetCode--第180场周赛
LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- 第二场周赛(递归递推个人Rank赛)——题解
很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...
- LeetCode第151场周赛(Java)
这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- LeetCode第152场周赛(Java)
这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...
随机推荐
- data:image字符转byte[]
var data = "data:image/bmp;base64,Qk3aHwAAAAAAADYAAAAoAAAAZAAAABsAAAABABgAAAAAAKQfAAAAAQAAAAEAA ...
- 【Axure】母版引发事件
引发事件是指你将母版中某一元件的事件从母版中提升出来,以使其在页面的级别可用. 通过引发事件,可以对在不同页面上母版实例的同一个元件设置不同的交互. 设置引发事件 打开一个母版: 选择其中一个组件: ...
- 一些基本的jar包
jackson与前端传送数据 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti ...
- Spring Ioc源码分析系列--容器实例化Bean的四种方法
Spring Ioc源码分析系列--实例化Bean的几种方法 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分 ...
- csv.reader(f)和f.readlines()、追加数据
假如某个文档f中存储如下内容: 你好,中国. 1,2,3,4 共两行内容. 当你使用csv.reader(f),则会存储为如下形式: [['你','好','中','国'] ['1','2','3',' ...
- java类的学习
什么是类: 类=属性+方法 属性来源于状态(以变量的形式存在):方法来源于动作: *属性对应的是数据,而数据只能存在变量中. 方法内的变量为局部变量:类体中的变量称为成员变量(也称为属性) java中 ...
- VisonPro · 视觉工具列表说明
- 简单实现python接口自动化(一)
目的:excel中维护接口用例数据,通过python中requests库进行读取用例,并把运行结果与excel中的预期结果对比,最后把执行情况写入到excel中去. excel维护数据: 具体的接口名 ...
- MySql中数据表增加字段很慢怎么办
正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...
- MySql字段增删改语句
新增表字段:alter table 表名 需要添加的字段信息; ALTER TABLE nation add seq VARCHAR(20) COMMENT '顺序' 字段名的修改:alter tab ...