A

link



判断即可。。。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

int r,g,b;
string c; signed main(){ cin >> r >> g >> b >> c;
if(c == "Red") cout << min(g,b);
else if(c == "Blue") cout << min(r,g);
else cout << min(r,b); return 0; }

B

link



根据距离公式算三边距离,再根据勾股定理计算是否为\(RT△\)

注意\(double\)型不能直接判断相等,要判断差的绝对值小于某一个很小的数。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

int xa,ya,xb,yb,xc,yc;

double dis(int x,int y,int l,int r){
return sqrt(1.0*(x-l)*(x-l)+1.0*(y-r)*(y-r));
} signed main(){ cin >> xa >> ya >> xb >> yb >> xc >> yc;
double a[3] = {dis(xa,ya,xb,yb),
dis(xa,ya,xc,yc),dis(xb,yb,xc,yc)}; sort(a,a+3);
double t = a[0]*a[0]+a[1]*a[1];
double tt = a[2]*a[2];
if(abs(t-tt) < 1e-6) cout << "Yes";
else cout << "No"; return 0; }

C

link



首先,判断一下是否可能:把所有的\(l_i\)和\(r_i\)分别相加,得到两个数\(R\)和\(L\)。

如果\(L\)到\(R\)包括\(0\)即有解。因为所有数之和最小为\(L\),最大为\(R\),所以\(L\)到\(R\)包括\(0\)即有解。

那么怎么求解呢?

我们先让所有的\(a_i\)等于\(l_i\),这时所有数的和小于\(0\)。接下来,我们从\(1\)开始遍历,如果当前所有数的和仍不是\(0\)(小于\(0\)),则让\(a_i\)变大,如果可以变到\(r_i\)则变到\(r_i\),否则变大当前所有数的和与\(0\)的差。

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int n,suml,sumr;
int l[200005],r[200005];
int a[200005]; signed main(){ cin >> n; for(int i = 1;i <= n;++ i){
cin >> l[i] >> r[i];
suml += l[i];
sumr += r[i];
a[i] = l[i];
} if(suml <= 0&&sumr >= 0) cout << "Yes\n";
else{
cout << "No";
return 0;
} int tmp = -1*suml; for(int i = 1;i <= n;++ i){
if(tmp > r[i]-l[i]){
a[i] = r[i];
tmp -= r[i]-l[i];
}
else{
a[i] += tmp;
break;
}
} for(int i = 1;i <= n;++ i)
cout << a[i] << " "; return 0; }

D

link



这个题就是最短路。

对于一条边,将终点的点权加到边权里去,跑最短路即可,最后把起点的点权加上。

点击查看代码
#include<bits/stdc++.h>

#define pii pair<int,int>
#define int long long using namespace std; int n,m;
int a[200005];
vector<pair<int,int> > ed[200005];
int ds[200005];
const int inf = 1e18;
bool vs[200005]; void dijkstra(int s){
for(int i = 1;i <= n;++ i)
ds[i] = inf;
ds[s] = a[s];
priority_queue<pii,vector<pii>,greater<pii> >q;
q.push({ds[s],s});
while(!q.empty()){
int t = q.top().second;q.pop();
if(vs[t]) continue;
vs[t] = 1;
for(int i = 0;i < ed[t].size();++ i){
int j = ed[t][i].first,
w = ed[t][i].second;
if(ds[j] > ds[t]+w){
ds[j] = ds[t]+w;
q.push({ds[j],j});
}
}
}
} signed main(){ cin >> n >> m;
for(int i = 1;i <= n;++ i)
cin >> a[i];
for(int i = 1;i <= m;++ i){
int u,v,w;
cin >> u >> v >> w;
ed[u].push_back({v,w+a[v]});
ed[v].push_back({u,w+a[u]});
} dijkstra(1); for(int i = 2;i <= n;++ i)
cout << ds[i] << " "; return 0; }

随机推荐

  1. jQuery——动画加载页面

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script&g ...

  2. 关于Embedded Resource的理解

    Embedded Resource .NET中使用外部资源时常用的方式都是使用资源文件,作为程序集的一部分发布.资源文件的读取也比较方便,字符串.图片和任何二进制数据,包括任何类型的文件都可以作为资源 ...

  3. exe应用程序安装为windows服务

    1.使用instsrv.exe和srvany.exe 当你获取到srvany后并决定将某程序作为服务启动后,请先将srvany安装为系统服务,具体的安装方法有很多,这里使用instsrv,语法如下:安 ...

  4. 莫烦tensorflow学习记录 (5)什么是过拟合 (Overfitting)

    什么是过拟合 (Overfitting) 莫烦讲的非常通俗易懂可以看看https://mofanpy.com/tutorials/machine-learning/tensorflow/intro-o ...

  5. Opencv笔记(12)傅里叶变换

    在之前了解的OpenCV为我们实现的图像变换,这些本质上是从图像到输出图像的映射,即输入仍是一幅图像.本章的傅里叶变换,输出数组的值在含义上和原图像的强度值大不相同,是输入图像的频域表示. cv::d ...

  6. 使用nvm安装以及管理多版本node教程

    安装nvm.node.npm 下载nvm安装包,推荐使用1.1.7,我个人使用1.1.8会有中文乱码的报错 点击exe文件,注意修改nvm的安装根目录以及node的安装根目录,后者是以后管理多版本no ...

  7. CentOS 7 Graylog 安装和卸载

    CentOS 7 安装 Graylog #主体思路1.安装JDK8.2.安装mongodb.3.安装Elasticsearch,并修改elasticsearch.yml 文件 .4.安装Graylog ...

  8. 关于 ulimit 的两个天坑

    稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...

  9. redis数据持久化篇

    为什么需要持久化 Redis是个基于内存的数据库. 那服务一旦宕机,内存中的数据将全部丢失. 通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈 如果是大数据量的恢复,1.会对数据库带来 ...

  10. java线程的park unpark方法

    标签(空格分隔): 多线程 park 和 unpark的使用 park和unpark并不是线程的方法,而是LockSupport的静态方法 暂停当前线程 LockSupport.park();//所在 ...