头像

Frank2008_1




离线:8天前


活动打卡代码 AcWing 2816. 判断子序列

Frank2008_1
2个月前
#include<iostream>
#include<cstdio>
using namespace std;

const int N=1e5+10;
int a[N],b[N];

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int j=0;j<m;j++)
        cin>>b[j];
    int j=0;
    for(int i=0;i<m;i++)
        if(j<n && a[j]==b[i])
            j++;
    if(j==n)
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;
    return 0;
}


活动打卡代码 AcWing 1357. 优质牛肋骨

Frank2008_1
4个月前
#include<iostream>
using namespace std;

int a[4]={1,3,7,9};
int n;

bool check(int x)
{
    for(int i=2;i*i<x;i++)
        if(x%i==0)
            return false;
    return true;
}
void dfs(int x,int u)
{
    if(u==n)
    {
        cout<<x<<endl;
        return;
    }
    x*=10;
    if(u==0)
        dfs(2,1);
    for(int i=0;i<4;i++)
    {
        if(i==0 && u==0)
            continue;
        if(i==3 && u==0)
            continue;
        x+=a[i];
        if(check(x))
            dfs(x,u+1);
        x-=a[i];
        if(i==1 && u==0)
            dfs(5,1);
    }
}
int main()
{
    cin>>n;
    dfs(0,0);
    return 0;
}



活动打卡代码 AcWing 1356. 回文质数

Frank2008_1
4个月前
#include<iostream>
using namespace std;

const int N=5e7+10;
bool st[N];
int primes[N],len=0;

void init(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!st[i])
            primes[len++]=i;
        for(int j=0;j<n/i&&i*primes[j]<=n;j++)
        {
            st[i*primes[j]]=true;
            if(i%primes[j]==0)
                break;
        }
    }
}
bool check(int x)
{
    int t=0;
    int a=x;
    while(x)
    {
        t=t*10+x%10;
        x/=10;
    }
    return a==t;
}
int main()
{
    int a,b;
    cin>>a>>b;
    if(b>1e7)
        b=1e7-1;
    init(b);
    for(int i=0;i<len;i++)
    {
        if(primes[i]>=a && check(primes[i]))
            cout<<primes[i]<<endl;
    }
    return 0;
}



活动打卡代码 AcWing 898. 数字三角形

Frank2008_1
4个月前
#include<iostream>
#include<cstring>
using namespace std;

const int N=510;
int f[N][N],a[N][N];

int main()
{
    memset(f,-0x3f,sizeof(f));
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
        {
            cin>>a[i][j];
            if(i==1 && j==1)
                f[1][1]=a[i][j];
            else
                f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];
        }
    int ans=-0x3f3f3f3f;
    for(int i=1;i<=n;i++)
        ans=max(ans,f[n][i]);
    cout<<ans<<endl;
    return 0;
}



活动打卡代码 AcWing 1353. 滑雪场设计

Frank2008_1
4个月前
#include<iostream>
using namespace std;

const int N=1010;
int h[N];

int main()
{
    int n,ans=1e9;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>h[i];
    for(int i=0;i<=83;i++)
    {
        int j=i+17,res=0;
        for(int k=0;k<n;k++)
            if(h[k]>j)
                res+=(h[k]-j)*(h[k]-j);
            else if(h[k]<i)
                res+=(i-h[k])*(i-h[k]);
        ans=min(ans,res);
    }
    cout<<ans<<endl;
    return 0;
}



活动打卡代码 AcWing 1351. 密码锁

Frank2008_1
4个月前
#include<iostream>
using namespace std;

int n;

bool check(int x,int t)
{
    if(abs(x-t)<3)
        return true;
    if((n-abs(x-t))<3)
        return true;
    return false;
}
int main()
{
    int ans=0;
    cin>>n;
    int a1,a2,a3;
    int b1,b2,b3;
    cin>>a1>>a2>>a3;
    cin>>b1>>b2>>b3;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=n;k++)
            {
                if(check(i,a1)&&check(j,a2)&&check(k,a3))
                    ans++;
                else if(check(i,b1)&&check(j,b2)&&check(k,b3))
                    ans++;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}



活动打卡代码 AcWing 1350. 密码运算

Frank2008_1
4个月前
#include<iostream>
#include<map>
using namespace std;

bool st[10];

bool get(int x)
{
    while(x)
    {
        if(!st[x%10])
            return false;
        x/=10;
    }
    return true;
}
bool check(int a,int b)
{
    int c=a*(b%10);
    int d=a*(b/10);
    int e=a*b;
    if(c>999 || d>999 || e>9999)
        return false;
    if(get(a)&&get(b)&&get(c)&&get(d)&&get(e))
        return true;
    return false;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int t;
        cin>>t;
        st[t]=true;
    }
    int ans=0;
    for(int i=100;i<=999;i++)
        for(int j=10;j<=99;j++)
            if(check(i,j))
                ans++;
    cout<<ans<<endl;
    return 0;
}



活动打卡代码 AcWing 1349. 修理牛棚

Frank2008_1
4个月前
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=210;
int a[N],b[N];

int main()
{
    int m,s,c;
    cin>>m>>s>>c;
    for(int i=0;i<c;i++)
        cin>>a[i];
    sort(a,a+c);
    int res=a[c-1]-a[0]+1;
    for(int i=1;i<c;i++)
        b[i]=a[i]-a[i-1]-1;
    sort(b+1,b+c,greater<int>());
    for(int i=1;i<m;i++)
        res-=b[i];
    cout<<res<<endl;
    return 0;
}



活动打卡代码 AcWing 1348. 搭配牛奶

Frank2008_1
4个月前
#include<iostream>
#include<algorithm>
using namespace std;

const int N=1e6+10;
struct node
{
    int p,a;
}q[N];

bool cmp(node A,node B)
{
    return A.p<B.p;
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<m;i++)
        cin>>q[i].p>>q[i].a;
    sort(q,q+m,cmp);
    int i=0;
    int ans=0;
    while(n)
    {
        if(n>=q[i].a)
            ans+=q[i].a*q[i].p,n-=q[i].a;
        else
            ans+=q[i].p*n,n=0;
        i++;
    }
    cout<<ans<<endl;
    return 0;
}



活动打卡代码 AcWing 1347. 双重回文

Frank2008_1
4个月前
#include<iostream>
#include<algorithm>
using namespace std;

string get(int x,int b)
{
    string ans="";
    while(x)
    {
        char c=(x%b)+'0';
        ans=c+ans;
        x/=b;
    }
    return ans;
}
int main()
{
    int n,k;
    cin>>n>>k;
    while(n)
    {
        k++;
        int res=0;
        for(int i=2;i<=10;i++)
        {
            string t1=get(k,i);
            string t2=t1;
            reverse(t2.begin(),t2.end());
            if(t1==t2)
                res++;
        }
        if(res>1)
            n--,cout<<k<<endl;
    }
    return 0;
}