AC修炼计划(AtCoder Regular Contest 163)

news2024/11/27 6:17:35

传送门:AtCoder Regular Contest 163 - AtCoder

第一题我们只需要将字符串分成两段,如果存在前面一段比后面一段大就成立。

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=1000000007;
int n,k;
void icealsoheat(){
    cin>>n;
    string s;
    cin>>s;
    for(int i=1;i<n;i++){
        if(s.substr(0,i)<s.substr(i)){
            puts("Yes");
            return;
        }
    }
    puts("No");

}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie();
    cout.tie();
    int _;
    _=1;
    cin>>_;
    while(_--){
        icealsoheat();
    }

}

B - Favorite Game

第二题也比较基础,我们可以先把后面的数组排序,然后枚举每一段(每一段的长度为k,包含按顺序的k个数)

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=1000000007;
int n,k;
int b[1000005];
void icealsoheat(){
    int le,re;
    cin>>n>>k;
    cin>>le>>re;
    n-=2;
    int an=0;
    for(int i=1;i<=n;i++){
        cin>>b[i];
        if(b[i]>=le&&b[i]<=re)an++;
    }
    sort(b+1,b+1+n);
    if(an>=k){
        cout<<0;
        return;
    }
    int ans=0x3f3f3f3f3f3f3f3f;
    for(int i=1;i<=n-k+1;i++){
        int xx=0;
        if(le>b[i])xx+=abs(le-b[i]);
        if(re<b[i+k-1])xx+=abs(re-b[i+k-1]);
        ans=min(ans,xx);
    }
    cout<<ans;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie();
    cout.tie();
    int _;
    _=1;
    // cin>>_;
    while(_--){
        icealsoheat();
    }

}

C - Harmonic Mean

这题想到了裂项相消公式,但是没有想到给他们分开。

当存在n=t*(t+1)的时候,我们不能直接用数列(2,6,12,20.。。。。(n-1)*n,n)

而是把后n-1项看成一部分,使后n-1项的和等于1,然后把每一个项数*2,此时的后n-1项的总和为1/2,这时候我们只需要再放入一个2即可

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f; 
int n,k;
map<int,int>hh;
void yu(){
    for(int i=1;i<=500;i++){
        hh[i*(i+1)]=1;
    }
}
void icealsoheat(){
    cin>>n;
    if(n==2)cout<<"No\n";
    else{
        cout<<"Yes\n";
        if(n==1)cout<<"1\n";
        else if(n==3)cout<<"2 3 6\n";
        else{
            vector<int>ans;
            if(hh[n]){
                n--;
                for(int i=1;i<n;i++){
                    ans.push_back(2ll*i*(i+1ll));
                }
                ans.push_back(2ll*n);
                cout<<"2 ";
                for(auto i:ans){
                    cout<<i<<" ";
                }
            }
            else{
                for(int i=1;i<n;i++){
                    cout<<i*(i+1)<<" ";
                }
                cout<<n;
            }
            cout<<"\n";
        }
    }
 
    
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie();
    cout.tie();
    int _;
    _=1;
    yu();
    cin>>_;
    while(_--){
        icealsoheat();
    }
}

D - Sum of SCC

好厉害的题,开拓了我的视野。不看题解我是真想不到竟然还能这么dp。

我们可以知道,统计SSG(强连通分量)是很难统计的。竞赛图有一个性质:当我们把强连通分量缩点之后,拉直,整个竞赛图会变成一条很长的链,并且,长的链上的任何两个点之间都有一个链(很抽象又很神奇的想法)。既然变成了一个长长的链,那么其实我们可以通过在长链上某点进行一刀切,使其分成左右两个集合,分别是集合A与集合B,同时,我们定义集合A的所有点都与集合B的相连。且集合A的数字较小,集合B的数字较大。

我们用三维dp i,j,k来进行动态规划。i表示我们只有前i个点儿的状态,j表示A集合中有j个点儿,k表示有k条小数向大数连的边。

我们每次塞进去第i个点儿,有两种情况:

1.将该点儿塞入集合A中,那么该点儿可以从集合A中选择p个点使这p个点儿指向该点儿。

dp[i+1][j+1][k+p]+=dp[i][j][k]*c[j][p]

2.将该点儿塞入集合B中,那么A点都会指向该点儿,同时我们可以选取B集合中p个点儿,使其指向该点儿。

dp[i+1][j][j+k+p]+=dp[i][j][k]*c[i-j][p]

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int mod=998244353;
int n,m;
int c[505][505];

void init(int mx)
{
    for(int i=0;i<=mx;i++)
        for(int j=0;j<=i;j++) c[i][j]=j?(c[i-1][j-1]+c[i-1][j])%mod:1;
}

void icealsoheat(){
    cin>>n>>m;
    vector dp(50,vector(50,vector<int>(1600,0)));
    dp[0][0][0]=1;
    for(int i=0;i<n;i++){
        for(int j=0;j<=i;j++){
            for(int k=0;k<=i*(i-1)/2;k++){
                for(int p=0;p<=j;p++)(dp[i+1][j+1][k+p]+=dp[i][j][k]*c[j][p]%mod)%mod;
                for(int p=0;p<=i-j;p++)(dp[i+1][j][j+k+p]+=dp[i][j][k]*c[i-j][p]%mod)%mod;
            }
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        ans=(ans+dp[n][i][m])%mod;
    }
    cout<<ans;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie();
    cout.tie();
    int _;
    _=1;
    // cin>>_;
    init(500);
    while(_--){
        icealsoheat();
    }

}

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

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

相关文章

自注意力机制理解

1、精密输入 输入是一个向量&#xff0c;输出表里或类 输入是一组向量&#xff08;变化的长度&#xff09;&#xff0c;输出表里或类&#xff1f;&#xff1f;&#xff1f; 例子1 句子生成 独热编码&#xff0c;不能包含语义信息 词嵌入&#xff0c;每个词是一个词向量 例…

【深度学习基础】Pytorch框架CV开发(1)基础铺垫

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

BEM:css命名规范

BEM BEM(Block-Element-Modifier)&#xff0c;块、元素、修饰符&#xff0c;是一种CSS命名规范&#xff0c;旨在前端开发中创建可重用组件和代码共享的方法&#xff0c;使样式易于扩展&#xff0c;易于维护&#xff0c;易于理解 规范&#xff1a; 1、块&#xff08;Block&am…

Python|Pyppeteer获取威科先行文章链接(21)

前言 本文是该专栏的第21篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文以“威科先行”的信息库为例,笔者将详细介绍使用pyppeteer“自动滑动页面并翻页”获取威科先行的文章链接。如果对pyppeteer的使用以及知识点不太熟悉的同学,可往前查看本专栏前面…

(参考写法)Transformer-Based Visual Segmentation:A Survey

基于Transformer的视觉分割综述 南洋理工大学NTU、上海人工智能实验室AI Lab整理300+论文 论文地址:https://arxiv.org/pdf/2304.09854.pdf 代码地址:https://github.com/lxtGH/Awesome-Segmentation-With-Transformer 前言 SAM (Segment Anything )作为一个视觉的分割…

python创建一个简单的flask应用

下面用python在本地和服务器上分别创建一个简单的flask应用&#xff1a; 1.在pc本地 1&#xff09;pip flask后创建一个简单的脚本flask_demo.py from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello, World!winR进入命令行&#xff0c;…

https网站加载http资源问题

https网站加载http资源问题 前言&#xff1a;最近项目对接了一个第三方的平台、我们需要展示第三方平台返回来的图片资源、由于我们的服务器设置为了https、但是第三方平台返回的图片链接是 http 资源。所以就出现了图片无法加载出来的问题&#xff0c;在此记录一下问题的解决…

数据结构与算法(Java版) | 排序算法的介绍与分类

各位朋友&#xff0c;现在我们即将要进入数据结构与算法&#xff08;Java版&#xff09;这一系列教程中的排序算法这一章节内容的学习中了&#xff0c;所以还请大家系好安全带&#xff0c;跟随我准备出发吧&#xff01; 相信诸位应该都知道排序算法有很多种吧&#xff01;就算没…

旋转链表(C++解法)

题目 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4 输出&#xff1a;[…

服务号可以转订阅号吗

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠&#xff0c;消息出现在聊天列表中&#xff0c;会像收到消息一样有提醒。而订阅号推送的消息是折叠的&#xff0c;“订阅号…

软文成功三大要素,媒介盒子分享

今天媒介盒子来和大家分享&#xff1a;软文成功的三大要素。 许多企业在进行软文推广时经常会很困惑&#xff0c;明明软文写了也发了&#xff0c;怎么就是没效果&#xff0c;其实是忽略了这三点&#xff1a; 一、 创意性 创意可以是文案的语言风格、看问题的视角、排版等等&…

服务器开设新账户,创建账号并设置密码

实验室又进新同学了&#xff0c;服务器开设新账号搞起来 1、创建用户&#xff1a; 在root权限下&#xff0c;输入命令useradd -m 用户名&#xff0c;如下 sudo useradd -m yonghuming 2、设置密码&#xff1a; 输入命令passwd 用户名 回车&#xff0c;接着输入密码操作&…

SPSS两独立样本的非参数检验

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

Yolov8改进CoTAttention注意力机制,效果秒杀CBAM、SE

1.CoTAttention 论文地址&#xff1a;2107.12292.pdf (arxiv.org) CoTAttention网络是一种用于多模态场景下的视觉问答&#xff08;Visual Question Answering&#xff0c;VQA&#xff09;任务的神经网络模型。它是在经典的注意力机制&#xff08;Attention Mechanism&#xf…

C++ 算法:区间和的个数

涉及知识点 归并排序 题目 给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中&#xff0c;值位于范围 [lower, upper] &#xff08;包含 lower 和 upper&#xff09;之内的 区间和的个数 。 区间和 S(i, j) 表示在 nums 中&#xff0c;位置从 i 到 j 的元素之和…

多技术融合提升环境、生态、水文、土地、农业、大气等领域科研技术水平

专题一、空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 点击查看原文链接https://mp.weixin.qq.com/s?__bizMzg2NDYxNjMyNA&mid2247546998&idx6&sn39342c376b158eff1…

基于SSM的购物商城网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

多测师肖sir_高级金牌讲师__adb命令

adb指令整理&#xff1a; ADB常用的指令&#xff1a; 查看当前连接设备 &#xff1a; adb devices 进入到shell &#xff1a; adb shell 查看日志 &#xff1a; adb logcat 安装apk文件 &#xff1a; adb install xxx.apk 卸载APP &#xff1a; adb uninstall 包名 查看包名 &…

Cadence Virtuoso如何保存spectre仿真在cell view里

Launch ADE L 可以选择 Load State 加载上次仿真状态&#xff0c;但是我想保存在cell view和schematic在一起可以直接打开&#xff0c;可以选择Save State旁的Cellview 可以在Library Manager中看到保存成功了

YOLOv5项目实战(2)— 手把手教你租借云服务器去训练模型

前言:Hello大家好,我是小哥谈。近期由于出差在外(在新疆吐鲁番出差呢~),一直远程使用公司服务器进行算法模型训练,但是由于这几天公司VPN故障,导致无法远程训练模型,所以就想着租借服务器来进行训练。近期我研发的算法模型是工业场景烟雾明火检测,本节课就以此为例教大…