寒假每日一题(入门组)week5 完结

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒假每日一题(入门组)week5 完结相关的知识,希望对你有一定的参考价值。

目录

426. 开心的金明【DP】


https://www.acwing.com/problem/content/428/

#include<bits/stdc++.h>
using namespace std;
int v[35],w[35],n,m;
int f[30][30005];
int main(void)

    cin>>m>>n;
    for(int i=1;i<=n;i++) cin>>v[i]>>w[i];
    for(int i=1;i<=n;i++)
    
        for(int j=0;j<=m;j++)
        
            f[i][j]=f[i-1][j];
            if(j>=v[i]) f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]*v[i]);
        
    
    cout<<f[n][m];
    return 0;

703. 数独检查【模拟】


https://www.acwing.com/problem/content/705/

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int a[N][N],n;
bool check()

    for(int i=0;i<n*n;i++)
    
        set<int>st;
        for(int j=0;j<n*n;j++)
        
            st.insert(a[i][j]);
            if(a[i][j]<=0||a[i][j]>n*n) return false;
        
        if(st.size()!=n*n) return false;
    
    for(int i=0;i<n*n;i++)
    
        set<int>st;
        for(int j=0;j<n*n;j++)
        
            st.insert(a[j][i]);
        
        if(st.size()!=n*n) return false;
    
    for(int i=0;i<n*n;i+=n)
    
        for(int j=0;j<n*n;j+=n)
        
            int x=i,y=j;
            int xx=i+n-1,yy=j+n-1;
            if(xx>=n*n||yy>=n*n) continue;
            set<int>st;
            for(int k1=x;k1<=xx;k1++)
            
                for(int k2=y;k2<=yy;k2++)
                
                    st.insert(a[k1][k2]);
                
            
            if(st.size()!=n*n) return false;
        
    
    return true;

int main(void)

    int t; cin>>t;
    for(int k=1;k<=t;k++)
    
        cin>>n;
        for(int i=0;i<n*n;i++)
            for(int j=0;j<n*n;j++) cin>>a[i][j];
        printf("Case #%d: ",k);
        if(check()) puts("Yes");
        else puts("No");
    
    return 0;

1101. 献给阿尔吉侬的花束【bfs】


https://www.acwing.com/problem/content/1103/

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int t,st[N][N],stx,sty,edx,edy,n,m;
int dx[4]=-1,0,0,1;
int dy[4]=0,-1,1,0;
string s[N];
int bfs(int x,int y)

    queue<pair<int,int>>q; q.push(x,y);
    st[x][y]=0;
    while(q.size())
    
        auto temp=q.front(); q.pop();
        x=temp.first,y=temp.second;
        if(x==edx&&y==edy) return st[x][y];
        for(int i=0;i<4;i++)
        
            int tempx=x+dx[i];
            int tempy=y+dy[i];
            if(tempx<0||tempx>=n||tempy<0||tempy>=m) continue;
            if(s[tempx][tempy]=='#') continue;
            if(st[tempx][tempy]!=0x3f3f3f3f) continue;
            st[tempx][tempy]=st[x][y]+1;
            q.push(tempx,tempy);
        
    
    return 1e9;

int main(void)

    cin>>t;
    while(t--)
    
        memset(st,0x3f,sizeof st);
        cin>>n>>m;
        for(int i=0;i<n;i++) cin>>s[i];
        for(int i=0;i<n;i++)
        
            for(int j=0;j<m;j++)
            
                if(s[i][j]=='S') stx=i,sty=j;
                if(s[i][j]=='E') edx=i,edy=j;
            
        
        int ans=bfs(stx,sty);
        if(ans==1e9) puts("oop!");
        else cout<<ans<<endl;
    
    return 0;

89. a^b【快速幂】


https://www.acwing.com/problem/content/91/

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL quick_mi(LL a,LL b,LL p)

    LL sum=1;
    while(b)
    
        if(b&1) sum=sum*a%p;
        b>>=1;
        a=a*a%p;
    
    return sum%p;

int main(void)

    LL a,b,p; cin>>a>>b>>p;
    cout<<quick_mi(a,b,p);
    return 0;

433. ISBN号码【模拟】


https://www.acwing.com/problem/content/435/

 #include<bits/stdc++.h>
using namespace std;
int main(void)

    string s; cin>>s;
    int sum=0;
    for(int i=0,k=1;i<s.size()-1;i++) if(s[i]>='0'&&s[i]<='9') sum=sum+(s[i]-'0')*k,k++;
    sum=sum%11;
    char c=sum+'0';
    if(sum==10) c='X';
    if(c==s[s.size()-1]) puts("Right");
    else
    
        for(int i=0;i<s.size()-1;i++) cout<<s[i];
        cout<<c;
    
    return 0;

428. 数列【进制】


https://www.acwing.com/problem/content/430/

#include<bits/stdc++.h>
using namespace std;
int main(void)

    int k,n,sum=0; cin>>k>>n;
    string s;
    while(n) s=s+to_string(n%2),n/=2;
    for(int i=0,w=1;i<s.size();i++,w*=k) sum+=(s[i]-'0')*w;
    cout<<sum;

421. 陶陶摘苹果


https://www.acwing.com/problem/content/423/

#include<bits/stdc++.h>
using namespace std;
const int N=15;
int a[N],n,cnt;
int main(void)

    for(int i=0;i<10;i++) cin>>a[i];
    cin>>n;
    for(int i=0;i<10;i++) 
    
        if(n+30>=a[i]) cnt++;
    
    cout<<cnt;
    return 0;

以上是关于寒假每日一题(入门组)week5 完结的主要内容,如果未能解决你的问题,请参考以下文章

寒假每日一题(入门组)week3 完结

寒假每日一题(入门组)week7 完结

寒假每日一题(入门组)week4 完结

寒假每日一题(入门组)week1 完结

寒假每日一题(入门组)week6 完结

寒假每日一题(提高组)Week 2 完结