头像

__frj


访客:296

离线:28天前


活动打卡代码 AcWing 803. 区间合并

__frj
1个月前
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
vector <PII> segs, res;
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        int l,r;
        cin>>l>>r;
        segs.push_back({l,r});
    }
    sort(segs.begin(),segs.end());
    int st=-1e9,ed=-1e9;
   for(auto seg:segs){
        if(seg.first > ed){ //两个区间无法合并
            if(ed==-1e9){//特判第一个
                st=seg.first;
                ed=seg.second;
            }
            else{
                res.push_back({st,ed});
                st=seg.first;
                ed=seg.second;
            }
        }
        else if(ed<seg.second){// 珂以合并
            ed=seg.second;
        }
    }
    if(st!=-1e9&&ed!=-1e9){
        res.push_back({st,ed});
    }
  /*    for(auto r:res)
        printf("%d %d\n",r.first,r.second) ;
    puts("") ;*/
    cout<<res.size();
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



__frj
1个月前
//这里填你的代码^^
#include<iostream>
using namespace std;
int lowbit(int x){
    return x&-x;//输出第一个1以后的数
}
int main(){
   int n;
   cin>>n;
   while(n--){
       int x,k=0;
       cin>>x;
       while(x>0) {
           x-=lowbit(x);
           k++;
       }
       cout<<k<<' ';
   }
}

//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



__frj
1个月前
//这里填你的代码^^
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N];
int n,m,x;
int main(){
    cin>>n>>m>>x;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>b[i];
    }
    for(int i=1,j=m;i<=n;i++){
        while(j>=1&&a[i]+b[j]>x){
            j--;
        }
        if(a[i]+b[j]==x){
            cout<<i-1<<' '<<j-1;
        }
    }
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



__frj
1个月前
//这里填你的代码^^
#include<iostream>
using namespace std;
int main(){
    int a[100007],b[100007];
    int n,ans=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=0;
    }
    for(int i=1,j=1;i<=n;i++){//i为快指针,j为慢指针 
         b[a[i]]++;
         while(i>=j&&b[a[i]]>1){
             b[a[j]]--;
             j++;

         }
        // cout<<i<<j<<endl;
         ans=max(ans,i-j+1);
    }
    cout<<ans;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 794. 高精度除法

__frj
1个月前
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
vector <int> a,c;
int t=0;
int b;
void chufa(){
    for(int i=a.size()-1;i>=0;i--){
        t=t*10+a[i];
        c.push_back(t/b);
        t%=b;
    }
    reverse(c.begin(),c.end());
    while(c.size()>1&&c.back()==0){
        c.pop_back();
    }
}
int main(){
    string s;
    cin>>s;
    cin>>b;
    for(int i=s.size()-1;i>=0;i--){
        a.push_back(s[i]-'0');
    }
    chufa();
    for(int i=c.size()-1;i>=0;i--){
        cout<<c[i];
    }
    cout<<endl<<t;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 793. 高精度乘法

__frj
1个月前

```]

include[HTML_REMOVED]

include[HTML_REMOVED]

include[HTML_REMOVED]

using namespace std;
string s;
vector[HTML_REMOVED] a,c;
int b;
void chengfa(){
int t=0;
if(b==0||a[a.size()-1]==0){
c.push_back(0);
return;
}
for(int i=0;i[HTML_REMOVED]0){
c.push_back(t);
}
}
int main(){
cin>>s;cin>>b;
for(int i=s.size()-1;i>=0;i–){
a.push_back(s[i]-‘0’);
}
chengfa();
for(int i=c.size()-1;i>=0;i–){
cout<<c[i];
}
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
```



活动打卡代码 AcWing 792. 高精度减法

__frj
1个月前
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
vector<int> a,b,c ;string s1,s2;
bool check(vector <int> a,vector <int> b){
    if(a.size()!=b.size()){
        return a.size()>b.size();
    }
    for(int i=a.size()-1;i>=0;i--){
        if(a[i]!=b[i]) return a[i]>b[i];

    }
    return true;
}
void sub(vector <int> d ,vector <int> e){
    for(int i=0,t=0;i<d.size();i++){
        t=d[i]-t;
        if(i<e.size()) t-=e[i];
        c.push_back((t+10)%10);
        if (t >= 0) t = 0; // 这里需要改
        else t = 1;
    }
    while(c.size()>1&&c.back()==0){
        c.pop_back();
    }
}
int main(){
    cin>>s1>>s2;
    for(int i=s1.size()-1;i>=0;i--){ a.push_back(s1[i]-'0');}
    for(int i=s2.size()-1;i>=0;i--){ b.push_back(s2[i]-'0');}
    if(check(a,b)){ sub(a,b);}
    else{sub(b,a);cout<<"-"; }
    for(int i=c.size()-1;i>=0;i--){ // 这里应该i--
        cout<<c[i]; 
    }
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 791. 高精度加法

__frj
1个月前
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
vector <int> a,b,c;
string s1,s2;
void Add(){
    int k=0;//处理进位
    for(int i=0;i<max(a.size(),b.size());i++){
        if(i<a.size()) k+=a[i];
        if(i<b.size()) k+=b[i];
        c.push_back(k%10);
        k/=10;//若大于10,则移至下一位
    }
    if(k>0) c.push_back(1);//若还有进位没有处理,再进一位
}
int main(){
    cin>>s1>>s2;
    for(int i=s1.size()-1;i>=0;i--){
        a.push_back(s1[i]-'0');
    }
    for(int i=s2.size()-1;i>=0;i--){
        b.push_back(s2[i]-'0');
    }
    Add();
    for(int i=c.size()-1;i>=0;i--){
        cout<<c[i];
    }
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 790. 数的三次方根

__frj
1个月前
//这里填你的代码^^
#include<bits/stdc++.h>
using namespace std;
double poww(double a){
    return a*a*a;
}
int main(){
    double s;
    cin>>s;
    double l=-10000,r=10000;
    while (r-l>1e-7){
        double mid=(l+r)/2;
        if(poww(mid)>=s) r=mid;
        else l=mid;
    }
    printf("%.6f",l);
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 789. 数的范围

__frj
1个月前
#include<iostream>
using namespace std;
const int N=114514;
int a[N];
int main(){
    int n,q;
    cin>>n>>q;
    for(int i=0;i<=n-1;i++){
        scanf("%d",&a[i]);
    }
    while(q){
        q--;
        int k;
        scanf("%d",&k);
        int l=0,r=n-1;
        while(l<r){
            int mid=(l + r) /2;
            if(a[mid]>=k) r=mid;
            else l=mid+1;
        }
        if(a[l]!=k){
            cout<<"-1 -1"<<endl;
            continue;
        }
        cout<<l<<' '; l=0,r=n-1;
        while(l<r){
            int mid=(l + r + 1)/2;
            if(a[mid]<=k) l=mid;
            else r=mid-1;
        }
        cout<<l<<endl;
    }
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~