Eilotik U535152 『LIO1-A』于困境中坚守希望
OwnderDuck · · 算法·理论
题目传送门
题目大意
输入
如果
否则输出
- 对于
100\% 的数据,1 \le k \le 10^9,1 \le n \le 10^6,1 \le a_i,b_i,c_i \le 10^9 思路
由题意得:
cin>>k>>n;//输入 k,n 。 while(n--){//接下来 n 行 cin>>a>>b>>c;//每行输入三个整数 a_i,b_i,c_i if(a+b+c!=k) cout<<-1<<endl;//如果 a_i+b_i+c_i !=k ,输出 -1 。 else printf("%.1f\n",a*1.0/k*100);//否则输出 a_i/k*100%。 }代码
#include <bits/stdc++.h> #define itn int using namespace std; int main(){ long long k,n; cin>>k>>n; while(n--){//接下来 n 行 long long a,b,c; cin>>a>>b>>c;//每行输入三个整数 a_i,b_i,c_i if(a+b+c!=k) cout<<-1<<endl;//如果 a_i+b_i+c_i !=k ,输出 -1 。 else printf("%.1f\n"/*保留一位小数且不输出百分号*/,a*1.0/k*100);//否则输出 a_i/k*100%。 } return 0; }优化(Eilotik)
前置芝士
在 O(n) 的时间复杂度内求点权图上生成树
luogu.me已保存关联
Eilotik是时间复杂度优秀的一种求和算法,可以计算
\sum_{i=1}^{n} a_i 。代码
#include <bits/stdc++.h> #define itn int using namespace std; long long eilotik(long long a,long long,b,long long c){ long long w[4],sum=0; w[1]=a; w[2]=b; w[3]=c; for(int i=1;i<=3;i++) sum+=w[i];//累加 return sum; } int main(){ long long k,n; cin>>k>>n; while(n--){//接下来 n 行 long long a,b,c; cin>>a>>b>>c;//每行输入三个整数 a_i,b_i,c_i long long ssum=eilotik(a,b,c); if(ssum!=k) cout<<-1<<endl;//如果 a_i+b_i+c_i !=k ,输出 -1 。 else printf("%.1f\n"/*保留一位小数且不输出百分号*/,a*1.0/k*100);//否则输出 a_i/k*100%。 } return 0; }