atcoder abc357

news2024/12/24 10:03:17

A Sanitize Hands 

问题:

思路:前缀和,暴力,你想咋做就咋做

代码:

#include <iostream>

using namespace std;

const int N = 2e5 + 10;

int n, m;
int a[N];

int main() {
    cin >> n >> m;
    for(int i = 1; i <= n; i ++ ) {
        cin >> a[i];
    }
    
    int ans = 0;
    for(int i = 1; i <= n; i ++ ) {
        m -= a[i];
        ans = i;
        if(m <= 0) break;
    }
    
    if(m < 0) cout << ans - 1;
    else cout << ans;
    return 0;    
}

B Uppercase and Lowercase

问题:

思路:大小写转换,这里有个问题,为什么我的转换最后都变成数字了,先留个疑问

代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 2e5 + 10;

string str;

int main() {
    cin >> str;
    int cnt1 = 0, cnt2 = 0;
    for(auto t: str) {
        if(t >= 'a' && t <= 'z') cnt1 ++;
        else cnt2 ++;
    }
    
    if(cnt1 >= cnt2)
    transform(str.begin(),str.end(),str.begin(),::tolower);
    else 
    transform(str.begin(),str.end(),str.begin(),::toupper);
    cout<<str<<endl;
    return 0;
}

C Sierpinski carpet

问题:

思路:阴间题,第一眼递归,但是不想求太多坐标,于是想到把图全变成‘#’最后填充'.'

代码:

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

const int N = pow(3, 6) + 10;

char g[N][N];
int n;

int main() {
    cin >> n;
    int len = pow(3, n);
    for(int i = 1; i <= len; i ++ ) {
        for(int j = 1; j <= len; j ++ ) {
            g[i][j] = '#';
        }
    }
    
    for(int level = 1; level <= n; level ++ ) {
        for(int i = 1 + pow(3, level - 1); i <= len; i += pow(3, level)) {
            for(int j = 1 + pow(3, level - 1); j <= len; j += pow(3, level)) {
                for(int k = i; k <= i + pow(3, level - 1) - 1; k ++ ) {
                    for(int u = j; u <= j + pow(3, level - 1) - 1; u ++ ) {
                        g[k][u] = '.';
                    }
                }
            }
        }
    }
    
    for(int i = 1; i <= len; i ++ ) {
        for(int j = 1; j <= len; j ++ ) {
            cout << g[i][j];
        }
        cout << endl;
    }
    return 0;
}

D 88888888

问题:

思路:逆元,快速幂,对原式子变形后发现最后的结果实际上就是x 乘上一个等比数列,这是碰见的第一道逆元的题目,也明确了我对逆元的认识,由于 a / b % mod != (a % mod/ b % mod) % mod,而直接除的话会造成精度丢失,因此我们可以把除法变成乘法,根据费马小定理如果b和p互质,那么b的逆元就等于b ^ p - 2 因此可以快速幂求逆元

代码:
 

#include <iostream>

using namespace std;

const int mod = 998244353;

long long x;

int get(long long a) {
    int cnt = 0;
    while(a) {
        a /= 10;
        cnt ++;
    }
    return cnt;
}

long long qmi(long long a, long long b) {
    long long res = 1;
    while(b) {
        if(b & 1) res = ((res % mod) * (a % mod)) % mod;
        b >>= 1;
        a = (a % mod * a % mod) % mod;
    }
    return res;
}

int main() {
    cin >> x;
    int len = get(x);
    long long part1 = x % mod;
    long long a = qmi(10, (long long)len);
    long long b = qmi(a, x);
    b --;
    long long c = qmi(a - 1, 998244353 - 2);
    long long part2 = (b % mod * c % mod) % mod;
    cout << (part1 * part2) % mod;
    return 0;
}

E Reachability in Functional Graph

问题:

思路:考虑如果题目是一颗树的话那么直接一个记忆化即可,但是该题会出现环,因此考虑缩点,记得开long long

据说这是基环树板子,回头学一下基环树

代码:

#include <iostream>
#include <cstring>
#include <stack>
#include <map>

using namespace std;

const int N = (2e5 + 10) * 2;

stack<int> stk;
int n;
int val[N], ne[N], h[N], idx;
int dfn[N], low[N], id[N], _size[N], scc_cnt, ts;
int cnt[N];
bool ins[N], st[N];
long long ans = 0;

void add(int a, int b) {
    val[idx] = b;
    ne[idx] = h[a];
    h[a] = idx ++;
}

void tarjan(int u) {
    dfn[u] = low[u] = ++ ts;
    stk.push(u);
    ins[u] = true;
    for(int i = h[u]; i != -1; i = ne[i]) {
        int j = val[i];
        if(!dfn[j]) {
            tarjan(j);
            low[u] = min(low[u], low[j]);
        } else if(ins[j]) low[u] = min(low[u], dfn[j]);
    }
    
    if(dfn[u] == low[u]) {
        ++ scc_cnt;
        int y;
        do {
            y = stk.top();
            stk.pop();
            ins[y] = false;
            id[y] = scc_cnt;
            _size[scc_cnt] ++;
        } while (y != u);
    }
}

void dfs(int u) {
    for(int i = h[u]; i != -1; i = ne[i]) {
        int j = val[i];
        if(!st[j]) {
            dfs(j);
            st[j] = true;
        }
        cnt[u] += cnt[j];
        ans += _size[u] * cnt[j];
    }
}

int main() {
    memset(h, -1, sizeof h);
    cin >> n;
    scc_cnt = n;
    for(int i = 1; i <= n; i ++ ) {
        int x;
        cin >> x;
        add(i, x);
    }
    
    for(int i = 1; i <= n; i ++ ) if(!dfn[i]) tarjan(i);
    for(int i = 1; i <= n; i ++ ) cnt[id[i]] = _size[id[i]];
    map<pair<int, int>, int> ma;
    for(int i = 1; i <= n; i ++ ) {
        for(int j = h[i]; j != -1; j = ne[j]) {
            int k = val[j];
            if(id[i] != id[k] && !ma[{i, k}]) {
                add(id[i], id[k]);
                ma[{i, k}] ++;
            }
        }
    }
    
    memset(st, 0, sizeof st);
    for(int i = scc_cnt; i > n; i -- ) {
        if(!st[i]) {
            st[i] = true;
            dfs(i);
        }
    }
    for(int i = scc_cnt; i > n; i -- ) ans += (long long)_size[i] * (_size[i] - 1);
    cout << ans + n;
    return 0;
}

F

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【日常记录】【JS】中文转拼音的库 pinyin-pro

文章目录 1、介绍2、pinyin-pro 基本使用3、参考链接 1、介绍 pinyin-pro 是一个专业的 JavaScript 中文转拼音的库&#xff0c;具备多音字识别准确、体积轻量、性能优异、功能丰富等特点。 常用的案例 搜索功能增强&#xff1a;在输入框输入汉字时&#xff0c;可以转化为拼音输…

英特尔:AI落地,未来已来

引言 随着AI技术的发展和大模型的普及&#xff0c;人工智能正在逐渐渗透到我们的日常生活中。2023年5月底&#xff0c;我参加了台北的英特尔技术展&#xff0c;深入了解了英特尔在AI个人电脑领域的最新进展。本文将详细介绍英特尔的新一代移动处理器Lunar Lake&#xff0c;以及…

【C51】C51单片机实现的 抽奖机 设计与编程指南

文章目录 前言&#xff1a;1. 实现效果2. 准备工作3. 编写代码总结&#xff1a; 前言&#xff1a; 在本文中&#xff0c;我们将介绍如何使用C51单片机来实现一个简单的抽奖机。这个项目不仅能够展示C51单片机的基本应用&#xff0c;还能让我们了解如何通过编程来控制硬件&…

卡尔曼滤波器例子

卡尔曼滤波器 卡尔曼滤波器(Kalman Filter)是一种用于线性系统状态估计的递归算法,可以有效地融合传感器数据和系统模型来估计系统的状态。它在机器人学中广泛应用,尤其是位置和速度等状态的估计。通过卡尔曼滤波器,可以有效地估计机器人在二维平面内的真实位置,并减小测…

探地雷达正演模拟,基于时域有限差分方法,一

声明&#xff1a;本博客中的公式均是在Word中使用AxMath写好后截图使用的&#xff0c;欢迎引用&#xff0c;但请标注来源。 本系列会有四篇博客&#xff1a; 第一篇内容&#xff1a; 1、基础知识掌握 2、Maxwell方法差分求解原理 第二篇内容&#xff1a; 1、基于C的TE波波…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:大疆RoboMaster AI挑战赛

NVIDIA Jetson TX2助力机器人战队斩获RoboMaster AI挑战赛冠亚军 一个汇聚数百万机器人专家与研究人员的赛场&#xff0c;一场兼具工程、策略和团队挑战的较量&#xff0c;说的正是近日刚刚在澳大利亚布里斯本ICRA大会上闭幕的大疆RoboMaster AI挑战赛今年的冠军I Hiter以及亚军…

Macbook M芯片Maven的安装与配置

Macbook M芯片Maven的安装与配置 下载 搜索Maven 进入网站 https://maven.apache.org/download.cgi 点击Download 点击如下链接进行下载&#xff1b; 将下载好的文件放到你的指定位置 双击进行解压 配置环境变量 进入终端 在终端中输入 open ~/.bash_profile输入以下内…

UI学习(二)

UI学习&#xff08;二&#xff09; 文章目录 UI学习&#xff08;二&#xff09;布局子视图手动布局自动布局 导航控制器导航控制器基础导航控制器的切换导航栏工具栏 分栏控制器分栏控制器协议部分的内容UITableView基础部分相关的协议函数高级协议与单元格 多界面传值 布局子视…

csdn上传图片失败解决办法

今天下午写笔记&#xff0c;上传图片的时候总是出现图片上传不成功。查询了下解决方案&#xff1a; C:\Windows\System32\drivers\etc &#xff0c;使用管理员打开hosts文件加入&#xff1a; 49.7.22.7 csdn-img-blog.oss-cn-beijing.aliyuncs.com保存之后&#xff0c;&#x…

【JavaEE】Spring IoCDI详解

一.基本概念 1.Ioc基本概念 Ioc: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发发了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要自己通…

中国宠业新锐品牌展,2024苏州国际宠物展6月28日开展!

中国宠业新锐品牌展&#xff0c;2024苏州国际宠物展6月28日开展&#xff01; ​ 第2届华东国际宠物用品展览会(苏州)暨中国宠业新锐品牌展&#xff0c;将于6月28日-30日在苏州国际博览中心盛大举办&#xff0c;锁定年中市场黄金档期&#xff0c;同期以“NB展&#xff0c;更新鲜…

Letcode-Top 100二叉树专题

94. 二叉树的中序遍历 方法一&#xff1a;递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeN…

2024.6.9 四

Python的异常处理 在python里,错误和异常是不同的概念 错误: Python 的语法错误或者称之为解析错,大多是因为写代码写错了出现的 异常: 即便 Python 程序的语法是正确的&#xff0c;在运行它的时候&#xff0c;也有可能发生错误。运行期检测到的错误被称为异常。 大多数的异常…

详解大厂实时数仓建设V4.0

一、实时数仓建设背景 1. 实时需求日趋迫切 目前各大公司的产品需求和内部决策对于数据实时性的要求越来越迫切&#xff0c;需要实时数仓的能力来赋能。传统离线数仓的数据时效性是 T1&#xff0c;调度频率以天为单位&#xff0c;无法支撑实时场景的数据需求。即使能将调度频…

【Spring Boot】异常处理

异常处理 1.认识异常处理1.1 异常处理的必要性1.2 异常的分类1.3 如何处理异常1.3.1 捕获异常1.3.2 抛出异常1.3.4 自定义异常 1.4 Spring Boot 默认的异常处理 2.使用控制器通知3.自定义错误处理控制器3.1 自定义一个错误的处理控制器3.2 自定义业务异常类3.2.1 自定义异常类3…

【小沐学Python】Python实现Web服务器(CentOS下打包Flask)

文章目录 1、简介2、下载Python3、编译Python4、安装PyInstaller5、打包PyInstaller6、相关问题6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1, currently the ssl module is compiled with OpenSSL 1.0.2k-fips 26 Jan 2017. See: https://github.com/urllib3/url…

seerfar选品功能,OZON运营插件工具seerfar

在当今这个数字化、信息化的时代&#xff0c;电子商务的飞速发展使得越来越多的商家开始关注如何更高效地运营自己的在线店铺。其中&#xff0c;选品作为电商运营的重要一环&#xff0c;直接影响着店铺的流量、转化率和利润。在OZON这样的电商平台上&#xff0c;如何快速、准确…

Incredibuild for Mac 来了!

Mac 开发者在寻找适合自己需求的工具时可能会遇到一些困难&#xff0c;因为 Mac 操作系统相对封闭&#xff0c;不像其他系统那样开放和灵活。尽管如此&#xff0c;Mac 开发者在开发应用程序时的需求&#xff08;比如功能、效率等&#xff09;和使用其他操作系统的开发者是类似的…

联合体和枚举<C语言>

导言 在C语言中除了结构体外&#xff0c;联合体和枚举也是自定义类型&#xff0c;联合体主要用于节省空间&#xff0c;在同一块内存存储多种类型的数据&#xff0c;而枚举可以提高代码的可读性、可维护性。 联合体&#xff08;union&#xff09; 它还有个更容易理解的名字&…

Triton学习笔记

b站链接&#xff1a;合集Triton 从入门到精通 文章目录 算法名词解释&#xff1a;scheduler 任务调度器model instance、inference和requestbatching 一、Triton Inference Server原理1. Overview of Trition2. Design Basics of Trition3. Auxiliary Features of Trition4. A…