AtCoder Beginner Contest 417 (A-E题解)
总体总结
A,B题纯模拟
C题 公式一步转换
D题 五题里面最难的,dp预处理+二分
E题 排序+BFS
题解
A题 A Substring
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int t,n;
int a,b;
string s;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>a>>b;
cin>>s;
for(int i=a;i<n-b;i++)
{
cout<<s[i];
}
cout<<endl;
return 0;
}
B题 Search and Delete
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
typedef long long ll;
int t,n,m;
int a[N];
int b[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<m;i++)cin>>b[i];
sort(b,b+m);
int cnt=0;
for(int i=0;i<n;i++)
{
if(a[i]==b[cnt])a[i]=0,cnt++;
else
{
while(cnt<m&&a[i]>b[cnt])cnt++;
if(cnt<m&&a[i]==b[cnt])a[i]=0,cnt++;
}
if(cnt==m)break;
}
for(int i=0;i<n;i++)
{
if(a[i]!=0)cout<<a[i]<<' ';
}
return 0;
}
C题 Distance Indicators
\]
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int t,n;
int a[N];
int cnt[2*N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
ll ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
int x = i - a[i];
if(x>=1&&cnt[x])ans+=cnt[x];
cnt[i+a[i]]++;
}
cout<<ans<<endl;
return 0;
}
D题 Takahashi's Expectation
首先dp预处理,dp[i][j]表示在第i个礼品时候的心情为j时,最后的心情是多少
然后用lower_bound(),求出什么时候mood小于前缀和presum,然后根据求出的位置,进行计算,如果求出,位置在结尾之后,说明一开始的心情过高,最后答案就是mood-presum[n]
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
typedef long long ll;
int t,n;
int p[N],a[N],b[N];
int presum[N];
int dp[N][1001];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>p[i]>>a[i]>>b[i];
presum[i]=presum[i-1]+b[i];
}
for(int i=0;i<=1000;i++)dp[n+1][i]=i;
for(int i=n;i>=1;i--)
{
for(int j=0;j<=1000;j++)
{
if(j>p[i])
{
dp[i][j]=dp[i+1][max(0,j-b[i])];
}
else
{
dp[i][j]=dp[i+1][j+a[i]];
}
}
}
int q;
cin>>q;
while(q--)
{
int x;
cin>>x;
int mid = lower_bound(presum+1,presum+n+1,x-500)-presum;
if(mid==n+1)
{
cout<<x-presum[n]<<endl;
}
else
{
cout<<dp[mid][x-presum[mid-1]]<<endl;
}
}
return 0;
}
E题 A Path in A Dictionary
每次先把所有节点的边进行从小到大排序,然后bfs遍历每一个点,时间复杂度为O(n),求出字典序最小的路径
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int t,n;
int m,x,y;
bool flag = false;
bool vis[1001];
vector<ll>res;
vector<ll>graph[1001];
void dfs(int cur)
{
if(flag)return;
if(cur==y)
{
for(int i=0;i<res.size();i++)cout<<res[i]<<' ';
cout<<endl;
flag = true;
return ;
}
for(auto it:graph[cur])
{
if(vis[it])continue;
res.push_back(it);
vis[it]=true;
dfs(it);
res.pop_back();
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--)
{
flag =false;
memset(vis,false,sizeof(vis));
cin>>n>>m>>x>>y;
for(int i=1;i<=1000;i++)graph[i].clear();
for(int i=1;i<=m;i++)
{
int f,t;
cin>>f>>t;
graph[f].push_back(t);
graph[t].push_back(f);
}
for(int i=1;i<=n;i++)sort(graph[i].begin(),graph[i].end());
vis[x]=true;
res.push_back(x);
dfs(x);
res.clear();
}
return 0;
}
AtCoder Beginner Contest 417 (A-E题解)的更多相关文章
- AtCoder Beginner Contest 238 A - F 题解
AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...
- AtCoder Beginner Contest 221 A~E题解
目录 A - Seismic magnitude scales B - typo C - Select Mul D - Online games E - LEQ 发挥比较好的一场,就来搓篇题解. F ...
- AtCoder Beginner Contest 215 F题题解
F - Dist Max 2 什么时候我才能突破\(F\)题的大关... 算了,不说了,看题. 简化题意:给定\(n\)个点的坐标,定义没两个点的距离为\(min(|x_i-x_j|,|y_i-y_j ...
- AtCoder Beginner Contest 213 F题 题解
F - Common Prefixes 该题也是囤了好久的题目了,看题目公共前缀,再扫一眼题目,嗯求每个后缀与其他后缀的公共前缀的和,那不就是后缀数组吗?对于这类问题后缀数组可是相当在行的. 我们用后 ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
随机推荐
- 鸿蒙仓颉开发语言实战教程:自定义tabbar
大家周末好呀,今天继续分享仓颉语言开发商城应用的实战教程,今天要做的是tabbar. 大家都知道ArkTs有Tabs和TabContent容器,能够实现上图的样式,满足基本的使用需求.而仓颉就不同了, ...
- Java 下载网络资源
从网络URL下载文件到指定目录,自适应文件类型,并且重命名下载后的文件名.这里使用XtremePapers如下URL的网络资源作为测试文件: https://papers.xtremepape.rs/ ...
- 如何实现本地大模型与MCP集成
1.概述 本文将围绕构建兼具本地运行大型语言模型(LLM)与MCP 集成能力的 AI 驱动工具展开,为读者提供从原理到实践的全流程指南.通过深度整合本地大模型的隐私性.可控性优势与 MCP 工具的自动 ...
- 「Note」树论方向
1. 重链剖分 1.1. 简介 重链剖分将树分割成若干链维护信息,将树的结构转换为线性结构,然后可用其他数据结构维护. 定义以下概念: 重子节点 轻子节点 重边 轻边 重链 某节点的子节点中子树大小最 ...
- CC爬虫攻击测试与防护
CC爬虫攻击测试与防护 本文章旨在对最基本的CC攻击进行测试与防护,本次测试的所有站点均为本人自建,没有也不会去攻击其他站点.希望各位读者能够遵循当地法律法规,不要做危害他人计算机的行为 测试流程 裸 ...
- C++程序员必会的12个大项目,学会这些项目,找工作还是问题吗?
项目0-项目准备 项目1-黑客攻击系统 项目2-人工智能之地形导航系统 项目3-人工智能之双色球预测系统 项目4-地震监测系统 项目5-智能婚恋交友系统 项目6-广州军区微波通信系统 项目7-模板库高 ...
- 构建基于Serverless架构的向量检索MCP Server
构建基于Serverless架构的向量检索MCP Server 随着LLM与Agent的快速发展,向量检索成为构建高效语义搜索和智能推荐系统的关键技术之一.OpenSearch Service 作为一 ...
- Java源码分析系列笔记-6.ReentrantLock
目录 1. 是什么 1.1. synchronized vs ReentranLock 2. 实现原理 2.1. uml图 3. 公平锁 3.1. 如何使用 3.2. 原理分析 3.2.1. 构造方法 ...
- 【闲话 No.4】 wqs 二分
你呀你呀 很好听的派蒙歌,6.1 要备战期末没法放歌所以在 5 月底放了每日一歌,希望可以让大家开心一些,也希望派蒙生日快乐! 你呀你呀 快给我休息一下 长了颗痘又 掉了好几根头发 怎么不说话 是不是 ...
- 一个工具管理你的所有 SDK 版本!
众所周知,我们在面对同一个 SDK 的不同版本时,需要使用到不同的工具来管理,例如: Java:JEnv NodeJs:nvm ... 它们的原理都是基于系统的软连接,让环境变量指向一个软连接来实现切 ...