AtCoder Beginner Contest 246 A~E 题解

A Four Points

题意

给你矩形的三个顶点,输出剩下那个

思路

把横坐标和纵坐标分开,必会存在两个相同的数,横纵坐标就是剩下那个不同的数

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef long long ll;
int X[10],Y[10];
int main(){for(int i = 0;i<3;i++){cin>>X[i]>>Y[i];}int x,y;if(X[0]==X[1]) x = X[2];else if(X[0]==X[2])x = X[1];else x = X[0];if(Y[0]==Y[1]) y = Y[2];else if(Y[0]==Y[2])y = Y[1];else y = Y[0];cout<<x<<" "<<y<<endl;return 0;
}

B - Get Closer

题意

给你一个方向向量(x,y),问你沿着这个方向移动1个单位,横纵坐标变化多少

思路

利用勾股定理求出斜边d,答案就是 x/d y/d

AC 代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef long long ll;
int main(){double  x,y;cin>>x>>y;double d = sqrt(x*x+y*y);printf("%.6lf %6lf",x/d,y/d);return 0;
}

C - Coupon

有N个商品,K张优惠卷,每张优惠卷X元,一张优惠卷只能用一次,一个商品可以用无限多张,直至价格变成0元,问花费最少的钱能买下N个商品

思路

用优先队列先尽量完整地使用优惠卷(即1张优惠值为X元),如果优惠后商品价值仍为正数,重新进入队列,如果优先队列的最大价值小于X元,再一张张使用优惠卷,变成0元,途中若优惠卷为0或者队列为空就退出
最后实际花费的钱就是剩下优先队列所有物品的价值和

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef long long ll;
int A[N];
int main(){priority_queue<int> q;ll n,k,x;cin>>n>>k>>x;for(int i = 0;i<n;i++){cin>>A[i];q.push(A[i]);}ll use = 0;while(!q.empty()&&k>0){ll prime = q.top();q.pop();ll t = min(prime/x,k);if(t==0&&k>0) t = 1;prime -= t*x;k -= t;if(prime>0) q.push(prime); } while(!q.empty()){ll prime = q.top();q.pop();use += prime;}cout<<use<<endl;return 0;
}

D - 2-variable Function

给出N(N<1e18),查找最小的X满足1. 比N大 2 . 存在非负数(a,b) 令

思路

显然,a,b都是小于1e6 的,那么我们枚举一个a,然后二分找b,使等式略大于N即可

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 2e6+7;
typedef long long unsigned ll;
int main(){ll ans = 1e19,n;cin>>n;for(ll i = 0;i<=N;i++){ll l = 0, r = N;while(r>l){ll m = (l+r)/2;if(i*i*i+i*i*m+i*m*m+m*m*m>=n) r = m;else l = m+1;}ans = min(ans,i*i*i+i*i*l+i*l*l+l*l*l);}cout<<ans<<endl;return 0;
}

E - Bishop 2

题意

跟走迷宫类似,从A点走到B点,某些点不能走,可以斜着走无限远,直到超出边界或者遇到障碍物,只算1步,问最少多少步从A 到B

思路

BFS 走迷宫,但是要注意的是在走四个方向的时候要沿着这个方向一直延展,如果说遇到边界或者遇到障碍物或者这个点已经走过了就退出延展。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
typedef long long ll;
int dir[4][2] = {1,1,-1,-1,1,-1,-1,1};
int G[2000][2000];
int ans[2000][2000];
int vis[2000][2000];
int n,bx,by,ex,ey;
struct node {int x,y;
};
int bfs(){queue <node> q;q.push({bx,by});ans[bx][by] = 0;while(!q.empty()){int x = q.front().x;int y = q.front().y;q.pop();if(x==ex&&y==ey){return ans[x][y];}for(int i = 0;i<4;i++){for(int k = 1;;k++){int nx = x+k*dir[i][0];int ny = y+k*dir[i][1];if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&G[nx][ny]!=1&&ans[nx][ny]>=ans[x][y]+1){//关键在这里ans[nx][ny] = ans[x][y]+1;q.push({nx,ny}); }else break;} }}return -1;
}
int main(){cin>>n>>bx>>by>>ex>>ey;for(int i = 1;i <=n ;i++){for(int j = 1;j<=n;j++){char ch;cin>>ch;ans[i][j] = 0x3f3f3f3f;if(ch=='.') G[i][j] = 0;else G[i][j] = 1;}}cout<<bfs()<<'\n'; return 0;}

AtCoder Beginner Contest 246 A~E 题解 Bishop 2相关推荐

  1. AtCoder Beginner Contest 246 E - Bishop 2 「01bfs」

    E - Bishop 2 题目描述: 给你一个n * n的矩阵,起点和终点确定,你只能沿对角线走,走的距离可以任意,但是从(x1, y1)走到(x2, y2)的过程中不能存在障碍物,且坐标必须合法,问 ...

  2. AtCoder Beginner Contest 252 A~G 题解

    前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...

  3. AtCoder Beginner Contest 196 A~E题解

    ABC196 A~E [A - Difference Max](https://atcoder.jp/contests/abc196/tasks/abc196_a) 题目大意 输入格式 输出格式 样例 ...

  4. AtCoder Beginner Contest 177 A~D 题解

    ABC177 A~D [A - Don't be late](https://atcoder.jp/contests/abc177/tasks/abc177_a) 题目大意 输入格式 输出格式 样例 ...

  5. AtCoder Beginner Contest 168 C~D题解

    ABC168 C&D [C - : (Colon)](https://atcoder.jp/contests/abc168/tasks/abc168_c) 题目大意 输入格式 输出格式 样例 ...

  6. AtCoder Beginner Contest 242 C~E 题解

    ABC242 C~E [C - 1111gal password](https://atcoder.jp/contests/abc242/tasks/abc242_c) 题目大意 输入格式 输出格式 ...

  7. AtCoder Beginner Contest 250 C~E 题解

    ABC250 C~E [C - Adjacent Swaps](https://atcoder.jp/contests/abc250/tasks/abc250_c) 题目大意 输入格式 输出格式 样例 ...

  8. AtCoder Beginner Contest 192 A~D题解

    ABC192 A~D [A - Star](https://atcoder.jp/contests/abc192/tasks/abc192_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

  9. AtCoder Beginner Contest 254 A~E 题解

    ABC254 A~E [A - Last Two Digits](https://atcoder.jp/contests/abc254/tasks/abc254_a) 题目大意 输入格式 输出格式 样 ...

最新文章

  1. Xen的network-bridge模式
  2. 17个改变世界的数学公式,马斯克点赞
  3. [转]linux(centos)搭建SVN服务器
  4. FLV封装格式的分析
  5. mysql 账户管理_Mysql账户管理原理与实现方法详解
  6. python 格式化输出%和format
  7. mysql授权dml_Mysql DML DCL DDL
  8. docker学习3-镜像的基本使用
  9. Libevent源码解析
  10. 怎样才能称得上一个好运维
  11. line-height学习与总结
  12. Sublime Text快捷键
  13. android手机录屏多少fps,如何在Andr如何在Android上以90fps或120fps的屏幕录制
  14. [乐意黎原创]PHP 老司机指南
  15. Spring boot启动报错ERROR 5208 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter
  16. 计算机语言中daly什么意思,Daly.
  17. Python 机器学习 唐宇迪泰坦尼克号【最新代码】
  18. C++ cctype头文件里的:isalpha、islower、isupper、isalnum、isblank、isspace函数
  19. 学习Linux有哪些工作方向?
  20. 2019最新《Python从入门到精通之30天快速学Python教程 》

热门文章

  1. 学习小记-----行列式矩阵树定理Kirchhoff's theorem
  2. 第三次(一):对比《阴阳师》《小冰冰传奇》两款游戏
  3. web报表中电子印章/水印的轻松实现
  4. 疯子网页采集器教程之图片本地化教程
  5. JSP群众信访管理系统java毕业设计
  6. 使用 jsPDF- Autotable 将 HTML 表格导出为 PDF
  7. http之 半包 粘包
  8. 同ip网站查询,同服务器网站查询,利用bing查询同一服务器IP下的所有网站 -
  9. Echarts Y轴单位自动转换
  10. 计算机教师招聘板书设计,教师招聘或资格证面试试讲—试讲提分技巧之板书设计...