头像

艾布




离线:2天前


最近来访(0)

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

艾布
2天前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

double x,mid;
double l=-10000,r = 10000;

int main()
{
    cin>>x;
    while(r - l > 1e-8)
    {
        mid = (l + r) / 2;
        if(mid * mid * mid >= x)r = mid;
        else l = mid;
    }

    printf("%lf\n",l);

    return 0;
}


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

艾布
3天前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include <iostream>

using namespace std;

const int N = 100010;
int a[N];

int main()
{
    int n, q;
    cin >> n >> q;

    for (int i = 0; i < n; i ++) cin >> a[i];

    while (q --)
    {
        int k;
        cin >> k;

        int l = 0, r = n;
        while (l < r)
        {
            int mid = l + r >> 1;

            if (a[mid] >= k) r = mid;

            else l = mid + 1;
        }


        if (a[l] != k) cout << "-1 -1" << endl;
        else
        {
            cout << l << ' ';
            int l = 0, r = n;
            while (l < r)
            {
                int mid = l + r >> 1;

                if (a[mid] > k) r = mid;
                else l = mid + 1;
            }

            cout << l - 1 << endl;
        }
    }
}





活动打卡代码 AcWing 116. 飞行员兄弟

艾布
3天前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<algorithm>
#define x first
#define y second

using namespace std;

typedef pair<int,int> PII;

const int N=5;

char g[N][N],backup[N][N];



int get(int x,int y)
{
    return x*4+y;//返回第x行第y列上的数是多少
}

void turn_one(int x,int y)
{
    if(g[x][y]=='+') g[x][y]='-';
    else g[x][y]='+';
}

void turn_all(int x,int y)
{
    for(int i=0;i<4;i++)
    {
        turn_one(x,i);
        turn_one(i,y);
    }
    turn_one(x,y);

}

int main()
{
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
            cin>>g[i][j];

    vector<PII> res;//这是记录方案所需要的结构

    //枚举所有的方案
    for(int op=0;op<1<<16;op++)
    {
        vector<PII> temp;//temp里面存的是方案
        //先备份一下,为什么?因为这又不是最终方案,我们要把所有方案都试一遍,求最少的
        memcpy(backup,g,sizeof g);

        //枚举16个位置,进行操作
        for(int i=0;i<4;i++)
            for(int j=0;j<4;j++)
                if(op>>get(i,j)&1) //如果当前位置是1的话--get的作用就是返回二进制数中那一位是第几位,从而判断是否为1
                {
                    temp.push_back({i,j});
                    //按一下开关
                    turn_all(i,j);
                }


        //判断所有灯泡是否全亮
        bool has_closed=false;
        for(int i=0;i<4;i++)
            for(int j=0;j<4;j++)
                if(g[i][j]=='+') has_closed=true;

        if(has_closed==false)
        {
            //如果方案为空或者他的操作数大于我们刚存好的新的方案,那么就修改它
            if(res.empty()||res.size()>temp.size()) res=temp;
        }
        //还原回来,供下一个方案操作
        memcpy(g,backup,sizeof g);
    }
    //因为没说无解,所以可以猜想一下一定有解
    cout<<res.size()<<endl;
    //这里的迭代函数就是一种简便写法,不要误解
    //另外原题下标从1开始,所以下面加1了
    for(auto op:res) cout<<op.x+1<<" "<<op.y+1<<endl;

    return 0;
}



活动打卡代码 AcWing 1208. 翻硬币

艾布
3天前

include< iostream>

include< cstring>

include< cstdio>

include< algorithm>

using namespace std;

const int N = 115;
char arr1[N],arr2[N];
int n,res;
void turn(int i)
{
if(arr1[i] == ‘‘)arr1[i] = ‘o’;
else arr1[i] = ‘
’;
}

int main()
{
cin>>arr1>>arr2;
int n=strlen(arr1);
for(int i=0;i<n;i)
{
if(arr1[i] != arr2[i])
{
turn(i),turn(i+1);
res
;
}
}
cout<<res;
return 0;
}




艾布
8天前

include< iostream>

using namespace std;

define ll long long int

ll a,b,s,p;
ll ks(ll x,ll y,ll p)
{
ll t=1;
while(y>0)
{
if(y&1)
{
t=(t%px%p)%p;
}
y >>= 1;
x=(x%p
x%p)%p;
}
return t;
}
int main()
{
cin>>a>>b;
s=ks(a,b,233333);
printf(“%d”,s);
return 0;
}




艾布
8天前
#include<iostream>
using namespace std;
#define ll long long int
ll a,b,s,p;
ll ks(ll x,ll y,ll p)
{
    ll t=1;
    while(y>0)
    {
        if(y&1)
        {
            t=(t%p*x%p)%p;
        }
        y >>= 1;
        x=(x%p*x%p)%p;
     } 
     return t; 
}
int main()
{
    cin>>a>>b;
    s=ks(a,b,233333);
    printf("%d",s);
    return 0;
}



艾布
8天前

include< bits/stdc++.h>

using namespace std;

const int N=6; //题目中的数据是5X5的二维字符数组,在结尾处有\0
//g[][]用来存储25盏灯的初始状态
char g[N][N],backup[N][N]; //backup[][]用来备份这25盏灯
int dx[5]={-1,0,1,0,0},dy[5]={0,1,0,-1,0}; //执行开关灯操作对应的五个位置

void turn(int x,int y) //执行开关灯操作
{
for(int i=0;i<5;i++) //循环五次
{
int a=x+dx[i],b=y+dy[i]; //新的坐标位置
if(a<0||a>=5||b<0||b>=5) continue; //如果新的坐标位置不在方形内重新开始循环
g[a][b]^=1; //字符1的ASCII码为49,0的ASCII码为48转化为二进制最后一位分别是1,0
} //^表示异或运算 0^1=1,1^1=0
} //通过位运算来优化操作

int main()
{
int q;
cin>>q;

while(q--) //执行q次操作
{
    for(int i=0;i<5;i++) cin>>g[i]; //输入25盏灯的状态

    int res = 10; //初始化答案,只要大于6即可
    for(int op=0;op<32;op++) //第一行一共5个元素可以操作2^5=32次
    {                        //从一行开始枚举进行操作
        memcpy(backup,g,sizeof g); //备份25盏灯

        int step=0; //step用来存储操作的次数
        for(int i=0;i<5;i++)
        {
            if(op>>i&1) //右移i位与1相当于表示第一行第5-i个位置
            {
                step++; //操作步数加1
                turn(0,4-i); //进行操作
            }
        }

        for(int i=0;i<4;i++)
        {
            for(int j=0;j<5;j++)
            {
                if(g[i][j]=='0') //如果这个位置的灯是灭的
                {
                    step++; //步骤数加1
                    turn(i+1,j); //对该位置的下一行进行操作
                }
            }
        }

        bool dark=false; //dark变量表示最后一行是否全亮
        for(int i=0;i<5;i++)
        {
            if(g[4][i]=='0') //如果最后一行出现不亮的灯0
            {
                dark=true; //dark为真
                break; //终止循环
            }
        }

        if(!dark) res=min(res,step); //最后一行全都亮表示所有灯都点亮了
        memcpy(g,backup,sizeof g); //本次循环结束后将初始状态复原到g数组
    }

    if(res>6) res=-1; //大于6输出-1

    cout<<res<<endl; //输出答案
}

return 0;

}

//转载大佬题解,太清晰,好东西,需要多多转发



活动打卡代码 AcWing 95. 费解的开关

艾布
8天前

include< bits/stdc++.h>

using namespace std;

const int N=6; //题目中的数据是5X5的二维字符数组,在结尾处有\0
//g[][]用来存储25盏灯的初始状态
char g[N][N],backup[N][N]; //backup[][]用来备份这25盏灯
int dx[5]={-1,0,1,0,0},dy[5]={0,1,0,-1,0}; //执行开关灯操作对应的五个位置

void turn(int x,int y) //执行开关灯操作
{
for(int i=0;i<5;i++) //循环五次
{
int a=x+dx[i],b=y+dy[i]; //新的坐标位置
if(a<0||a>=5||b<0||b>=5) continue; //如果新的坐标位置不在方形内重新开始循环
g[a][b]^=1; //字符1的ASCII码为49,0的ASCII码为48转化为二进制最后一位分别是1,0
} //^表示异或运算 0^1=1,1^1=0
} //通过位运算来优化操作

int main()
{
int q;
cin>>q;

while(q--) //执行q次操作
{
    for(int i=0;i<5;i++) cin>>g[i]; //输入25盏灯的状态

    int res = 10; //初始化答案,只要大于6即可
    for(int op=0;op<32;op++) //第一行一共5个元素可以操作2^5=32次
    {                        //从一行开始枚举进行操作
        memcpy(backup,g,sizeof g); //备份25盏灯

        int step=0; //step用来存储操作的次数
        for(int i=0;i<5;i++)
        {
            if(op>>i&1) //右移i位与1相当于表示第一行第5-i个位置
            {
                step++; //操作步数加1
                turn(0,4-i); //进行操作
            }
        }

        for(int i=0;i<4;i++)
        {
            for(int j=0;j<5;j++)
            {
                if(g[i][j]=='0') //如果这个位置的灯是灭的
                {
                    step++; //步骤数加1
                    turn(i+1,j); //对该位置的下一行进行操作
                }
            }
        }

        bool dark=false; //dark变量表示最后一行是否全亮
        for(int i=0;i<5;i++)
        {
            if(g[4][i]=='0') //如果最后一行出现不亮的灯0
            {
                dark=true; //dark为真
                break; //终止循环
            }
        }

        if(!dark) res=min(res,step); //最后一行全都亮表示所有灯都点亮了
        memcpy(g,backup,sizeof g); //本次循环结束后将初始状态复原到g数组
    }

    if(res>6) res=-1; //大于6输出-1

    cout<<res<<endl; //输出答案
}

return 0;

}
//大佬题解太清晰了,牛的



活动打卡代码 AcWing 717. 简单斐波那契

艾布
8天前

include< iostream>

include< cstdio>

include< cstring>

include< algorithm>

using namespace std;

int n;
int f[46];

int main()
{
cin>>n;
f[1] = 0;
f[2] = 1;
for(int i=3;i<=n;i) f[i] = f[i-1] + f[i-2];
for(int i=1;i<=n;i
) cout<<f[i]<<” “;
return 0;
}




艾布
8天前

include< iostream>

include< cstdio>

include< cstring>

include< algorithm>

include< vector>

using namespace std;

const int N=20;
int n;
int state[N];
bool used[N];
//vector[HTML_REMOVED]path;

void dfs(int u)
{
if(u > n)
{
// for(auto x : path) cout<[HTML_REMOVED]>i & i))
// {
// path.push_back(i+1);
// dfs
// }
// }
for(int i = 1 ; i <= n ; i++)
if(!used[i])
{
state[u] = i;
used[i] = true;
dfs( u + 1 );

        state[u] = 0;
        used[i] = false;
    }

}

int main()
{
cin>>n;
dfs(1);
return 0;
}