AtCoder Beginner Contest 337 A - E

A - Scoreboard

大意

高桥队和青木队进行了n场比赛,给出每场比赛中高桥队和青木队的积分,问最后谁总分更高或平局。

思路

统计总分比较即可。

代码

#include<iostream>
using namespace std;
int main(){
    int n, a=0, b=0;
    cin >> n;
    while(n--){
      int x, y;
      cin >> x > >y;
      a += x, b += y;
    }
    if(a < b) cout << "Aoki" << endl;
    else if(a == b) cout << "Draw" << endl;
    else cout << "Takahashi" << endl;
    return 0;
}

B - Extended ABC

大意

给定一个字符串,问是否形如AA\cdots BB\cdots CC \cdotsA、B和C的数量可以为零。

思路

遍历字符串判断是否有序即可。

代码

#include<iostream>
using namespace std;
int main(){
    string s;
    cin >> s;
    char cur = s[0];
    for(auto i: s){
        if(cur == i) continue;
        if(i < cur){
            cout << "No" << endl;
            return 0;
        }
        if(i > cur) cur = i;
    }
    cout << "Yes" << endl;
    return 0;
}

C - Lining Up 2

大意

有 n人在排队。

给你一个长度为n的序列A来排列这些人。

A_i(1 \le i \le n) 表示以下信息:

  • 如果A_i = -1 ,则i排在队伍的最前面;
  • 如果A_i \ne 1,则 i紧跟在A_i 后面。

从前面到后面打印一行人的编号。

思路

设置数组X_i表示第i个人的后面是X_i,读入A_i时,如果不为-1,则令X_{A_i}=i

否则,确定第一个人。

确定队首后,根据X数组推出队伍。

代码

#include <iostream>
using namespace std;
const int N = 3e5 + 9;
int a[N], b[N];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        if (x == -1) b[1] = i;
        else a[x] = i;
    }
    int cur = b[1];
    for (int i = 2; i <= n; i++) {
        b[i] = a[cur];
        cur = b[i];
    }
    for (int i = 1; i <= n; i++) cout << b[i] << " ";

    return 0;
}

D - Cheating Gomoku Narabe

大意

给定h\times w的二维网格,格子上有 xo.三种之一。

问最少进行的操作数,使得网格有连续k(水平或垂直)个格子都是 o

操作为:将一个为.的格子改为o

思路

因此可以枚举这连续k个格子的左端点 ,然后往右的k个格子里,不能有x,然后对.的数量取个最小值。事先预处理一下关于x和.数量的前缀和。(为了方便,可以将x设为极大值)

水平计算一次后,旋转九十度再计算一次即可。

代码

#include <iostream>
#include <vector>
#include <climits>
#include <unordered_map>
using namespace std;
vector<string> grid, T;
#define int long long

int solve(const vector<string>& grid, int k) {
    int h = grid.size();
    int w = grid[0].size();
    unordered_map<char, int> mp;
    mp['.'] = 1;
    mp['x'] = INT_MAX;
    mp['o'] = 0;
    vector<vector<int>> pref(h, vector<int>(w));
    int ans = INT_MAX;
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            if (j == 0) pref[i][j] = mp[grid[i][j]];
            else pref[i][j] = pref[i][j - 1] + mp[grid[i][j]];
            if (j >= k - 1) {
                ans = min(ans, pref[i][j] - (j == k - 1 ? 0 : pref[i][j - k]));
            }
        }
    }
    return ans;
}


signed main() {
    int h, w, k;
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    cin >> h >> w >> k;
    for (int i = 0; i < h; i++) {
        string s;
        cin >> s;
        grid.push_back(s);
    }

    int ans = solve(grid, k);

    T.assign(w, string(h, 'w'));
    for (int i = 0; i < h; i++)
        for (int j = 0; j < w; j++) T[j][i] = grid[i][j];

    ans = min(ans, solve(T, k));
    cout << (ans < INT_MAX ? ans : -1) << endl;
    return 0;
}

E - Bad Juice

大意

n瓶果汁,其中有一瓶变质了,喝了变质的果汁会拉肚子,但你不知道哪瓶变质了。

你需要找最少的朋友,然后给他们一些果汁喝。一瓶果汁可以给多个朋友喝,一个朋友也可以喝多瓶果汁。

第二天,朋友们会告诉你他们是否不舒服,你需要据此找到变质的果汁。

思路

考虑对果汁编号0n-1,考虑其二进制。对于坏的果汁x,我们需要确定x的二进制下,哪些数位是1。

把 0n-1中,所有二进制下第 i位为1的都给第i个朋友喝,如果它第二天肚子疼了,说明 x的第 i位为1。

需要\lceil \log_2 n\rceil个朋友来试毒。

代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int n;
    cin >> n;
    int m = 0;
    while((1 << m) < n) m++;
    cout << m << endl;
    for(int i = 0; i < m; i++){
        vector<int> c;
        for(int j = 0; j < n; j++)
            if((j >> i) & 1) c.push_back(j);
        cout << c.size() << " ";
        for(auto x: c) cout << x + 1 << " ";
        cout << endl;
    }
    
    string s;
    cin >> s;

    int ans = 0;
    for(int i = 0; i < s.size(); i++)
        if(s[i] == '1') ans += (1 << i);
    cout << ans + 1 << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/493894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

报错:ValueError: assignment destination is read-only 的解决方案

运行出现报错&#xff1a; ValueError: assignment destination is read-only 解决方案&#xff1a; 加一个.copy() data open_file(r"G:/21.tif").transpose(2,0,1)data data.copy()

Linux下的多线程编程:原理、工具及应用(5)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;Flower of Life—陽花 0:34━━━━━━️&#x1f49f;──────── 4:46 &#x1f504; ◀️ ⏸ ▶️ ☰ …

python--切片

1.切片&#xff1a; 切片是编程语言为有序序列&#xff08;sequence&#xff09;准备的&#xff0c;用来切割或者截取某个片段 一个完整的切片是包含三个参数和两个冒号" : " ,用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时&#xff0c;默认第…

java设计模式之适配器模式

适配器模式概述 众所周知,我们国家的生活用电的电压是220V,而笔记本电脑、手机等电子设备的工作电压没有这么高,为了使笔记本、手机等设备可以使用220V的生活用电,就需要使用电源适配器(ACAdapter),也就是人们常说的充电器或变压器,有了这个电源适配器,原本不能直接工作…

2024室内设计和建筑必须知道的十大3D渲染趋势!

2023年对建筑圈是非常不平凡的一年&#xff0c;高清视频渲染、元宇宙全覆盖、AI模型大爆发.....不断发展的 3D 数字技术世界正迅速重塑建筑设计行业。 2024年&#xff0c;室内设计和建筑设计领域在3D渲染方面又将迎来怎样的变革&#xff1f;以下十大3D渲染趋势&#xff0c;你不…

代码随想录——搜索插入位置(Leetcode35)

题目链接 class Solution {public int searchInsert(int[] nums, int target) {int len nums.length;int left 0;int right len - 1;int index -1;while(left < len / 2){if(nums[left] target || target < nums[left]){index left;break;}else{left;}if(nums[ri…

详解 WebWorker 的概念、使用场景、示例

前言 提到 WebWorker&#xff0c;可能有些小伙伴比较陌生&#xff0c;不知道是做什么的&#xff0c;甚至不知道使用场景&#xff0c;今天这篇文章就带大家一起简单了解一下什么是 webworker&#xff01; 概念 WebWorker 实际上是运行在浏览器后台的一个单独的线程&#xff0…

opengl草稿复习,承上启下

目录 1、链接文件夹中的cpp 2、链接资源到输出目录 3、多编译目标 4、cmakelist添加库 4、添加glfw和glad 5、glfw运行 6、NDC、VBO、VAO 7、渐变三角形 8、渲染两个三角形 9、渲染两个三角形&#xff0c;同时基于原来颜色进行渐变 1、链接文件夹中的cpp cmake_minimu…

跨站脚本攻击

跨站脚本攻击又称XSS攻击&#xff0c;是代码注入攻击的一种。利用XSS漏洞&#xff0c;攻击者可以窃取Cookies或劫持会话&#xff0c;或注入恶意 HTML 或 JavaScript 代码到页面中&#xff0c;又或者将当前页面重定向至一个攻击者搭建的恶意网站。XSS漏洞的产生多是因为网站开发…

Java 枚举(概念+枚举的使用+源码分析)

文章目录 一、枚举1.概念2.使用1.switch语句2.Enum类中的方法3.枚举无法反射 一、枚举 1.概念 将一组常量组织到一起&#xff0c;统一进行管理避免了定义常量时&#xff0c;可能发生的歧义枚举更加安全枚举不可继承&#xff0c;无法扩展 public enum TestEnum {//枚举对象&am…

第四届数字信号与计算机通信国际学术会议(DSCC 2024)

#高录用&#xff0c;稳检索# #高校背书&#xff0c;更可靠# DSCC 2024已通过SPIE出版社审核&#xff0c;ISSN号已确定&#xff1a;ISSN: 0277-786X&#xff0c;往届均已见刊EI检索&#xff01; 第四届数字信号与计算机通信国际学术会议&#xff08;DSCC 2024&#xff09; 2024 …

ROS 2边学边练(2)-- 咱也玩玩Turtlesim

同ROS 1一样&#xff0c;Turtlesim(小海龟)例程往往是大家首次熟悉ROS世界的唯一不二之选&#xff08;如同刚接触编程的同学&#xff0c;老师会让大家打出“Hello World”的道理一样&#xff09;&#xff0c;很多教学视频及书籍也同样如此&#xff0c;为何&#xff1f;麻雀虽小…

跨境必看的TikTok养号保姆式教程

TikTok养号的重要性不必多少&#xff0c;不仅可以在创号初期保障账号安全&#xff0c;后期的账号流量也需要以前期养好账号为前提。下面就给大家分享如何养号的真实操作攻略&#xff01; 一、为什么要养号 &#xff08;1&#xff09;提高系统推荐精准度 系统不了解新账户人设…

LangChain核心概念与组件

Chains Chains可以让你按照一定的顺序和逻辑来执行不同的任务。Chains有以下四种类型&#xff1a; 类型作用LLMChain用于在语言模型周围添加一些功能的简单Chain&#xff0c;它由一个PromptTemplate和一个语言模型&#xff08;LLM或chat model&#xff09;组成&#xff0c;它…

初识C++(二)引用,内联函数,auto

目录 1.引用的概念与用法&#xff1a; 1.1引用特性&#xff1a; 1.2使用场景 1.2.1做参数 1.3传值、传引用效率比较 1.4引用做返回值 1.5引用和指针的对比 2.内联函数 3.auto关键字 4. 基于范围的for循环(C11) 5.指针空值nullptr(C11) 1.引用的概念与用法&#xff1a;…

记录 AI绘图 Stable Diffusion的本地安装使用,可搭建画图服务端

开头 最近刷短视频看到了很多关于AI绘图&#xff0c;Midjourney&#xff0c;gittimg.ai&#xff0c;Stable Diffusion等一些绘图AI工具&#xff0c;感受到了AI绘画的魅力。通过chatGPT生成关键词再加上绘图工具&#xff0c;真是完美&#xff0c;文末教大家如何用gpt提词 Midj…

浮动布局与定位布局

目录 前言: 浮动布局&#xff08;Float Layout&#xff09;: 定位布局&#xff08;Positioning Layout&#xff09;: 1.传统布局: 1.1文档流布局: 1.1.1基本的布局方式: 1.1.2 块级元素: 1.1.3调整元素: 1.2浮动布局: 1.2.1浮动布局允许元素向左或向右浮动&#xff0c;使…

docker启动卡死问题排查

问题&#xff1a;输入docker ps 或则vession 卡死&#xff0c;无任何输出 排查思路如下&#xff1a; 1、查看docker状态或者日志 journalctl -u docker.service 或者 systemctl status docker 3月 20 18:23:06 dfbpmyy2 dockerd[1114]: time"2024-03-20T18:23:06.7449…

SpringBoot整合Redis:缓存击穿--互斥锁解决

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏Redis实战与进阶 本专栏讲解Redis从原理到实践 …

Python算法100例-4.5 最小公倍数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序 1&#xff0e;问题描述 求任意两个正整数的最小公倍数&#xff08;Least Common Multiple&#xff0c;LCM&#xff09;。 2&#xff0e;问题分析 如…