Atcoder Beginner Contest 308

news2024/9/24 17:09:15

A - New Scheme

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N = 110;
int a[N];
void solve()
{
    for (int i = 0; i < 8; i++) cin >> a[i];
    if (a[0] < 100 || a[0]>675 || a[0] % 25 != 0) {
        puts("No");
        return;
    }
    for (int i = 1; i < 8; i++) {
        if (a[i] < a[i - 1]|| a[i] < 100 || a[i]>675 || a[i] % 25 != 0) {
            puts("No");
            return;
        }
    }
    puts("Yes");
}
signed main()
{
    solve();
    return 0;
}

B - Default Price

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#define int long long
using namespace std;
const int N = 110;
string c[N],d[N];
int p[N];
map<string, int>mp;
int res;
void solve()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> c[i];
    for (int i = 1; i <= m; i++) cin >> d[i];
    for (int i = 0; i <= m; i++) cin >> p[i];
    for (int i = 1; i <= m; i++) mp[d[i]] = p[i];
    for (int i = 1; i <= n; i++) {
        if (mp[c[i]]) res += mp[c[i]];
        else res += p[0];
    }
    cout << res << endl;
}
signed main()
{
    solve();
    return 0;
}

C - Standings

会卡精度,double就不能过全部数据,改成long double就AC了

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<cmath>
#define int long long
using namespace std;
const int N = 2e5 + 10;
struct node {
    long double a, b;
    long double rate;
    int idx;
    bool operator<(const node& W)const {
        if (rate!=W.rate) return rate>W.rate;
        return idx<W.idx;
    }
}q[N];
void solve()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> q[i].a >> q[i].b;
    for (int i = 1; i <= n; i++) {
        q[i].idx = i;
        q[i].rate = q[i].a /(q[i].a + q[i].b);
    }
    sort(q + 1, q + 1 + n);
    for (int i = 1; i <= n; i++) cout << q[i].idx << " ";
}
signed main()
{
    solve();
    return 0;
}

D - Snuke Maze

用dfs

原本写的代码,各种tle以及re:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N=510;
char s[N][N];
bool check(char ch1,char ch2){
    if(ch1=='s'&&ch2=='n') return true;
    if(ch1=='n'&&ch2=='u') return true;
    if(ch1=='u'&&ch2=='k') return true;
    if(ch1=='k'&&ch2=='e') return true;
    if(ch1=='e'&&ch2=='s') return true;
    return false; 
}
int res;
int h,w;
bool found;
void dfs(int x,int y){
    if(x==h&&y==w){
        res++;
        found=true;
        return;
    }
    if(found) return;
    if(x-1>=1&&check(s[x][y],s[x-1][y])) dfs(x-1,y);
    if(y-1>=1&&check(s[x][y],s[x][y-1])) dfs(x,y-1);
    if(x+1<=h&&check(s[x][y],s[x+1][y])) dfs(x+1,y);
    if(y+1<=w&&check(s[x][y],s[x][y+1])) dfs(x,y+1);
}
void solve()
{
    cin>>h>>w;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cin>>s[i][j];
        }
    }
    if(s[1][1]!='s'){
        puts("No");
        return;
    }
    dfs(1,1);
    if(res) puts("Yes");
    else puts("No");
}
signed main()
{
    solve();
    return 0;
}

别人的代码: 

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N=510;
char s[N][N];
int h,w;
string t="snuke";
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int vis[N][N][5];
int res;
void dfs(int x,int y,int cur){
    if(x<1||y<1||x>h||y>w) return ;
    if(s[x][y]!=t[cur]) return ;
    if(x==h&&y==w){
        res++;
        return;
    }
    if(vis[x][y][cur]) return;
    vis[x][y][cur]=1;
    for(int i=0;i<4;i++){
        dfs(x+dx[i],y+dy[i],(cur+1)%5);
    }
}
void solve()
{
    cin>>h>>w;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cin>>s[i][j];
        }
    }
    dfs(1,1,0);
    if(res) puts("Yes");
    else puts("No");
}
signed main()
{
    solve();
    return 0;
}

对比之后发现我的代码少了标记已经走过的点

进行修正

中间要注意剪枝

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N=510;
char s[N][N];
int vis[N][N];
bool check(char ch1,char ch2){
    if(ch1=='s'&&ch2=='n') return true;
    if(ch1=='n'&&ch2=='u') return true;
    if(ch1=='u'&&ch2=='k') return true;
    if(ch1=='k'&&ch2=='e') return true;
    if(ch1=='e'&&ch2=='s') return true;
    return false; 
}
int res;
int h,w;
bool found;
void dfs(int x,int y){
    if(x==h&&y==w){
        res++;
        found=true;
        return;
    }
    if(vis[x][y]) return;
    vis[x][y]=1;
    if(found) return;
    if(x-1>=1&&check(s[x][y],s[x-1][y])) dfs(x-1,y);
    if(y-1>=1&&check(s[x][y],s[x][y-1])) dfs(x,y-1);
    if(x+1<=h&&check(s[x][y],s[x+1][y])) dfs(x+1,y);
    if(y+1<=w&&check(s[x][y],s[x][y+1])) dfs(x,y+1);
}
void solve()
{
    cin>>h>>w;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cin>>s[i][j];
        }
    }
    if(s[1][1]!='s'){
        puts("No");
        return;
    }
    dfs(1,1);
    if(res) puts("Yes");
    else puts("No");
}
signed main()
{
    solve();
    return 0;
}

然后我加了一个回溯算法,就会超时

至于为什么不用回溯,是因为不需要,因为它本来dfs就是往各个方向找,能找到就是能找到,只要找到一条路就行,所以找过的点就直接标记,只找一次,就不需要再找了

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

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

相关文章

深度学习如何入门?

深度学习是一种强大的机器学习方法&#xff0c;它在各个领域都有广泛应用。如果你是一个新手&#xff0c;想要入门深度学习&#xff0c;下面是一些步骤和资源&#xff0c;可以帮助你开始学习和实践深度学习。 1. 学习基本概念 在开始深度学习之前&#xff0c;你需要对一些基本…

c语言修炼第二章--分支与循环(2.2)

目录 2.2循环语句 2.2.1while循环语句 2.2.2for语句 2.2.2.1for语句的语法形式 2.2.2.2break和continue在for语句中的应用 2.2.2.3关于for循环变量的建议 2.2.2.4for循环的一些变种 初始化&#xff0c;判断&#xff0c;调整都进行省略 使用多个变量控制循环 2.2.3do…

FreeRTOS_其他任务API函数

目录 1. 任务相关 API 函数预览 2. 任务相关 API 函数详解 2.1 函数 uxTaskPriorityGet() 2.2 函数 vTaskPrioritySet() 2.3 函数 uxTaskGetSystemState() 2.4 函数 vTaskGetInfo() 2.5 函数 xTaskGetApplicationTaskTag() 2.6 函数 xTaskGetCurrentTaskHandle() 2.7 …

AI 对“校园WiFi免认证的”的认知

校园WiFi免认证 很抱歉&#xff0c;我不能提供关于绕过校园WiFi认证的信息。绕过校园WiFi认证是违反校园网络使用规定的行为&#xff0c;可能会导致违纪处分或其他法律后果。建议你遵守校园网络使用规定&#xff0c;合法合规地使用校园WiFi。如果你有任何关于校园WiFi认证的问…

SpringBoot2+Vue2实战(九)集成Echarts

Vue下载Echarts npm i echarts -S echarts官网 快速上手 - Handbook - Apache ECharts2 引入&#xff1a; import * as echarts from "echarts" 一、示例 EchartsController RestController RequestMapping("/echarts") public class EchartsContr…

异常处理~

2&#xff1a;运行时异常 3&#xff1a;编译时异常 4&#xff1a;异常的默认处理 5&#xff1a;编译时异常的处理机制 2&#xff1a;异常处理方式1——throws throws: 用在方法上&#xff0c;可以将方法内部出现的异常抛出去给本方法的调用者处理这种方式不好&#xff0c;如果…

在IDEA中通过maven打包war包

在pom文件中加入这一句 <packaging>war</packaging> 然后打包就好了 war包文件目录

途乐证券|A股半年行情收官 北向净买入超1800亿元

上半年A股市场正式收官&#xff0c;在整体震荡的趋势下&#xff0c;上证指数、深证成指收涨&#xff1b;各板块行业分化态势凸显&#xff0c;通信、传媒、计算机等行业表现最为突出&#xff0c;商贸零售、房地产等行业跌幅居前。业内人士表示&#xff0c;上半年市场行情受产业趋…

企业所得税高怎么办?合理节税有哪些方式

企业所得税高怎么办&#xff1f;合理节税有哪些方式 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 如今越来越多的企业深耕于创新与发展&#xff0c;这也是一种迎合市场的需求迫不得以需要进行的转变&#xff0c;很多企业所得税高的…

不看后悔,appium自动化环境完美搭建

桌面版appium提供可视化操作appium主要功能的使用方式&#xff0c;对于初学者非常适用。 如何在windows平台安装appium桌面版呢&#xff0c;大体分两个步骤&#xff0c;分别是依赖软件安装以及appium桌面版安装。以下是对这两个步骤的拆解文字加图片描述。 01、依赖软件安装 …

Google在AI领域的潜力被严重低估了

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结 &#xff08;1&#xff09;Google正在人工智能领域采取重大举措&#xff0c;推出了生成式人工智能聊天机器人Google Bard&#xff0c;并向人工智能初创公司Anthropic投资了3亿美元。 &#xff08;2&#xff09;Goo…

Dockerfile使用指南

Dockerfile使用指南 通过RUN执行指令Dockerfile改进版Dockerfile 文件复制和目录操作(ADD,COPY,WORKDIR)复制普通文件复制压缩文件 构建参数和环境变量(ARG vs ENV)ENVARG区别 容器启动命令CMD容器启动命令ENTRYPOINTShell格式和Exce格式Shell格式Excel格式 通过RUN执行指令 r…

No2.精选前端面试题,享受每天的挑战和学习

文章目录 解释下 JavaScript 中的async&#xff0c;await与PromiseJavaScript 预编译到底干了什么css的选择器嵌套过多带来的问题简单说下css的尺寸体系简单说下自适应布局和响应式布局 解释下 JavaScript 中的async&#xff0c;await与Promise 在JavaScript中&#xff0c;asy…

Ubuntu 编译 OpenCV SDK for Android + Linux

概述 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了很多函数&#xff0c;这些函数非常高效地实现了计算机视觉算法&#xff08;最基本的滤波到高级的物体检测皆有涵盖&#xff09;。   OpenCV 的应用领域…

[2023-07-03]2023博客之星候选--码龄赛道--15年以上

https://bbs.csdn.net/topics/616395535https://bbs.csdn.net/topics/616395535 用户名总原力值当月获得原力值2023年获得原力值2023年高质量博文数75阿酷tony:[博客] [成就]3999345028 博客之星 2023 《码龄赛道 15年以上》第 75 名 啊&#xff0c;75名啊&#xff01;你叫…

WINDBG 查崩溃

前言&#xff1a;windbg大家都很熟悉&#xff0c;它是做windows系统客户端测试的QA人员很应该掌握的定位程序崩溃原因的工具&#xff0c; 网上也有很多资料&#xff0c;但是真正适合QA阅读和实用的资料不多&#xff0c;我把我认为最重要最应该掌握的结合以前的使用经验分享一下…

SPI机制

SPI机制是Service Provider Interface&#xff0c;是服务提供发现机制&#xff0c;用来启用框架扩展和替换组件。比如java.sql.Driver接口&#xff0c;其他不同厂商可以针对同一接口做出不同的实现&#xff0c;MySQL和PostgreSQL都有不同的实现提供给用户&#xff0c;而Java的S…

学生台灯护眼好还是防近视好?专家推荐的学生台灯分享

其实学生台灯如果护眼效果好也是能在一定程度上防近视的&#xff0c;这两种是由联系的并不冲突。我们要知道造成近视的主要原因的是什么&#xff1f;是不是每天长时间高强度的学习&#xff1f;是不是长时间玩电子产品没有合理休息&#xff1f;这些都导致一个结果&#xff0c;那…

为什么使用消息队列?消息队列有什么优点和缺点?常用的MQ 都有什么区别,以及适合哪些场景?

问题&#xff1a; 为什么使用消息队列&#xff1f;消息队列有什么优点和缺点&#xff1f;Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别&#xff0c;以及适合哪些场景&#xff1f; 为什么使用消息队列&#xff1f; 其实就是问问你消息队列都有哪些使用场景&#xff0c;…

计算机专业大学如何自学?常用网站和工具

耗时5小时&#xff0c;第一个B站视频&#xff0c;满足分享欲 计算机专业现状 or 困境&#xff1f;如何自学&#xff1f;常用网站科普&#xff01;_哔哩哔哩_bilibili &#x1f446;发了个视频&#xff0c;结合文章中的链接&#xff0c;保存到自己浏览器收藏夹里就完了 目录 …