头像

LiuFan

海南科技职业大学




离线:14天前


最近来访(3)
用户头像
yxc
用户头像
小郑同学

新鲜事 原文

LiuFan
3个月前
AcWing《SpringBoot框架课》拼团优惠!https://www.acwing.com/activity/content/introduction/1877/group_buy/74110/, 6.18-6.20限时狂欢,全场6折起!购课满1024元加送50AC币红包!


新鲜事 原文

LiuFan
3个月前
AcWing《SpringBoot框架课》拼团优惠!https://www.acwing.com/activity/content/introduction/1877/group_buy/74110/, 6.18-6.20限时狂欢,全场6折起!购课满1024元加送50AC币红包!


活动打卡代码 AcWing 1968. 奶牛赛跑

LiuFan
5个月前



活动打卡代码 AcWing 2003. 找到牛!

LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
string g;
int main()
{
    getline(cin,g);
    int res=0;
    // for(int i=0;i<g.size();i++){
    //     if (g[i] == '(' && g[i + 1] == '('){ //如果找到一个((,那么循环遍历右边所有的))
    //             for (int j = i; j< g.length()-1;j ++ ){ //没找到一个就是一种不同位置
    //                 if (g[j] == ')' && g[j + 1]== ')'){
    //                     res ++;    //答案++
    //                 }
    //             }
    //         }
    // }
    // cout<<res;
    int cnt=0;
    for(int i=0;i<g.size();i++){
        if(g[i]=='('&&g[i+1]=='('){//扫描到当前位置的前腿数量
            cnt++;
        }else if(g[i]==')'&&g[i+1]==')'){//当前位置出现后腿能够匹配的前腿数量;
            res+=cnt;
        }
    }
    cout<<res;
}


活动打卡代码 AcWing 1892. 奶牛线路

LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int a,b,n,city[N];
int m,s;
int main()
{
    cin>>a>>b>>n;
    int ans=N;
    for(int i=0;i<n;i++){
        cin>>m>>s;
        int flag=N;
        for(int i=0;i<s;i++){
            cin>>city[i];
            if(city[i]==a){
                flag=i;
            }
            if(city[i]==b&&i>flag){
                flag=-1;
            }
        }
        if(flag==-1){
            ans=min(ans,m);
        }
    }
    if(ans==N){
        cout<<"-1";
    }else{
        cout<<ans;
    }

}


活动打卡代码 AcWing 1902. 马拉松

LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int n,x[N],y[N],sum[N],ans;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x[i]>>y[i];
    }
    //|x1−x2|+|y1−y2|
    int Max=0,flag=0;
    for (int i = 1; i < n; i ++ ){
        int t1=abs(x[i+1]-x[i])+abs(x[i]-x[i-1])+abs(y[i+1]-y[i])+abs(y[i]-y[i-1]);//不跳
        int t2=abs(x[i+1]-x[i-1])+abs(y[i+1]-y[i-1]);//跳了的距离
        // Max=max(Max,t1-t2);
        if(t1-t2>Max){
            flag=i;
            Max=t1-t2;
        }
    }
    // cout<<flag;
    x[flag]=x[flag-1],y[flag]=y[flag-1];
    for (int i = 1; i < n; i ++ ){
        ans+=abs(x[i]-x[i-1])+abs(y[i]-y[i-1]);
    }
    // ans-=Max;
    cout<<ans;
}


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

LiuFan
5个月前
//二分 遍历结果,查找结果
#include <iostream>
#include <cstring>
#include <algorithm>
#include<cstdio>
using namespace std;
const int N = 10010;
double n;
int main()
{
    scanf("%lf",&n);
    //遍历结果
    double l=-10000.0,r=10000.0;
    while((r-l)>1e-8){//浮点数二分精度问题
        double mid=(l+r)/2.0;
        //满足条件的第一个数
        if(mid*mid*mid>=n){
            r=mid;
        }else{
            l=mid;//由于浮点数的精度过小于1 所以加1去掉
        }
    }
    printf("%0.6lf",l);
}


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

LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
#include<cstdio>
using namespace std;
const int N = 100010;
int n,q,k,a[N];
int main()
{
    cin>>n>>q;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<q;i++){
        cin>>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;
        }else{
            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;
        }
    }
}



LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n,f[N],a[N];
int main()
{
    cin>>n;
    for (int i = 0; i < n; i ++ ) cin>>a[i];
    for(int i=0;i<n;i++){//以a[i]结尾的单调递增
        f[i]=1;//第一个f[i]=1;
        for(int j=0;j<i;j++){//遍历这个区间的所有数
            if(a[j]<a[i]){//如前列有数比结尾小 说明有上升
                f[i]=max(f[i],f[j]+1);//当前结尾的上升数量=当前f[i](1),now前列数的递增数+1;
            }
        }
    }
    int ans=0;
    for(int i=0;i<n;i++){//遍历以a[i]结尾的所有区间
        ans=max(ans,f[i]);//比较最大值;
    }
    cout<<ans;
}


活动打卡代码 AcWing 1301. C 循环

LiuFan
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
#include<cstdio>
using namespace std;

const int N=40;
typedef long long LL;
LL k,a,b,c;
LL x,y;
LL exgcd(LL a, LL b, LL &x, LL &y)
{
    if (b == 0)
    {
        x = 1, y = 0;
        return a;
    }
    LL d = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}
int main()
{
    /*
    (A+xC)mod2^k = B
    A+xC=B+2^ky. (x,y为未知数)
    xC-2^ky=B-A;
    A,B,C,k为常数
    扩展欧几里得 ax+by=gcd(a,b);ab为常数 xy为未知数
    可求出一组系数x0,y0
    一组系数可求出所有值
    x=x0+k*(b/gcd);
    y=y0-k*(a/gcd);
    */
    while(cin>>a>>b>>c>>k){
        if(a==0&&b==0&&c==0&&k==0){
            break;
        }
        LL z=1ll<<k;//2^k long long 
        LL gcd=exgcd(c,z,x,y);//c,z为常数 x y为未知数
        //xC-2^ky=B-A;
        if((b-a)%gcd){//取模不为0 说明除不进就是陷入了死循环;
            cout<<"FOREVER"<<endl;
        }else{
            x*=(b-a)/gcd;//x扩展 (b-a)/gcd 倍
            z/=gcd;
            cout<<(x%z+z)%z<<endl;//最小正整数解
        }
    }
}