ABCDEFGHIJK
A是一个贪心,首先发电站和电塔其实本质上是差不多的,问题转化成n个区间覆盖问题,不相邻的区间用电线连一连的问题,sort后On的扫一遍,计算答案即可。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } struct node { int l,r; friend bool operator<(node a,node b) { return a.l<b.l; } }o[200010]; ll ans; int n,x,r; int main() { n=read(); for(int i=1;i<=n;i++) { x=read();r=read(); o[i]={x-r,x+r}; } sort(o+1,o+1+n); r=o[1].r; for(int i=1;i<=n;i++) { ans+=max(0,o[i].l-r); r=max(r,o[i].r); } cout<<ans; }A
D计算几何题
只有Q点位于圆心的时候有所有方向的弧长都相等,其他情况下应该令弧长垂直于OQ
#include<bits/stdc++.h> #define ll long long using namespace std; int read() { int x;scanf("%d",&x);return x; } void work() { long long r,x,y,d; cin>>r>>x>>y>>d; double len,AOC,BOC; len=sqrt(x*x+y*y); BOC=acos((len-d)/r); AOC=acos((len+d)/r); printf("%.12lf\n",(BOC-AOC)*r); } int main() { for(int t=read();t;t--) work(); }D
G找规律。当且仅当全为9或者999x的话答案就是s本身,否则输出串长-1个9
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll read() { ll x;scanf("%lld",&x);return x; } string s; int main() { cin>>s; int i=0; while(i!=s.length()&&s[i]=='9') i++; if(i>=s.length()-1) cout<<s; else for(i=0;i<s.length()-1;i++) cout<<9; }G