Codeforces Round 490 (Div. 3)

目录

A. Mishka and Contest

B. Reversing Encryption

C. Alphabetic Removals

D. Equalize the Remainders

E. Reachability from the Capital

F. Cards and Joy


A. Mishka and Contest

依照题目意思左右遍历标记即可

void solve(){cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];int ans=0;for(int i=1;i<=n;i++){if(st[i] || a[i]>m) break; ans++;st[i]=true;}for(int i=n;i>=1;i--){if(st[i] || a[i]>m) break; ans++;st[i]=true;}cout<<ans<<endl;return ;
}

B. Reversing Encryption

按照题目意思倒着来即可

void solve(){cin>>n;string s; cin>>s; s=' '+s;for(int i=1;i<=n;i++){if(n%i==0){for(int l=1,r=i;l<=r;l++,r--) swap(s[l],s[r]);}}for(int i=1;i<=n;i++) cout<<s[i];cout<<endl;return ;
}

C. Alphabetic Removals

我们可以优先把每一个字母的下标存下来然后判断有没有同时标记即可(倒着存就可以正着求前面的了)

void solve(){cin>>n>>m;string s; cin>>s; s=' '+s;vector<vector<int>> ton(26);for(int i=n;i>=1;i--){ton[s[i]-'a'].push_back(i);}vector<bool> st(n+5);while(m--){for(int i=0;i<26;i++){if(!ton[i].empty()){st[ton[i].back()]=true;ton[i].pop_back();break;}}}for(int i=1;i<=n;i++) if(!st[i]) cout<<s[i];cout<<endl;return ;
}

D. Equalize the Remainders

我们可以灵巧使用set来解决问题,为什么这样思考呢?我们肯定十一次性对当前这个数%m的值直接变到应该变化的位置是最好的可以用set来存储还没有抵达的位置然后直接变化过去即可这样就是nlog级别的

void solve(){cin>>n>>m;vector<int> cnt(m),a(n+1);int num=n/m;set<int> S;for(int i=0;i<m;i++) S.insert(i);LL ans=0;for(int i=1;i<=n;i++){cin>>a[i];int t=*S.rbegin();int v=a[i]%m;if(v>t) t=*S.begin();else t=*S.lower_bound(v);if(++cnt[t]==num) S.erase(t);a[i]+=(t-v+m)%m;ans+=(t-v+m)%m;}cout<<ans<<endl;for(int i=1;i<=n;i++) cout<<a[i]<<' ';cout<<endl;return ;
}

E. Reachability from the Capital

有向图的连接我们考虑使用缩点的方式来解决问题缩点然后重新建图然后看没有入度的点的数量就是答案

#include <bits/stdc++.h>
using namespace std;
const int N = 50010;int n,m,S;vector<int> g[N];int dfn[N],low[N],stk[N],top,timetamp,scc_cnt;
bool is_stk[N];
int id[N],din[N];
void tarjan(int u){dfn[u]=low[u]=++timetamp;stk[++top]=u,is_stk[u]=true;for(auto&v:g[u]){if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}else if(is_stk[v]) low[u]=min(low[u],dfn[v]);}if(dfn[u]==low[u]){++scc_cnt;int y;do{y=stk[top--];is_stk[y]=false;id[y]=scc_cnt;}while(y!=u);}
}
int main(){cin>>n>>m>>S;while(m--){int a,b; cin>>a>>b;g[a].push_back(b);}for(int i=1;i<=n;i++)if(!dfn[i]) tarjan(i);for(int i=1;i<=n;i++){for(auto &v:g[i]){int a=id[i],b=id[v];if(a!=b){din[b]++;}}}int sum=0;din[id[S]]++;for(int i=1;i<=scc_cnt;i++){if(!din[i]) sum++;}cout<<sum<<endl;return 0;
}

F. Cards and Joy

我们可以发现有贡献的只有对于喜欢同一种类型的人的分配方式,对于这样一个问题我们可以定义状态dp[i][j]i个人分j张牌的最大喜欢值是多少可以由i-1分min(0,j-m)-j转移过来即可

// Problem: F. Cards and Joy
// Contest: Codeforces - Codeforces Round 490 (Div. 3)
// URL: https://codeforces.com/contest/999/problem/F
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define endl "\n"
#define LF(x)   fixed<<setprecision(x)// c++ 保留小数
#define int long long
typedef long long LL;
typedef unsigned long long ULL;
typedef tuple<int,int,int> TUP;
typedef pair<int, int> PII;
const int N=1000010,M=1010,INF=0x3f3f3f3f,pp=13331,mod=1e9+7;
const double pai=acos(-1.0);// pai
int t,n,m,k;
int ton[N];
int num[N];
int w[N];void solve()
{// 有个明显的结论就是我们只有 喜欢同一种类型牌的选手互相最优分配即可// 不同之间没有影响// 对于每一种牌的类型  假设数量为 sum  我们要分给m个人 最多 k张 如果一个人分到的是 [1-k] 权重也是不一样的// 不妨定义为 dp[i][j][sum]// 表示i个人分到j张的最优解是多少同时以及已经分了sum的条件下cin>>n>>m;for(int i=1;i<=n*m;i++){int x; cin>>x;ton[x]++;}    set<int> S;for(int i=1;i<=n;i++){int x; cin>>x;num[x]++;// 喜欢同一个数字的人数S.insert(x);}for(int i=1;i<=m;i++) cin>>w[i];int ans=0;for(auto&v:S){// 对于 同一种类型的牌vector<vector<int>> dp(num[v]+5,vector<int>(ton[v]+5,-INF));dp[0][0]=0;for(int i=1;i<=num[v];i++)for(int j=0;j<=ton[v];j++)for(int k=max(0ll,j-m);k<=j;k++){dp[i][j]=max(dp[i][j],dp[i-1][k]+w[j-k]);}int res=0;for(int i=0;i<=ton[v];i++) res=max(res,dp[num[v]][i]);ans+=res;}cout<<ans<<endl;return ;
}

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

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

相关文章

Windows环境下查看磁盘层级占用空间的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C++ //练习 7.48 假定Sales_data的构造函数不是explicit的,则下述定义将执行什么样的操作?

C Primer&#xff08;第5版&#xff09; 练习 7.48 练习 7.48 假定Sales_data的构造函数不是explicit的&#xff0c;则下述定义将执行什么样的操作&#xff1f; string null_isbn("9-999-99999-9"); Sales_data item1(null_isbn); Sales_data item2("9-999-99…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置&#xff0c;将flink的依赖上传到hdfs文件管理系统 1. 实践 &#xff08;1&#xff09;生产集群为cdh集群&#xff0c;从cm上下载配置文件&#xff0c;设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

前端常见面试题之react基础

文章目录 1. react事件为何需要bind this(1)箭头函数(2)bind改变this指向(3)构造函数中使用箭头函数绑定this 2. react事件和dom事件的区别3. react事件中的event参数4. react事件中的自定义参数5. 自定义参数和event参数共存6. 受控组件和非受控组件7. props实现父子组件通信1…

Android将 ViewBinding封装到BaseActivity基类中(Java版)

在Android中使用Java语言将ViewBinding封装到基类中&#xff0c;操作步骤如下&#xff1a; 1、在项目的build.gradle文件中启用了ViewBinding&#xff0c;添加以下代码&#xff1a; android {...buildFeatures {viewBinding true} } 2、创建一个名为“BaseActivity”的基类&…

vue2和vue3 setup beforecreate create生命周期时间比较

创建一个vue程序&#xff0c;vue3可以兼容Vue2的写法&#xff0c;很流畅完全没问题 写了一个vue3组件 <template><div></div> </template><script lang"ts"> import {onMounted} from vue export default{data(){return {}},beforeCr…

解决SpringAMQP工作队列模型程序报错:WARN 48068:Failed to declare queue: simple.queue

这里写目录标题 1.运行环境2.报错信息3.解决方案4.查看解决之后的效果 1.运行环境 使用docker运行了RabbitMQ的服务器&#xff1a; 在idea中导入springAMQP的jar包&#xff0c;分别编写了子模块生产者publisher&#xff0c;消费者consumer&#xff1a; 1.在publisher中运行测试…

【机器学习的主要任务和应用领域】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱 简述概要 了解机器学习的主要任务和应用领域 知识图谱 机器学习的主要任务可以分为监督学习、无监督学习和半监督学习。 监督学习&#xff1a;这是机器学习中最为常见的一类任务&#xff0c;基于已知类…

[TCP] TCP/IP 基础知识词典(3)

我想统计一下&#xff0c;TCP/IP 尤其是TCP协议&#xff0c;能搜到的常见的问题&#xff0c;整理起来&#xff0c;关键词添加在目录中&#xff0c;便于以后查阅。 目前预计整理共3篇&#xff1a; [TCP] TCP/IP 基础知识问答 &#xff1a;基础知识 [TCP] TCP/IP 基础知识问答&…

R语言数据分析(五)

R语言数据分析&#xff08;五&#xff09; 文章目录 R语言数据分析&#xff08;五&#xff09;前言一、什么是整洁的数据二、延长数据2.1 列名中的数据值2.2 pivot_longer()的处理原理2.3 列名中包含许多变量的情况2.4 列名同时包含数据和变量 三、扩宽数据3.1 pivot_wider的处…

JavaSec 之 SQL 注入简单了解

文章目录 JDBC 注入语句拼接(Statement)修复方案 语句拼接(PrepareStatement)修复方案 预编译 JdbcTemplate修复方案 MyBatisLike 注入Order By 注入In 注入 寒假学了一个月 pwn&#xff0c;真心感觉这玩意太底层学的我生理不适应了&#xff0c;接下来学一段时间 java 安全缓一…

力扣226 翻转二叉树 Java版本

文章目录 题目描述解题思路代码 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root…

[云原生] 二进制k8s集群(下)部署高可用master节点

在上一篇文章中&#xff0c;就已经完成了二进制k8s集群部署的搭建&#xff0c;但是单机master并不适用于企业的实际运用&#xff08;因为单机master中&#xff0c;仅仅只有一台master作为节点服务器的调度指挥&#xff0c;一旦宕机。就意味着整个集群的瘫痪&#xff0c;所以成熟…

代理技术引领出海征程

在数字娱乐的繁荣时代&#xff0c;游戏开发者和发行商们意识到&#xff0c;要在全球市场立足&#xff0c;必须迈向国际化的出海之路。然而&#xff0c;这一旅程面临着跨越网络壁垒、适应多元文化和提升全球连接性的巨大挑战。本文将深入探讨代理技术在游戏行业出海过程中的创新…

这才开工没几天收到Offer了,简历改的好,找工作没烦恼。

喜报喜报 这才开工没几天&#xff0c;就收到了喜报&#xff01; 就像上面截图中所说的一样&#xff1a;简历改了真的有用。 我也和大家分享一下优化简历的技巧&#xff0c;希望对大家有帮助&#xff0c;把握住金三银四的机会&#xff0c;都能顺利上岸&#xff0c;升职加薪&am…

Leetcode日记 2583. 二叉树中的第 K 大层和

Leetcode日记 2583. 二叉树中的第 K 大层和 题目&#xff1a;解题思路&#xff1a;代码实现制作不易&#xff0c;感谢三连&#xff0c;谢谢啦 题目&#xff1a; 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和…

Vue2 基础面试题

v-show 和 v-if 区别 v-show 通过 CSS display 控制显示和隐藏v-if 通过判断组件真实渲染和销毁&#xff0c;而不是显示和隐藏频繁切换显示状态用 v-show&#xff0c;否则用 v-if v-if 当 v-if 与 v-for 一起使用时&#xff0c;v-for 具有比 v-if 更高的优先级&#xff0c;意…

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。&#xff08;可以注意到&#xff1a;D0CF11E0非常类似DOCFILE&#xff09; 使用john的office2john.py 提取hash …

【操作系统】处理机调度算法

实验3 处理机管理 一、实验目的 在多道程序或多任务系统中&#xff0c;系统中同时处于就绪态的进程有若干个&#xff0c;即能运行的进程数远远大于处理机个数。为了使系统中的各个进程能有条不紊的运行&#xff0c;必须按照某种调度策略&#xff0c;选择一个进程占用处理机。…

使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能

需求场景 获取网站点击的下载pdf&#xff0c;并把pdf重命名再上传到COS云上面 技术使用 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服务期用egg搭的 文件服务使用COS腾讯云 核心思路 获取浏览器下载事件&#xff0c;并把文件保存到本地 const session awai…