zoukankan      html  css  js  c++  java
  • CF EDU94 div2

    t组测试,字符串s的长度 2 * n - 1

    输出长度为n的字符串w,满足s[1,n] s[2,n + 1],s[3,n + 2],s[n,2 * n - 1]相似

    从第一个字母开始去,隔着一个再取下一个

    思维

    #include <bits/stdc++.h>
    using namespace std;
    int t,n;
    string s;
    int main() {
        //freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        cin >> t;
        while(t--){
            cin >> n >> s;
            for(int i = 0; i < s.size(); i+=2)
                cout << s[i];
            cout << endl;
        }
        return 0;
    }
    View Code

    B

    t组测试样例。你有p,你的追随者有f,sword和axe数量分别是cnts,cntw;

    每个分别消耗s,w;求获得的weapon数量最大值

      p f
    s s1 s2
    w w1 w2

    由题意满足条件

    s1 + s2 <= cnts, w1 + w2<= cntw;
    s1 * s + w1 * w<= p; s2 * s + w2 * w<= f;

    先假设 s  < w; s1开始枚举

    枚举

    #include <bits/stdc++.h>
    using namespace std;
    int t,p,f,cnts,cntw,s,w;
    int ans,s1,w1,s2,w2;
    int main() {
       // freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        cin >> t;
        while(t--){
            cin >> p >> f >> cnts >> cntw >> s >> w;
            ans = 0;
            if(s > w){swap(s,w);swap(cnts,cntw);}
            for(s1 = 0; s1 <= cnts && s1 * s <= p; s1 ++){
                w1 = min(cntw,(p - s1 * s) / w );
                s2 = min(cnts - s1,f / s);
                w2 = min(cntw - w1,(f - s * s2 ) / w);
                ans = max(ans,s1 + w1 + s2 + w2);
            }
            cout << ans << endl;
        }
        return 0;
    }
    View Code

    C

    大佬的博客

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5 + 10;
    int t,x,flag,len;
    string S;
    int w[maxn],s[maxn];
    int main() {
       // freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        cin >> t;
        while(t--) {
            cin >> S >> x;
            int i;
            len = S.size();
            for (i = 0; i < len; i++) {
                s[i + 1] = S[i] - '0';w[i + 1] = 1;
            }
            for (i = 1; i <= len; i++) {
                if(!s[i]){
                    if(i - x > 0) w[i - x] = 0;
                    if(i + x <= len) w[i + x] = 0;
                }
            }
            flag = 1;
            for (i = 1; i <= len; i++) {
              if(s[i]){
                  if(((i - x > 0 && !w[i - x]) || i - x <= 0) && ((i + x <= len && !w[i + x])|| i + x > len)){
                      flag = 0;
                      break;
                  }
              }
            }
            if (flag) for (i = 1; i <= len; i++) cout << w[i];
            else cout << -1;
            cout << endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    年末deadline汇总
    [线性代数]2016.12.19周一作业
    [线性代数]2016.12.15周四作业
    Android SDK的安装与环境变量的配置
    安装JDK环境变量的配置
    Python中单引号,双引号,三引号
    带有支付功能的产品如何进行测试
    Android稳定性测试工具Monkey的使用
    mysql数据库单表增删改查命令
    svn
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/13564023.html
Copyright © 2011-2022 走看看