Atcoder ABC338 A-D题解

news2024/11/15 5:51:56

又是一篇姗姗来迟的atcoder题解。

Link:ABC338

Problem A:

妥妥的签到题。

#include <bits/stdc++.h>
using namespace std;
int main(){
	string str;
	cin>>str;
	if(int(str[0])<65 || int(str[0])>90){
		cout<<"NO"<<endl;
		return 0;
	}
	for(int i=1;i<str.size();i++){
		if(int(str[i])<97 || int(str[i])>122){
			cout<<"NO"<<endl;
			return 0;
		}
	}
	cout<<"YES"<<endl;
	return 0;
}

Problem B:

还是签到题。打个擂台就是了。

#include <bits/stdc++.h>
using namespace std;
int cnt[200];
int main(){
	string str;
	cin>>str;
	for(int i=0;i<str.size();i++)
		cnt[int(str[i])]++;
	int mx=-1,ans=0;
	for(int i=0;i<200;i++){
		if(mx<cnt[i]){
			mx=cnt[i];
			ans=i;
		}
	}
	cout<<ans<<endl;
	return 0;
}

Problem C:

场上以为是爆搜或者dp,最后喜提300pts......

首先,\Theta (2^{ans})会TLE(我有亲身经历)。所以,考虑贪心。

设我们最后做了x道菜品a,y道菜品b,就可以表示成如下形式:

a_{1}x+b_{1}y\leq q_{1},a_{2}x+b_{2}y\leq q_{2},...,a_{n}x+b_{n}y\leq q_{n}

由于a,b,q都不超过10^6,所以枚举x或y(这里选择y),得到这个式子:

x\leq \left \lfloor \frac{q_{i}-b_{i}y_{i}}{a_{i}} \right \rfloor(1\leq i\leq n,b_{i}y_{i}\leq q_{i})

到这,此题就基本解决了。最后,注意特判a_{i}为0的情况。

#include <bits/stdc++.h>
using namespace std;
long long q[15],a[15],b[15];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)	
		cin>>q[i];
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)	
		cin>>b[i];
	long long ans=0;
	for(int y=0;y<=1e6;y++){
		bool flag=true;
		for(int i=1;i<=n;i++){
			if(y*b[i]>q[i]){
				flag=false;
				break;
			}
		}
		if(!flag)
			break;
		long long x=LONG_LONG_MAX;
		for(int i=1;i<=n;i++){
			if(a[i]>0)
				x=min(x,floor(q[i]-b[i]*y)*1.0/a[i]);//注意要用fmin
		}
		if(x>=0)
			ans=max(ans,x+y);//同理,要用fmax
	}
	cout<<ans<<endl;	
	return 0;
}

Problem D:

本题的思路来自SSRS的代码。思路大概就是用dis数组记录长度,枚举删除一条边的影响,最后求一遍前缀和,再打个擂台就OK了。可能不太详细,看代码吧。

#include <bits/stdc++.h>
using namespace std;
int x[200005];
int main(){
  	int n,m;
  	cin>>n>>m;
  	for(int i=0;i<m;i++){
    	cin>>x[i];
    	x[i]--;
  	}
  	vector<long long> dis(n+1,0);
  	for(int i=0;i<m-1;i++){//枚举删除边的影响
    	int a=x[i];
		int b=x[i+1];
    	if(a>b)
      		swap(a,b);
    	dis[a]+=n-(b-a);
    	dis[b]-=n-(b-a);
    	dis[0]+=b-a;
    	dis[a]-=b-a;
    	dis[b]+=b-a;
    	dis[n]-=b-a;
  	}
  	for(int i=0;i<n;i++)//前缀和
    	dis[i+1]+=dis[i];
  	long long ans;//注意设置初始值
  	for(int i=0;i<n;i++)
    	ans=min(ans,dis[i]);
  	cout<<ans<<endl;
  	return 0;
}

完结撒花~

温馨提示:本期的全部代码直接提交均无法AC,请不要无脑Ctrl C+Ctrl V

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

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

相关文章

力扣hot100 买卖股票的最佳时机 贪心 经典题

Problem: 121. 买卖股票的最佳时机 文章目录 思路复杂度Code 思路 假设今天卖出&#xff0c;那怎么样收益最大呢&#xff1f;之前买入价是最低的 复杂度 ⏰ 时间复杂度: &#xff1a; O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) Code class Solut…

微信小程序(二十七)列表渲染改变量名

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.改变默认循环单元item变量名 2.改变默认循环下标index变量名 基础模板有问题可以先看上一篇 源码&#xff1a; index.wxml <view class"students"><view class"item"><te…

快速排序|超详细讲解|入门深入学习排序算法

快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是&#xff1a;选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff1b;其中一部分的所有数据都比另外一部分的所有数据都要小。然后&#xff0c;再按此方法对这两部分数据分别进…

Unity 常见的图像压缩格式优缺点

在Unity中&#xff0c;将图像压缩至更小的大小&#xff0c;既可以加快加载速度&#xff0c;也可以减少内存的占用。根据不同的目标平台&#xff0c;Unity提供了以下几种常见的图像压缩格式&#xff1a; 1. RGBA Compressed: 是一种通过压缩的方式来存储RGBA&#xff08;红色、…

Flask框架开发学习笔记《6》前后端不分离基础框架

Flask框架开发学习笔记《6》前后端不分离基础框架 Flask是使用python的后端&#xff0c;由于小程序需要后端开发&#xff0c;遂学习一下后端开发。 主要包含如下文件&#xff1a; static 目录中存储了图片templates 目录中存储了 html 文件utils.py 包含了 log 函数server.p…

开发工具git分支冲突解决

在团队协作的软件开发过程中&#xff0c;Git是一款广泛使用的版本控制系统。然而&#xff0c;当多个开发者同时修改同一文件或代码段时&#xff0c;就会产生分支冲突。解决这些冲突需要仔细的协调和技术知识。本篇博客将介绍Git分支冲突的解决方法&#xff0c;以及开发工具和最…

Android 系统启动过程

当按下电源时&#xff0c;引导芯片代码会从预定义的地方(固化在ROM) 开始执行,加载引导程序BootLoader到RAM,然后执行。 启动内核的第一个进程idle(pid0),idle进程是Linux系统第一个进程&#xff0c;是init进程和kthreadd进程的父进程。 idle的主要作用 初始化进程以及内存管…

Modern C++ std::get<n>(tuple)的原理

1. 前言 前面我们讲过std::tuple的实现原理&#xff0c;但没有讲如何取出数据&#xff0c;本节着重讲讲这点。本节与之前的blog有较大关联&#xff0c;如果您没看&#xff0c;这里有链接&#xff0c;链接已按由浅入深排好序&#xff0c;您可以按顺序阅读。如果时间少可以直接看…

【新书推荐】4.2节 字符编码规则

本节内容&#xff1a;字符编码规则。 ■字符编码规则&#xff1a;ASCII码、ANSI字符集、Unicode字符集。 ■变形国标码&#xff1a;国标码是16位编码&#xff0c;高8位表示汉字符的区号&#xff0c;低8位表示汉字符的位号。 4.2.1 字符编码规则 计算机只能存储二进制数0和1&a…

API管理协作工具:Apipost

相信无论是前端&#xff0c;还是后端的测试和开发人员&#xff0c;都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致&#xff0c;导致协作低效、频繁出问题&#xff0c;开发测试人员痛苦不堪。 API管理的难点在哪&#xff1f; 开发人员在 …

【WPF.NET开发】优化性能:图形呈现层

本文内容 图形硬件呈现层定义其他资源 呈现层为运行 WPF 应用程序的设备定义图形硬件功能和性能级别。 1、图形硬件 对呈现层级别影响最大的图形硬件功能包括&#xff1a; 视频 RAM - 图形硬件中的视频内存量决定了可用于合成图形的缓冲区大小和数量。 像素着色器 - 像素着…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天&#xff0c;点餐APP已经成为人们日常生活的重要组成部分&#xff0c;从校园食堂到高级餐厅&#xff0c;从快餐外卖到定制化营养餐&#xff0c;点餐APP的多样性和便利性满足了不同用户的需求&#xff0c;本文将深入探讨在开发一款点餐APP时可能用到的源代…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

C++ 入门(三)— 函数

文章目录 函数简介函数返回值Void 函数&#xff08;非值返回函数&#xff09;函数参数和参数局部范围函数的声明和定义具有多个代码文件的程序 函数简介 C 程序的方式工作。当程序遇到函数调用时&#xff0c;它将在一个函数内按顺序执行语句。函数调用是告诉 CPU 中断当前函数…

责任链模式在java中的实现

1 总览 2 概念 避免请求发送者与接收者耦合在一起&#xff0c;让多个对象都有可能接收请求&#xff0c;将这些对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有对象处理它为止。职责链模式是一种对象行为型模式。 3 实现 公共部分&#xff0c;一个系…

法大大入选2023德勤“中国明日之星”

1月30日&#xff0c;德勤审计及鉴定合伙人、华南区上市业务合伙人、资本市场服务部王杰森莅临法大大总部&#xff0c;为法大大颁发“2023德勤中国 高科技高成长 明日之星”奖杯&#xff0c;法大大联合创始人兼首席法务官梅臻代表领奖。 &#xff08;左为王杰森&#xff0c;右为…

海外代理IP推荐:5大最佳Luminati替代方案

在跨境出海业务中&#xff0c;海外代理IP是非常高效的助力工具&#xff0c;因此也衍生了非常多的代理服务商。想必大多数都知道Brightdata&#xff08;原名Luminati&#xff09;&#xff0c;但是&#xff0c;由于代理IP的高需求&#xff0c;慢慢地我们发现除了高价的卢米&#…

Prometheus的promQL语法

时间序列 node_cpu_guest_seconds_total{cpu"0"} #{}外的是监控项(指标数据) #{}内的是标签 #node使用cpu的描述统计&#xff0c;符合标签cpu0的时间序列&#xff0c;查询出的结果 #指标项标签就是Prometheus的时间序列_address_ #双下划线标签是Prometheus系统的默…

【小白学unity记录】使用unity播放声音

1. 示例 unity中播放声音涉及到两个组件。AudioSource和AudioClip。AudioSource可以理解为播放器&#xff0c;AudioClip可以理解为音频片段文件。AudioSource可以通过.clip属性切换音频片段。 using UnityEngine;public class PlayerController : MonoBehaviour {private int…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换&#xff1b;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环&#xff0c;根据迭代式对变量反复赋值。 求近似根&#xff08;切线法&#xff09;&#xff1b; 迭代描述&#xff1a; x 0 x_0 x0…