比赛链接

总体总结

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

\[j-i = A_i+A_j $$$$ j-A_j = i+A_i
\]
#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题解)的更多相关文章

  1. AtCoder Beginner Contest 238 A - F 题解

    AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...

  2. AtCoder Beginner Contest 221 A~E题解

    目录 A - Seismic magnitude scales B - typo C - Select Mul D - Online games E - LEQ 发挥比较好的一场,就来搓篇题解. F ...

  3. AtCoder Beginner Contest 215 F题题解

    F - Dist Max 2 什么时候我才能突破\(F\)题的大关... 算了,不说了,看题. 简化题意:给定\(n\)个点的坐标,定义没两个点的距离为\(min(|x_i-x_j|,|y_i-y_j ...

  4. AtCoder Beginner Contest 213 F题 题解

    F - Common Prefixes 该题也是囤了好久的题目了,看题目公共前缀,再扫一眼题目,嗯求每个后缀与其他后缀的公共前缀的和,那不就是后缀数组吗?对于这类问题后缀数组可是相当在行的. 我们用后 ...

  5. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  6. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  7. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  8. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  9. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  10. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

随机推荐

  1. python中的stub文件(.pyi)的用途

    在阅读TVM源码时,发现了*.pyi文件,里面的函数没有具体的实现,都诸如如下的形式,感到很疑惑. @overload def getattr(__o: object, __name: str, __ ...

  2. 在MySQL数据库中保存布尔型数据

       在存储数据时,经常会用到"是"."否"或者"有"."无"这种数据,这种时候就要应用布尔型这种数据类型了.那如何在M ...

  3. 使用 Leangoo 看板工具高效管理直播筹备活动

    在组织一场成功的直播活动中,筹备工作通常涉及多个环节,包括选题策划.嘉宾邀请.物料准备.技术支持等.为了更高效地管理这些活动,我们选择使用 Leangoo 看板工具 来规划和跟踪直播的各项筹备任务.以 ...

  4. 2021NOI 省选训练赛day1T1 A. light

    2021NOI 省选训练赛day1T1 A. light Problem 有一排\(n\)个灯,每个灯有一个颜色,用\(1\)到\(m\)表示.一开始所有灯都是关着的. 有\(q\)次操作,每次改变某 ...

  5. Django REST Framework框架介绍以及简单使用

    一. Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API ...

  6. linux系统qcow2镜像的制作

    一.简单说明 PS: 最近有客户需要在云平台上部署我们的产品,好久没有做过qcow2镜像了,这里还是把制作流程记录下来. QCOW2镜像格式是Qemu支持的磁盘镜像格式之一.它可以使用一个文件来表示一 ...

  7. 小孩子的好老师:ChatMoney全能知识库AI软件

    本文由 ChatMoney团队出品 因为工作需要,浅尝辄止般的用了一下ChatMoney全能知识库AI软件.一些长期积存的问题迎刃而解,但这只是一款企业级大模型功能的冰山一角.让自己尤为惊奇的是里面涵 ...

  8. Spring注解中@Resource和@Authwired的区别

    Spring注解中@Resource和@Authwired的区别 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 by ...

  9. 看PHP7底层源码与设计 读后感

    对PHP的理解 读完这本书以后,发现自己好像不会PHP,自己知识PHP代码的搬运工,对数组的实现,内存管理,生命周期,垃圾回收,面向对象,Zend虚拟机这些知识点,这些都不知道,现在也说不上来,具体的 ...

  10. UI上将BP附件放到BP结果中

    1,取附件内容放到新增的字段里 METHOD get_attachment. DATA: current TYPE REF TO if_bol_bo_property_access. DATA: dr ...