zoukankan      html  css  js  c++  java
  • Panasonic Programming Contest 2020

    A

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 1000005;
    const int a[40] = {0,1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51};
    
    signed main() {
        int n;
        cin>>n;
        cout<<a[n];
    }
    

    B

    注意特判 (1) 的情况

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 1000005;
    
    signed main() {
        int n,m;
        cin>>n>>m;
        if(n==1 || m==1) cout<<1;
        else cout<<(n*m+1)/2;
    }
    
    

    C

    看到根号注意讨论符号

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 1000005;
    
    signed main() {
        int a,b,c;
        cin>>a>>b>>c;
        if(c-a-b>=0) cout<<(4ll*a*b<(c-a-b)*(c-a-b)?"Yes":"No");
        else cout<<"No";
    }
    
    

    D

    转化为,求一个序列,如果这个位置是 p[i],那么 1~i-1 内一定出现过所有 1~p[i]-1 的数字

    对下面 dfs(p,lim) 做一点注解:这个函数是在枚举这个序列,p 代表的是当前枚举到第几位,lim 代表 1~p-1 位出现过的最大数字 +1,也就是第 p 位可以取的最大值

    那么如果第 p 位取了 lim,往后就可以取 1~lim+1了

    如果第 p 位取的值比 lim 小,往后仍然只能取 1~lim

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 1000005;
    
    int n,a[N];
    
    void dfs(int p,int lim) {
        if(p==n+1) {
            for(int i=1;i<=n;i++) cout<<(char)(a[i]+'a'-1);
            cout<<endl;
        }
        else for(int i=1;i<=lim;i++) {
            a[p]=i;
            dfs(p+1,lim+(i==lim));
        }
    }
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n;
        dfs(1,1);
    }
    
    

    E

    对于最终结果,我们可以 (O(n^2)) 枚举串的相对位置,如果可以 (O(1)) 判断匹配就好了

    于是我们先把每一种相对位置的匹配情况都预处理出来即可

    (这个题都跪,我昨晚的 IQ 应该是负的吧)

    #include <bits/stdc++.h>
    using namespace std;
    
    const int M = 2005;
    const int N = 30005;
    const int o = 15000;
    
    bool ab[N],ac[N],bc[N];
    
    bool match(char x,char y) {
        return x=='?' || y=='?' || x==y;
    }
    
    string a,b,c;
    int la,lb,lc;
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>a>>b>>c;
        la=a.length();
        lb=b.length();
        lc=c.length();
        for(int i=0;i<la;i++) for(int j=0;j<lb;j++)
            if(!match(a[i],b[j])) ab[i-j+o]=1;
        for(int i=0;i<la;i++) for(int j=0;j<lc;j++)
            if(!match(a[i],c[j])) ac[i-j+o]=1;
        for(int i=0;i<lb;i++) for(int j=0;j<lc;j++)
            if(!match(b[i],c[j])) bc[i-j+o]=1;
        int ans=N;
        for(int i=-2*M;i<=2*M;i++) for(int j=-2*M;j<=2*M;j++) {
            if(!ab[i+o] && !ac[j+o] && !bc[j-i+o]) {
                ans=min(ans, max(la,max(lb+i,lc+j))-min(0,min(i,j)));
            }
        }
        cout<<ans<<endl;
    }
    

    F

    待填坑

  • 相关阅读:
    刷题系列
    元类编程
    Python内置方法与面向对象知识点进阶系列
    json反序列化的时候字符串为单引号的一个坑
    刨根问底,完美解决Django2版本连接MySQL报错的问题
    使用mkdocs撰写技术文档并免费部署上线
    关于Python的源文件编译看这一篇就够了
    SQL查询where语句后面字符串大小写问题
    configparser模块获取settings.ini文件中的配置数据
    Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
  • 原文地址:https://www.cnblogs.com/mollnn/p/12495949.html
Copyright © 2011-2022 走看看