[2022牛客多校1]漫漫还债之路QwQ 更新至3题
碎碎念
因为太忙了……不仅要搞ACM还要肝小程序(完全不会vue只能从0学起)和肝数学建模(依然完全不会,感到慌张.jpg)。
最近学算法也很瓶颈……具体表现为可以抄板子但是智商不够理解不来,比如tarjan老爷子搞了一堆缩点割点割边和神马cc的东西,我好像在很努力地尝试理解dfn和low的区别,但是还是一知半解
感觉自己既智商不够又浮躁不认真,神马都想抓到但是最后只会全部扑空,只能抓紧时间力
决定以补题倒逼学算法
G
题意:给定n,输出1~n中字典序最大的数
一眼签到,设给定的字符串为s,构造一个比n的位数少一位的全9字符串ans,如果s>ans,则让ans=s,输出ans即可
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
cin>>s;
int len=s.size();
if(len==1) cout<<s;
else
{
string ans="";
for(int i=1;i<len;i++) ans+='9';
if(s>ans) ans=s;
cout<<ans;
}
}
D
画图and证明,一个扇形的圆心角越大,扇形弧长越大,要让扇形的角最大就要blablabla
最后知道当OQ与AB重合时扇形角最大
计算几何,没接触过orz
#include <bits/stdc++.h>
using namespace std;
const double pi=3.141592654;
int main()
{ int N;cin>>N;
double r,x,y,d;
while(N--)
{
cin>>r>>x>>y>>d;
double l=sqrt(x*x+y*y);
double c=acos((l-d)/r)*180/pi-acos((l+d)/r)*180/pi;
cout<<fixed<<setprecision(12)<<r*pi*2*c/360<<endl;
}
}
A
看不懂题意的一天,但解法就是排序贪一下- -
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<pair<int,int> > v,res;
int n;
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x,r;cin>>x>>r;
v.push_back({x-r,x+r});
}
sort(v.begin(),v.end());
int ed=0,ks=0;
for(auto t:v)
{
int l=t.first,r=t.second;
//cout<<l<<' '<<r<<'\n';
if(ks==0&&ed==0) ks=l,ed=r;
else if(l<=ed) ed=max(ed,r);
else if(l>ed)
{
res.push_back({ks,ed});
ks=l,ed=r;
}
}
res.push_back({ks,ed});
//puts("");
for(auto t:res)
{
//cout<<t.first<<' '<<t.second<<'\n';
}
int len=res.size();
int ans=0;
for(int i=1;i<len;i++)
{
ans+=res[i].first-res[i-1].second;
}
cout<<ans;
}

浙公网安备 33010602011771号