AC修炼计划(AtCoder Regular Contest 164)

news2024/11/23 4:09:45

传送门:AtCoder Regular Contest 164 - AtCoder

A.签到题,在此不做赘述

B - Switching Travel

这题本来该是秒的,但是因为没有考虑清楚环的问题而被卡半天,其实我们不难发现,要想使题目存在节点,就得让该节点出现一条环同时,而且环最后的头和尾颜色还必须得相等。直接dfs跑环加暴力枚举即可。

// #pragma GCC optimize(3)  //O2优化开启
#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,m;
int id;
int ue[1000005];
void icealsoheat(){
    cin>>n>>m;
    vector<vector<int>>ve(n+5);
    for(int i=1;i<=m;i++){
        int l,r;
        cin>>l>>r;
        ve[l].push_back(r);
        ve[r].push_back(l);
    }
    vector<int>c(n+5,0);
    for(int i=1;i<=n;i++)cin>>ue[i];
    bool f=0;
    id=0;
    auto dfs=[&](auto self,int x,int fa)->void{
        for(auto i:ve[x]){
            if(c[i]||ue[i]==ue[x])continue;
            c[i]=id;
            self(self,i,x);
        }
    };
    for(int i=1;i<=n;i++){
        if(c[i]==0){
            id++;
            c[i]=id;
            dfs(dfs,i,-1);
        }
        for(auto j:ve[i]){
            if(ue[i]==ue[j]&&c[i]==c[j])f=1;
        }        
        if(f)break;

    }
    // for(int i=1;i<=n;i++)cout<<c[i]<<"+++\n";
    // cout<<c[4]<<"----\n";
    if(f)puts("Yes");
    else puts("No");

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

C - Reversible Card Game

通过贪心的思想,双方若想都取最优,爱丽丝尽可能把差值大的值的从大的翻到小的,而鲍勃尽可能的在爱丽丝得手之前把没翻的牌(差值尽可能大的)拿走。然后,当正面大的牌都拿完的时候,鲍勃只需跟着爱丽丝拿,爱丽丝翻一张(把大的值翻上来),鲍勃就拿一张。

// #pragma GCC optimize(3)  //O2优化开启
#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,m;
int a[1000005];
int b[1000005];
bool c[1000005];
struct we{
    int x;
    int cha;
    bool operator <(const we &k)const{
        return k.cha>cha;
    }
};
bool cmp(we ae,we be){
    return ae.cha<be.cha;
}
void icealsoheat(){
    cin>>n;
    priority_queue<we>q;
    vector<we>ve;
    priority_queue<we>qq;
    int ans=0;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i];
        ans+=min(a[i],b[i]);
        if(a[i]>b[i]){
            q.push({i,abs(a[i]-b[i])});
        }
        else{
            ve.push_back({i,abs(a[i]-b[i])});
        }
    }
    int op=0;
    while(q.size()){
        we now=q.top();
        q.pop();
        if(op==0){
            op^=1;
            ve.push_back({now});
        }
        if(!q.size())break;
        now=q.top();
        q.pop();
        if(op==1){
            op^=1;
            ans+=now.cha;
        }
    }
    // cout<<ans<<"+++\n";
    sort(ve.begin(),ve.end(),cmp);
    for(auto [i,j]:ve){
        if(op==0){
            ans+=j;
        }
        else op^=1;
    }

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

D - 1D Coulomb

一道很经典很妙的dp。

我们需要用dp迭代一下类似括号匹配的一样的结构。让+与-相互抵消。

dp[i][j]为值的和,i代表了前i个字母,j代表着+与-的差值状态。(n为+与-相等,0到n-1是-的较多,n+1到2*n是+较多)。hh[i][j]为当前方案的次数。

代码如下:

//#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
int n,m,k;
void icealsoheat(){
    cin>>n;
    string s;
    cin>>s;
    s=' '+s;
    vector<vector<int>>dp(2*n+5,vector<int>(2*n+5,0));
    vector<vector<int>>hh(2*n+5,vector<int>(2*n+5,0));
    hh[0][n]=1;
    for(int i=1;i<=2*n;i++){
        for(int j=0;j<=2*n;j++){
            if(s[i]=='+'||s[i]=='?'){
                if(j>0){
                    dp[i][j]=(dp[i][j]+dp[i-1][j-1])%N;
                    hh[i][j]=(hh[i][j]+hh[i-1][j-1])%N;
                }
                if(j<=n&&j>0){
                    int v=n-j;
                    v=v*2+1;
                    dp[i][j]=(dp[i][j]+hh[i-1][j-1]*v%N)%N;
                }
            }
            if(s[i]=='-'||s[i]=='?'){
                if(j<2*n){
                    dp[i][j]=(dp[i][j]+dp[i-1][j+1])%N;
                    hh[i][j]=(hh[i][j]+hh[i-1][j+1])%N;
                }
                if(j>=n&&j<2*n){
                    int v=j-n;
                    v=v*2+1;
                    dp[i][j]=(dp[i][j]+hh[i-1][j+1]*v%N)%N;                    
                }
            }
        }
    }
    cout<<dp[2*n][n];


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

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

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

相关文章

【PC电脑windows-学习样例generic_gpio-ESP32的GPIO程序-基础样例学习】

【PC电脑windows-学习样例generic_gpio-ESP32的GPIO程序-基础样例学习】 1、概述2、实验环境3、 物品说明4、自我总结5、本次实验说明6、实验过程&#xff08;1&#xff09;复制目录到桌面&#xff08;2&#xff09;手动敲写&#xff08;3&#xff09;反复改错&#xff08;4&am…

将知识图谱结合到地铁客流预测中:一个分散注意力关系图卷积网络

导读 论文题目《Combining knowledge graph into metro passenger flow prediction: A split-attention relational graph convolutional network 》。该论文于2023年发表于《Expert Systems With Applications》&#xff0c;文章基于知识图谱&#xff0c;提出了一种分割注意力…

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

数组元素逆序交换

数组元素逆序交换 例如&#xff1a; 输入&#xff1a; 1,2,3,4,5 输出&#xff1a; 5,4,3,2,1 代码&#xff1a; #include<stdio.h> #define N 5 int main() {int a[N], i, temp;for (i 0; i < N; i) {scanf("%d", &a[i]);}for (i 0; i < N…

FL Studio 21.2 升级,支持 Stem 分离和可以发布音乐的 FL Cloud

FL Studio 21.2 带有 stem 分离和 FL Cloud&#xff0c;这是一项专为 FL Studio 打造的具有里程碑意义的新服务。其他新功能包括 FL Studio Fruity Edition 的 Audio Clips&#xff08;音频剪辑&#xff09;和一个新的模拟建模合成器 Kepler。 fl studio 21直装版: https://pan…

JavaEE-cookie和session

本部分内容包括 cookie基本概念&#xff0c;sendcookies和getcookies代码&#xff1b; session基本概念&#xff0c;session实现登陆界面&#xff1b; 上述过程中涉及的代码如下&#xff1a; 1 import javax.servlet.ServletException; import javax.servlet.annotation.WebSe…

2318.不同骰子序列的数目

经典的DP题目&#xff0c;求方案数 从序列中最后一个数字往前考虑 当前状态取决于前一个的状态和再前一个的状态所以dp&#xff08;n&#xff0c;last&#xff0c;last1&#xff09;为当前考虑的是第n个并且前一个数字是last 再前一个数字是last1的所有方案数&#xff0c;递归的…

Leetcode—21.合并两个有序链表【简单】

2023每日刷题&#xff08;十三&#xff09; Leetcode—21.合并两个有序链表 直接法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* mergeTwoLists(struct ListNode* list1, struct…

0033Java程序设计-基于java的NBA球队运营管理系统的的设计与实现论文

文章目录 摘 要目 录系统设计开发环境 摘 要 本NBA球队运营管理系统设计目标是实现NBA球队运营管理的信息化管理&#xff0c;提高管理效率&#xff0c;使得NBA球队运营管理工作规范化、科学化、高效化。 本文研究的NBA球队运营管理系统基于SSM架构&#xff0c;采用JSP技术、J…

python爬虫selenium和ddddocr使用

python爬虫selenium和ddddocr使用 selenium使用 selenium实际上是web自动化测试工具&#xff0c;能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。 通过pythonselenium结合来实现爬虫十分巧妙。 由于是模拟人的点击来操作&#xff0c;所以实际上被反…

一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium

大家好&#xff0c;我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战 以及1小时掌握Python操作Mysql数据库之pymysql模块技术 近日锋哥又卷了一波课程&#xff0c;python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium&#xff0c;文字版视频版。1…

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义&#xff0c;只需要满足&#xff1a;1、根节点两个子树的高度差不超过1&#xff1b;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…

基于SSM的n省出口基地公共信息服务平台设计与实现

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

软考下午第一题 案列分析

期待分值 10&#xff0c;前三问12左右分&#xff0c;最后一题2、3分左右&#xff0c;重点在于拿下前面三题。 小心谨慎&#xff0c;不要大意。 数据流图 外部系统 数据存储 加工&#xff08;&#xff09;process 数据流 第二小题 说明给出存储名称&#xff0c;就使用该名称&…

C# Socket通信从入门到精通(6)——单个同步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(5)——单个同步TCP服务器监听一个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

基于Qt 文本读写(QFile/QTextStream/QDataStream)实现

​ 在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本章介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。 ## QFile 读写文本 QFile 类提供了读…

[2021]不确定成本下的处理分配

英文题目&#xff1a;Treatment Allocation under Uncertain Costs 中文题目&#xff1a;不确定成本下的处理分配 单位&#xff1a;swager、uber 时间&#xff1a;2021 论文链接&#xff1a;https://arxiv.org/pdf/2103.11066.pdf 代码&#xff1a; 摘要&#xff1a; 我…

一个基于Excel模板快速生成Excel文档的小工具

介绍 DocumentGenerator是一个Excel快速生成工具&#xff0c;目标以后还能实现Word、pdf等的文件的生成。该程序独立运行&#xff0c;可通过HTTP接口调用其生成接口。 典型使用场景为如下&#xff1a; 使用者编写模板文件使用者准备模板文件的填充JSON数据内容使用者通过网络…

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据

一.串口轮询模式底层机制&#xff1a; 在STM32每个串口的内部都有两个寄存器&#xff1a;发送数据寄存器(TDR)/发送移位寄存器,当我们调用HAL_UART_Transmit 把数据发送出去时&#xff0c;CPU会将数据依次将数据发送到数据寄存器中&#xff0c;移位寄存器中的数据会根据我们设置…

leetcode做题笔记206. 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…