Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)题解

news2024/11/26 2:39:10

A - Seats

思路:从前往后扫,判断有多少个'.'的左右各有一个'#'

 

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n;
string s;

signed main()
{
	cin>>n;
	cin>>s;
	int cnt=0;
	if(s.size()<3)
	{
		cout<<0<<"\n";
	return 0;
	}
	if(s.size()>=3)
	for(int i=1;i<=s.size()-2;i++)
	{
		if(s[i]=='.'&&s[i-1]=='#'&&s[i+1]=='#')
		{
			cnt++;
		}
	}
	cout<<cnt<<"\n";
	return 0;
}

B - Traveling Takahashi Problem

 思路:正常用double模拟一下

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n;
double x,y;
signed main()
{
	double flagx=0,flagy=0;
	double sum;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x>>y;
		sum+=sqrt((x-flagx)*(x-flagx)+(y-flagy)*(y-flagy));
		flagx=x,flagy=y;
	}
	sum+=sqrt(flagx*flagx+flagy*flagy);
	printf("%.7lf",sum);
	return 0;
}

 

C - Spiral Rotation

题意:就是说,最外层操作一次,然后往里一层就多操作一次,这个操作就是说将整个图顺指针旋转90度,我们可以记录每个点操作多少次,然后直接输出即可

#include<bits/stdc++.h>  
using namespace std;  
#define int long long  

int n;  
char s[3005][3005];  
char c[3005][3005];  

signed main()  
{  
    cin >> n;  

    
    for(int i = 1; i <= n; i++)  
    {  
        for(int j = 1; j <= n; j++)  
        {  
            cin >> s[i][j];  
        }  
    }  

    
    for(int x = 1; x <= n; x++)  
    {  
        for(int y = 1; y <= n; y++)  
        {  

            int num = min(min(x, n - x + 1), min(y, n - y + 1)) % 4;  

           
            if(num == 0) {  
                c[x][y] = s[x][y]; 
            }  
            else if(num == 1) {  
                c[x][y] = s[n - y + 1][x]; 
            }  
            else if(num == 2) {  
                c[x][y] = s[n - x + 1][n - y + 1];  
            }  
            else if(num == 3) {  
                c[x][y] = s[y][n - x + 1]; 
            }  
        }  
    }  

    
    for(int i = 1; i <= n; i++)  
    {  
        for(int j = 1; j <= n; j++)  
        {  
            cout << c[i][j];  
        }  
        cout << "\n";  
    }  
    return 0;  
}

D - ABA

思路:一开始我想的使用map<char,vector<int>> 去统计每个字符之前出现的位置,然后都用当前位置进行操作,然后判断有哪些是符合的,然后发现时间复杂度是O(n^2)肯定会超时,后面就想到了优化后的思路

我们可以用一个map<char,int>cnt去统计当前所有字符之前所出现的次数,然后用map<char,int>sum去统计之前出现的字符串的位置和

然后我们每次的贡献就是(i-1)*cnt[s[i]]-sum[s[i]]

输出即可

#include<bits/stdc++.h>
using namespace std;
#define int long long

string s;
map<char,int> mpsum;//统计之前出现的位数总和 
map<char,int> mpcnt;//统计上之前出现的次数 
signed main()
{
	cin>>s;
	int sum=0;
	for(int i=0;i<s.size();i++)
	{
		sum+=(i-1)*mpcnt[s[i]]-mpsum[s[i]];
		mpsum[s[i]]+=i;
		mpcnt[s[i]]++;
	}
	cout<<sum;
	return 0;
}

 E - 3 Team Division

思路:就是看将整个分成三等份最小的操作次数,我们可以用dp去存储将其分成三等份所需的最小步数,dp[j][k]表示前i个分成j和k的容量的最小操作次数

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node
{
	int x;//表示组数 
	int y;//表示强度 
}a[105];
int n;
void solve()
{
	cin>>n;
	vector<int> pre(n+1,0);
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
		pre[i]=pre[i-1]+a[i].y;
	}
	if(pre[n]%3!=0)
	{
		cout<<"-1\n";
		return ;
	}
	int s=pre[n]/3;
	int f[s+1][s+1];
	int g[s+1][s+1];
	memset(f,0x3f3f3f3f,sizeof(f));
	memset(g,0x3f3f3f3f,sizeof(g));
	f[0][0]=0;
	for(int i=1;i<=n;i++)
	{
		int pos=a[i].x;
		int val=a[i].y;
		for(int j=0;j<=s;j++)
		{
			for(int k=0;k<=s;k++)
			{
				g[j][k]=0x3f3f3f3f;
				if(val<=j)
				{
					g[j][k]=min(g[j][k],f[j-val][k]+(pos!=1));
				}
				if(val<=k)
				{
					g[j][k]=min(g[j][k],f[j][k-val]+(pos!=2));
				}
				if(val<=pre[i]-j-k)
				{
					g[j][k]=min(g[j][k],f[j][k]+(pos!=3));
				}
			}
		}
		for(int j=0;j<=s;j++)
		{
			for(int k=0;k<=s;k++)
			{
				swap(f[j][k],g[j][k]);
			}
		}
	}
	cout<<(f[s][s]==0x3f3f3f3f?-1:f[s][s])<<"\n";
}

signed main()
{
	int t=1;
	while(t--)
	solve();
	return 0;
}

 

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

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

相关文章

python中双引号和单引号的区别是什么

python3中的单引号‘’和双引号“”的作用一样。 3个单引号的作用&#xff1a; 1、表示注释 #3个单引号表示注释多行gf_of_archerzon "Wang" print("archerzon的女盆友是",gf_of_archerzon) print("archerzon的女盆友是%s"%gf_of_archerzon)2…

PolarCTF靶场[web]file、ezphp WP

[WEB]file 知识点&#xff1a;文件上传漏洞 工具&#xff1a;Burp Suite、dirsearch 方法一&#xff1a; 根据页面提示&#xff0c;先用dirsearch工具扫一扫 访问/upload.php&#xff0c;发现一个上传区 在访问/uploaded/,再点击Parent Directory&#xff0c;发现链接到首页…

NVIDIA GPGPU的通信架构解析

NVIDIA GPGPU- 通信架构 写在前面 在本部分&#xff0c;我们将深入探讨NVLink、NCCL、NVSwitch和GPGPU之间的紧密联系。重点关注通信系统及其与计算的耦合性&#xff0c;以揭示Nvlink & NVSwitch System在支持NVIDIA GPGPU大规模计算和超大算力方面的重要作用。为了更好地…

新生入门季 | 学习生物信息分析,如何解决个人电脑算力不足的问题?

随着生物信息学在科研和教育中的快速普及&#xff0c;越来越多的新生开始接触基因组测序、RNA分析等复杂计算任务。然而&#xff0c;在面对这些大规模数据时&#xff0c;个人电脑的算力往往显得捉襟见肘。你是否也在为自己的笔记本性能不足而苦恼&#xff1f; 这篇文章将为你提…

【读书笔记-《30天自制操作系统》-27】Day28

本篇的内容不少&#xff0c;主要围绕着文件操作与文字显示展开。 1. alloca函数 在开发文件操作与文字显示之前&#xff0c;需要先做一些准备&#xff0c;引入alloca函数。首先看下面的代码&#xff1a; #include <stdio.h> #include "apilib.h"#define MA…

美畅物联丨剖析 GB/T 28181 与 GB 35114:视频汇聚领域的关键协议

我们在使用畅联云平台进行视频汇聚时&#xff0c;经常会用的GB/T 28181协议&#xff0c;前面我们写了关于GB/T 28181的相关介绍&#xff0c;​ 详见《畅联云平台&#xff5c;关于GB28181你了解多少&#xff1f;》。 ​最近也有朋友向我们咨询GB 35114协议与GB/T 28181有什么不同…

基于STM32的智能运输机器人设计

引言 本项目设计了一个基于STM32的智能运输机器人&#xff0c;能够自动识别路径、避开障碍物&#xff0c;并根据用户的指令将物品运输到指定地点。该机器人集成了超声波传感器、红外传感器、无线通信模块等&#xff0c;通过STM32对电机的控制&#xff0c;实现平稳、智能的运输…

【深度学习】RNN的简单实现

目录 1.RNNCell 2.RNN 3.RNN_Embedding 1.RNNCell import torchinput_size 4 hidden_size 4 batch_size 1idx2char [e, h, l, o] x_data [1, 0, 2, 2, 3] # 输入&#xff1a;hello y_data [3, 1, 2, 3, 2] # 期待&#xff1a;ohlol# 独热向量 one_hot_lookup [[1, …

滑雪——记忆化搜索

题目 代码 //#pragma GCC optimize(3)#include <bits/stdc.h> const int N 310; using namespace std; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int ans; int g[N][N]; int r, c; int f[N][N]; int dfs(int x, int y) {if(~f[x][y]) return f[x][y];f[x][y] …

TikTok直播带货话术分享,轻松实现销量翻倍

随着TikTok直播带货的不断壮大&#xff0c;越来越多的国内用户开始尝试使用英语进行直播带货。这不仅能够吸引国际观众&#xff0c;还能够扩大市场和提升品牌影响力。 TikTok直播通用带货话术 1. 开场白 开场时&#xff0c;主播可以用热情的语言吸引观众的注意力&#xff1a;…

闭着眼学机器学习——支持向量机分类

引言&#xff1a; 在正文开始之前&#xff0c;首先给大家介绍一个不错的人工智能学习教程&#xff1a;https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程&#xff0c;感兴趣的读者可以自行查阅。 1. 算法介绍 支持向量机(Support Vector Mach…

AI 能否替代程序员?且听我来一唠!

关于 AI 替代程序员这事儿&#xff0c;咱得仔细唠唠。随着 AI 技术的飞速发展&#xff0c;越来越多人担心程序员会被 AI 取代。程序员会不会失业呢&#xff1f;答案是&#xff1a;没那么简单&#xff01; 首先&#xff0c;AI 确实已经可以干很多程序员的活儿了&#xff0c;比如…

如何构建高效的公路工程资料管理系统?

本文介绍了构建高效的公路工程资料管理系统的方法&#xff0c;涵盖了系统需求分析、功能设计、开发平台选择、开发过程、系统上线与培训、持续改进与维护等关键环节。通过合理规划和科学管理&#xff0c;可以确保系统满足用户需求&#xff0c;提高工作效率&#xff0c;保障公路…

基于Java的超级玛丽游戏的设计与实现(论文+源码)-kaic

摘 要 “超级玛丽”游戏是是任天堂情报开发本部开发的Family Computer横版卷轴动作游戏&#xff0c;它因操作简单、娱乐性强而广受欢迎。Java 的优势在于网络编程与多线程&#xff0c;但其作为一门全场景语言&#xff0c;依然提供了强大的GUI开发API。本论文利用Java的GUI界…

某普SSLVPN 任意文件读取

0x01 产品描述&#xff1a; ‌ 迪普科技的VPN产品是一款面向广域互联应用场景的专业安全网关产品&#xff0c;集成了IPSec、SSL、L2TP、GRE等多种VPN技术&#xff0c;支持国密算法&#xff0c;实现分支机构、移动办公人员的统一安全接入&#xff0c;提供内部业务跨互联网的…

公开课 | 2024最新清华大模型公开课 第4课 大模型学习方法

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结&#xff0c;2小时视频&#xff0c;5分钟阅读&#xff0c;加速内容学习与传播。 大纲 引言 介绍大模型的训练方法 强调大模型在多领域的应用 大模型的训练阶段 预训练过程 Tokenization的重要性 预训练模…

​面向异构硬件架构:软件支撑和优化技术

面向异构硬件架构&#xff1a;软件支撑和优化技术 本文来自“面向异构硬件架构软件支撑和优化技术”&#xff0c;重点分析了异构硬件成为发展新趋势&#xff0c;系统软件扮演重要新角色&#xff0c;硬件能力单一性与应用需求多样性间的矛盾带来系统性挑战。为了解决这个问题&am…

第五届大数据、人工智能与物联网工程国际会议

第五届大数据、人工智能与物联网工程国际会议&#xff08;ICBAIE 2024&#xff09;定于2024年10月25-27号在中国深圳隆重举行。会议主要围绕大数据、人工智能与物联网工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与物联网工程研究的专家学者、工程技术人员、技术研…

Pandas DataFrame在预测时同样需要传入一个带有相同特征名称的数据框

问题 修改前的代码 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_splitmusic_datapd.read_csv("music.csv") X music_data.drop(columns[genre]) ymusic_data[genre] modelDecisionTree…

Vivado时序报告五:Report Exceptions详解

目录 一、前言 二 Report Exceptions 2.1 配置界面 2.2 设计示例 2.3 Exception报告 2.3.1 General information 2.3.2 Summary 2.3.3 Exceptions 2.3.4 Ignored Objects 一、前言 时序约束中&#xff0c;有一类约束属于Exceptions类&#xff0c;之所以称为Exceptions…