3.15 京东(C++AK)
数组价值
明显只和最大最小值有关,依次删除尝试获取答案。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
vector<int>a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a.begin(),a.end());
int ans=min(a[a.size()-2]-a[0],a[a.size()-1]-a[1]);
cout<<ans<<endl;
}
}
小兴的涂色面积
简单模拟即可
#include<bits/stdc++.h>
using namespace std;
const double pi=3.1415926;
int main(){
double r;
int n;
cin>>r>>n;
double ans=0;
for(int i=0;i<n;i++){
if(i%2){
ans-=r*r*pi*3/4;
}else{
ans+=r*r*pi*3/4;
}
r/=2;
}
printf("%.6f\n",ans);
return 0;
}
快递
堆优化Dijkstra,只是起点变多,稍微修改即可。
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n,m,k,q;
cin>>n>>m>>k>>q;
vector<pair<int,int>>a[n+100];
vector<int>dp(n+1,LLONG_MAX);
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>p;
for(int i=0;i<k;i++){
int t;
cin>>t;
p.push({0,t});
dp[t]=0;
}
for(int i=0;i<m;i++){
int x,y,c;
cin>>x>>y>>c;
a[x].push_back({y,c});
a[y].push_back({x,c});
}
vector<int>b(q);
for(int i=0;i<q;i++)
cin>>b[i];
while(!p.empty()){
pair<int,int> t=p.top();
p.pop();
if(t.first>dp[t.second])
continue;
dp[t.second]=t.first;
for(int i=0;i<a[t.second].size();i++){
int x=t.second,y=a[t.second][i].first,c=a[t.second][i].second;
if(t.first+c<dp[y]){
dp[y]=t.first+c;
p.push({t.first+c,y});
}
}
}
for(auto t:b){
cout<<dp[t]<<endl;
}
return 0;
}
凡岛公司福利 297人发布