[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号