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 ...
随机推荐
- python中的stub文件(.pyi)的用途
在阅读TVM源码时,发现了*.pyi文件,里面的函数没有具体的实现,都诸如如下的形式,感到很疑惑. @overload def getattr(__o: object, __name: str, __ ...
- 在MySQL数据库中保存布尔型数据
在存储数据时,经常会用到"是"."否"或者"有"."无"这种数据,这种时候就要应用布尔型这种数据类型了.那如何在M ...
- 使用 Leangoo 看板工具高效管理直播筹备活动
在组织一场成功的直播活动中,筹备工作通常涉及多个环节,包括选题策划.嘉宾邀请.物料准备.技术支持等.为了更高效地管理这些活动,我们选择使用 Leangoo 看板工具 来规划和跟踪直播的各项筹备任务.以 ...
- 2021NOI 省选训练赛day1T1 A. light
2021NOI 省选训练赛day1T1 A. light Problem 有一排\(n\)个灯,每个灯有一个颜色,用\(1\)到\(m\)表示.一开始所有灯都是关着的. 有\(q\)次操作,每次改变某 ...
- Django REST Framework框架介绍以及简单使用
一. Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API ...
- linux系统qcow2镜像的制作
一.简单说明 PS: 最近有客户需要在云平台上部署我们的产品,好久没有做过qcow2镜像了,这里还是把制作流程记录下来. QCOW2镜像格式是Qemu支持的磁盘镜像格式之一.它可以使用一个文件来表示一 ...
- 小孩子的好老师:ChatMoney全能知识库AI软件
本文由 ChatMoney团队出品 因为工作需要,浅尝辄止般的用了一下ChatMoney全能知识库AI软件.一些长期积存的问题迎刃而解,但这只是一款企业级大模型功能的冰山一角.让自己尤为惊奇的是里面涵 ...
- Spring注解中@Resource和@Authwired的区别
Spring注解中@Resource和@Authwired的区别 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 by ...
- 看PHP7底层源码与设计 读后感
对PHP的理解 读完这本书以后,发现自己好像不会PHP,自己知识PHP代码的搬运工,对数组的实现,内存管理,生命周期,垃圾回收,面向对象,Zend虚拟机这些知识点,这些都不知道,现在也说不上来,具体的 ...
- UI上将BP附件放到BP结果中
1,取附件内容放到新增的字段里 METHOD get_attachment. DATA: current TYPE REF TO if_bol_bo_property_access. DATA: dr ...