codeforces 741

A Display Size

求差最小的两个因数即可

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int N;
        cin >> N;
        int i;
        for (i = sqrt(N) ;i >= 1;i--) {
          if (N % i == 0) break;
        }
        cout << i << " " << N / i << endl;
        return 0;
    }

B Mammoth’s Genome Decoding CodeForces

在给定序列中,问是否存在可能使得是否存在序列使得ACGT个数相同

思路 1. 判断长度是否为4的倍数 不是不可能 2. 记录各个基因的个数,若个数大于总长/4则不可能 3. 模拟填基因

    #include <bits/stdc++.h>
    
    using namespace std;
    string gem;
    int cnt[5];
    char aph[10] = "?ACGT";
    int main()
    {
      int N;
      cin >> N >> gem;
      memset ( cnt, 0, sizeof cnt );
      if ( gem.size() % 4 != 0 ) {
        cout << "===" << endl;
      } else {
        for ( int i = 0; i < gem.size() ; i++ ) {
          if ( gem[i] == '?' ) {
            cnt[0]++;
          } else if ( gem[i] == 'A' ) {
            cnt[1]++;
          } else if ( gem[i] == 'C' ) {
            cnt[2]++;
          } else if ( gem[i] == 'G' ) {
            cnt[3]++;
          } else if ( gem[i] == 'T' ) {
            cnt[4]++;
          }
        }
        int ave = gem.size() / 4;
        if ( cnt[1] > ave || cnt[2] > ave || cnt[3] > ave | cnt[4] > ave ) {
          cout << "===" << endl;
        } else {
          string ans = gem;
          for ( int i = 0; i < ans.size(); i++ ) {
            if ( ans[i] == '?' ) {
              for ( int k = 1; k <= 4; k++ ) {
                if ( cnt[k] < ave ) {
                  ans[i] = aph[k];
                  cnt[k]++;
                  break;
                }
              }
            }
          }
          cout << ans << endl;
    
    
        }
    
      }
    
      return 0;
    }

Servers CodeForces - 747C

模拟暴力题 贪心

instsk 记录工人可以开始工作的时间

每次判多少个工人有空

#include <bits/stdc++.h> 
using namespace std; 
const int MAX_N = 100010; 
struct Task { int t, k, d; }; 
Task tasks[MAX_N]; 
int N, q; 
int intask[111]; 
int main() { 
    scanf ( "%d%d", &N, &q ); 
    memset ( intask, 0, sizeof intask ); 
    int left = N; 
    for ( int i = 0; i < q; i++ ) 
    { 
        scanf ( "%d%d%d", &tasks[i].t, &tasks[i].k, &tasks[i].d ); 
    } 
    for ( int i = 0; i < q; i++ ) { 
        int cnt = 0; 
        int sum = 0; 
        for ( int j = 1; j <= N; j++ ) { 
            if ( cnt >= tasks[i].k ) { 
                break; 
            } 
            if ( intask[j] < tasks[i].t ) { 
                cnt++; } 
        } 
        if ( cnt >= tasks[i].k ) { 
            cnt = 0; 
            for ( int j = 1; j <= N; j++ ) { 
                if ( cnt >= tasks[i].k ) { 
                    break; 
                } 
                if ( intask[j] < tasks[i].t ) { 
                    cnt++; 
                    intask[j] = tasks[i].t + tasks[i].d - 1; 
                    sum += j; } } printf ( "%d\n", sum ); 
                } else { 
                    printf ( "-1\n" ); 
                } 
    } 
    return 0;              
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值