Codeforces 916 div3 A-F

A

题意分析:

看思考每个题的时间是否大于等于解决该题需要的时间,如果是,则能解决该题,否则不能,直接枚举计数即可

C++代码:

#include<iostream>
using namespace std;
int main(){int t,n;cin>>t;while(t--){cin>>n;string s;cin>>s;int cnt[26]={0};for(int i=0;i<s.size();i++){cnt[s[i]-'A']++;//思考A题的时间加一}int res=0;for(int i=0;i<26;i++){if(cnt[i]>=i+1)res++;//思考时间大于等于需要的时间}cout<<res<<endl;}return 0;
}

B

题意分析:

一开始先让数组按照n~1的顺序排列,然后将前k+1个数从小到大排序即可

C++代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int N=55;
int a[N];
bool cmp(int a,int b){return a>b;
}
int main(){int t;cin>>t;while(t--){int n,k;cin>>n>>k;for(int i=1,j=n;i<=n;i++,j--)a[i]=j;//先将所有数倒序sort(a+1,a+k+2);//把前k+1排成正序,就有了k次兴奋次数啦for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<endl;}return 0;
}

C

题意分析:

 要求完成不超过k个任务可获得的最大的经验值

由于b数组中的元素都大于1,所以我们一定会取到k个任务

假设i表示我们完成的任务截止到第i个,即i后面的任务都没做

此时可获得的最大经验值为a[1]+a[2]+...+a[i]+(k-i)*(b[1~i]中的最大值)

所以要先预处理a的前缀和和b的前缀最大值

然后我们只需枚举每个任务作为分界点即可

C++代码:

#include<iostream>
using namespace std;
const int N=200010;
int a[N],b[N],maxx[N];
int n,k;
void solve(){cin>>n>>k;for(int i=1;i<=n;i++)maxx[i]=0;for(int i=1;i<=n;i++)cin>>a[i],a[i]+=a[i-1];//a变成其前缀和//maxx[i]含义:b[1~i]中最大的一个数for(int i=1;i<=n;i++)cin>>b[i],maxx[i]=max(maxx[i-1],b[i]);int ans=0;//从前往后枚举解决的问题截止到第几个for(int i=1;i<=min(n,k);i++){int sum=a[i]+(k-i)*maxx[i];//一共解决到第i个,剩下的k-i个直接用b[1~i]中最大的一个ans=max(ans,sum);//更新ans}cout<<ans<<endl;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}

题意分析:

先找出每种活动人数最多的三天,即找出每一行中最大的三个数

显然,最优解一定是从这些数中每一行取一个,前提是这三个数不能在同一列,所以在存储最大的三个数时还要存一下坐标

C++代码:

#include<iostream>
#include<cstring>
#define x first
#define y second
using namespace std;
const int N=100010;
typedef pair<int,int> PII;
int a[4][N];
int g[4][4];//存储每一行中最大的三个数
PII s[4][4];//存储每一行中最大的三个数的坐标
int n;
void solve(){cin>>n;memset(g,0,sizeof g);for(int i=1;i<=3;i++){int &d1=g[i][1],&d2=g[i][2],&d3=g[i][3];//存储每一行的最大值、次大值、第三大值 PII &s1=s[i][1],&s2=s[i][2],&s3=s[i][3];//三个数的坐标for(int j=1;j<=n;j++){cin>>a[i][j];if(a[i][j]>=d1){d3=d2,d2=d1,d1=a[i][j];s3=s2,s2=s1,s1={i,j};}else if(a[i][j]>=d2){d3=d2,d2=a[i][j];s3=s2,s2={i,j};}else if(a[i][j]>d3){d3=a[i][j];s3={i,j};}}}//每一行的最大的三个及其下标已经找出来了int ans=0;for(int i=1;i<=3;i++)//第一行 for(int j=1;j<=3;j++)//第二行 for(int k=1;k<=3;k++){//第三行 PII s1=s[1][i],s2=s[2][j],s3=s[3][k];if(s1.y!=s2.y&&s1.y!=s3.y&&s2.y!=s3.y)//它们不在同一列 ans=max(ans,g[1][i]+g[2][j]+g[3][k]); }cout<<ans<<endl;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}

E1 和 E2

题意分析:

如果一共有n种颜色,则操作n次一定会结束游戏,因为每次操作必定会有至少一方该颜色的弹珠数变为0

Alice想赢(分数差值尽可能大)

Bob想赢(分数差值尽可能小)

对于颜色为i的弹珠

1、Alice进行操作,则对答案的贡献为a[i]-1

2、Bob进行操作,则对答案的贡献为-(b[i]-1)

二者的差值为(a[i]-1)+(b[i]-1)

所以:

Alice选i,答案差值增加了a[i]-1+b[i]-1

Bob选i,答案差值减少了a[i]-1+b[i]-1

所以每次不管谁操作时,挑a[i]-1+b[i]-1的最大值即可

C++代码:

#include<iostream>
#include<queue>
using namespace std;
typedef pair<int,int> PII;
typedef long long LL;
const int N=200010;
int a[N],b[N];
int n;
void solve(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];priority_queue<PII> q;//大根堆for(int i=1;i<=n;i++)q.push({(a[i]-1)+(b[i]-1),i});LL ans=0;for(int i=1;i<=n;i++){PII t=q.top();q.pop();int id=t.second;if(i&1)ans+=a[id]-1;//Alice操作,答案加上a[id]-1else ans-=b[id]-1;//Bob操作,答案加上b[id]-1}cout<<ans<<endl;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}

题意分析:

对于某一棵子树,只要两个点不在一根链上,就可以组队

假设当前子树的根节点为u

maxn记录最大子树中的节点数量

sum记录所有子树的节点数量和

match记录最大子树中的最大匹配数(两人一匹配)

有两种情况:

1、maxn-match*2<=sum-maxn,则最大匹配数为sum/2

2、maxn-match*2>sum-maxn,则最大匹配数为match+sum-maxn

所以直接dfs搜以每个节点为根的子树的情况即可

C++代码:

#include<iostream>
#include<vector>
using namespace std;
typedef long long LL;
const int N=200010;
int h[N],e[N],ne[N],idx;
int size1[N],dp[N];//子树大小,最大子树能组成的队伍数
int n;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u){size1[u]=1;//以u为根的子树中的节点数一开始只有自己dp[u]=0;//最开始能配对的数量为0int maxn=0,match=0,sum=0,cnt=0;//sum表示所有子树节点之和,maxn表示最大子树中节点数量,match表示最大子树中已经匹配的队伍数//cnt用于记录节点u有几个子节点 for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];cnt++;dfs(j);//这里不用判断j是否被搜过是因为这是一个有向图无环树,所以不可能往回搜size1[u]+=size1[j];dp[u]=max(dp[u],dp[j]);if(maxn<size1[j]){maxn=size1[j];match=dp[j];}sum+=size1[j];}if(cnt==1)return;//只有一棵子树if(sum-maxn>=maxn-match*2)dp[u]=sum/2;else dp[u]=sum-maxn+match;
}
void solve(){cin>>n;for(int i=1;i<=n;i++)h[i]=-1;//初始化h数组idx=0;for(int i=2;i<=n;i++){int x;cin>>x;add(x,i);}dfs(1);cout<<dp[1]<<endl;
}
int main(){int T;cin>>T;while(T--){solve();}return 0;
}

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

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

相关文章

history,hash缓存那些事

vue-router 中的 createWebHistory&#xff0c;createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象&#xff0c;主要功能是前进后退和在不刷新页面的情况下&#xff0c;修改地址栏里的URL地址。histor…

TCP/IP八连问

目录 1. 基础概念2. 网络层&#xff08;IP协议&#xff09;3. 传输层&#xff08;TCP和UDP&#xff09;4. 应用层5. 网络安全6. 网络故障诊断7. 高级主题8. 问题解决能力 1. 基础概念 问题: 请解释TCP/IP协议是什么&#xff1f; 答案: TCP/IP协议是互联网通信的基础协议&#x…

“微软蓝屏”事件:网络安全问题的深刻暴露

“微软蓝屏”事件&#xff1a;网络安全问题的深刻暴露 前言 在2024年7月19日&#xff0c;全球范围内发生了一起由微软视窗&#xff08;Windows&#xff09;操作系统引发的蓝屏死机&#xff08;Blue Screen of Death, BSOD&#xff09;事件。此次事件不仅影响了数百万台Window…

《系统架构设计师教程(第2版)》第12章-信息系统架构设计理论与实践-04-信息系统架构设计方法-信息化总体架构方法

文章目录 1. 信息化概述1.1 信息化1.2 国家信息化1.3 信息化的内涵1.4 品牌信息化建设1.5 信息化特征1.5.1 易用性1.5.2 健壮性1.5.3 平台化、灵活性、拓展性1.5.4 安全性1.5.5 门户化、整合性1.5.6 移动性 2. 信息化工程建设方法2.1 信息化架构模式2.1.1 数据导向架构2.1.2 流…

Pandas包与Numpy包区别

文章目录 一、设计目的与核心功能二、数据结构三、性能与灵活性四、应用场景 Pandas包与Numpy包在数据处理和分析方面各有特点和优势&#xff0c;它们之间的主要区别可以归纳如下&#xff1a; 一、设计目的与核心功能 Numpy&#xff1a; 设计目的&#xff1a;Numpy是Python的一…

Policy-GNN

Policy-GNN代码解析 一、dqn_agent_pytorch.py二、train_citeseer.py三、train_cora.py四、gcn.py 一、dqn_agent_pytorch.py 这个文件实现了一个基于深度Q学习的智能体DQNAgent。代码使用PyTorch来定义和训练深度神经网络&#xff0c;估计状态-动作值。 主要组成部分包括&am…

TQSDRPI开发板教程:实现PL端的UDP回环与GPSDO

本教程将完成一个全面的UDP运行流程与GPSDO测试&#xff0c;从下载项目的源代码开始&#xff0c;通过编译过程&#xff0c;最终将项目部署到目标板卡上运行演示。此外&#xff0c;我们还介绍如何修改板卡的IP地址&#xff0c;以便更好地适应您的网络环境或项目需求。 首先从Gi…

Unity UGUI 之 ScrollBar与ScrollView

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.什么是ScrollBar 滚动块&#xff1a;Unity - Manual: Scrollbar 2.重要参数 该笔记来源…

java用freemarker导出word

freemarker导出word 第一步、将word转换为xml格式第二步、将转换后的xml文件修改后缀为ftl后复制到项目 resources 目录下&#xff08;可以自己新建一个文件夹放在文件夹中&#xff09;第三步、格式化xml代码&#xff08;如果问价太大可能会无法格式化&#xff09;这时候需要在…

微软CrowdStrike驱动蓝屏以及内核签名

原因 当Windows操作系统遇到严重错误导致系统崩溃时&#xff0c;屏幕显示为蓝色&#xff0c;通常伴有错误代码和信息&#xff0c;这被称为“蓝屏死机”&#xff08;Blue Screen of Death&#xff0c;简称BSOD&#xff09; https://www.thepaper.cn/newsDetail_forward_281262…

Unity中UI系统3——UGUI

概述 基础知识 UGUI基础 六大基础组件 Canvas——渲染模式控制组件 Canvas Scaler —— 分辨率自适应组件 CanvasScaler——恒定像素模式 CanvasScaler——缩放模式 可以适当的自己去了解对数 CanvasScaler——恒定物理模式 CanvasScaler —— 3D模式 Graphic Raycaster——射线…

RabbitMQ的学习和模拟实现|muduo库的介绍和使用

muduo库 项目仓库&#xff1a;https://github.com/ffengc/HareMQ muduo库 muduo库是什么快速上手搭建服务端快速上手搭建客户端上面搭建的服务端-客户端通信还有什么问题?muduo库中的protobuf基于muduo库中的protobuf协议实现一个服务器 muduo库是什么 Muduo由陈硕大佬开…

人工智能与机器学习原理精解【3】

文章目录 泰勒级数逼近基础一阶导数和二阶导数的几何意义一阶导数的几何意义二阶导数的几何意义应用示例 导数与微分的区别1. 定义与本质2. 几何意义3. 表达式与关系4. 应用场景 可微函数定义几何意义性质例子 导数导数的定义导数的计算导数的几何意义导数函数的图像一、常见导…

在Ubuntu上部署Zerotier IPV6网络

今天我们将在阿贝云提供的免费服务器上,部署并优化一个Zerotier网络,支持IPV6。阿贝云确实提供了不错的免费云服务器,1核CPU、1G内存、10G硬盘、5M带宽,完全可以满足我们的部署需求。接下来让我们一起看看如何在Ubuntu上安装和配置Zerotier吧。 Zerotier是一个非常出色的虚拟网…

数据编织 VS 数据仓库 VS 数据湖

目录 1. 什么是数据编织?2. 数据编织的工作原理3. 代码示例4. 数据编织的优势5. 应用场景6. 数据编织 vs 数据仓库6.1 数据存储方式6.2 数据更新和实时性6.3 灵活性和可扩展性6.4 查询性能6.5 数据治理和一致性6.6 适用场景6.7 代码示例比较 7. 数据编织 vs 数据湖7.1 数据存储…

前端性能优化面试题汇总

面试题 1. 简述如何对网站的文件和资源进行优化? 参考回答&#xff1a; 举列&#xff1a; 1.文件合并&#xff08;目的是减少http请求&#xff09;&#xff1a;使用css sprites合并图片&#xff0c;一个网站经常使用小图标和小图片进行美化&#xff0c;但是很遗憾这些小图片…

文献检索。

* 号代表通配符。 参考视频&#xff1a; 武汉科技大学图书馆信息素养微课程--EI数据库的检索与利用_哔哩哔哩_bilibili &#xff08;讲了爱斯维尔的检索方法&#xff0c;以及期刊选刊查找&#xff09; 【图情专场】文献检索课中的Web of Science_在线大讲堂_哔哩哔哩_bilib…

证书上的服务器名错误解决方法

方法 win r &#xff0c;输入mmc 点击文件——>添加/删除管理单元 找到证书——> 添加 根据自己的存放选择存放位置 点击控制台根节点——> 受信任的根证书颁发机构——>导入 若还出现问题&#xff0c;则参考https://blog.csdn.net/mm120138687/article/details/…

环境收集 开始阶段

预攻击阶段 渗透测试信息搜集总结 > 确定要攻击的网站后&#xff0c;用whois工具查询网站信息注册时间&#xff0e;管理员联系方式&#xff08;电话、邮箱.&#xff09; 2&#xff1a;使用nslookup、dig工具进行域名解析已得到IP地址。 &#xff1e;3&#xff1a;查询得…

go-kratos 学习笔记(2) 创建api

proto 声明SayHi 先删除go.mod 从新初始化一下 go mod init xgs_kratosgo mod tidy 编辑 api/helloword/v1/greeter.proto 新声明一个方法 rpc SayHi (HelloHiRequest) returns (HelloHiReply) {option (google.api.http) {post: "/hi"body: "*"};} …