Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2)(A-C)

简介: A. Sum of 2050

A. Sum of 2050


题意:判断一个数是不是能由2050或者是205010^i构成,求构成所需要的最小的2050的个数是多少。


思路:首先判断-1的情况,就是n%2050!=0,然后每次都想用n减去2050
10^i中i最大的情况。


#define int long long
signed main()
{
  int n, i, j, t;
  cin >> t;
  while (t--) {
    cin >> n;
    int ans = 0;
    if (n % 2050 == 0) {
                int cnt=0;
            while(n!=0){
                int d1=0;
                for(i=0;;i++){
                    d1=2050*quickpow(10,i);
                   if(d1>n) break;
                }
                n-=2050*quickpow(10,i-1);
                cnt++;
            }
            cout<<cnt<<endl;
    }
    else {
      scf1;
    }
  }
  return 0;
}


B. Morning Jogging


题意:其实就是要保证每个所在的行不能移动的情况下,使每一列都有最小的数。


思路:感觉做的复杂了,大概用的map里嵌套pair标机这个位置有没有被放置过,然后优先排序之后最小的挨个放完,再把没放的顺序放下来。


const int maxn = 105;
int ans[maxn][maxn];
int h[maxn];
map<int, int >mo;
struct node {
  int v;
  int idx;
} a[maxn * maxn];
bool cmp(node a, node b) {
  return a.v <  b.v;
}
int main()
{
  int n, m, i, j, t;
  cin >> t;
  while (t--) {
    memset(h, 0, sizeof(h));
    cin >> n >> m;
    int cnt = 0;
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        cin >> a[cnt].v;
        a[cnt].idx = i;
  cnt++;
      }
    }
    sort(a, a + cnt, cmp);
    map<pair<int ,int > , int >mm;
    for (i = 0; i < cnt; i++) {
      if (i < m) {
        ans[a[i].idx][i] = a[i].v;
        mm[make_pair(a[i].idx, i)]++;
      }
      else {
        for (j = 0; j < m; j++) {
          if (mm[make_pair(a[i].idx, j)] == 0) {
            ans[a[i].idx][j] = a[i].v;
            mm[make_pair(a[i].idx, j)] = 1;
            break;
          }
        }
      }
    }
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        cout << ans[i][j] << " ";
      }
      cout << endl;
    }
  }
  return 0;
}


C. Fillomino 2


题意:给出一个矩形的主对角线上的所有值,然后你要挨着填这些数,使得相同的数字n要有n个且必须要相邻,例子如下:


20210425151322164.png


思路:其实很容易想,优先往左填,填不了就往下,哎,比赛的时候想的差不多了,但是实现错了太困了就睡着了=。=


#include<iostream>
#include<map>
#define bugg(a,b) cout<<a<<" "<<b<<endl;
using namespace std;
int mp[505][505];
int a[505];
int n;
void pf() {
  int i, j;
  for (i = 1; i <= n; i++){
    for (j = 1; j <= i-1; j++) {
      cout << mp[i][j] << " ";
    }
    cout << mp[i][j] << endl;
  }
}
bool jg(int x, int y) {
  if (x > 0 && y <= n && y > 0 && x <= n) {
    if (mp[x][y] == 0) {
      return true;
    }
    else
      return false;
  }
  else
    return false;
}
void pull (int n,int i){
  int x=i, y=i;
  int cnt = n-1;
while (cnt--) {
    if (jg(x, y-1) == 1) {
      mp[x][y-1] = n;
      y--;
    }
    else {
      mp[x+1][y] = n;
      x++;      
    }
  }
}
int main()
{
  int  i, j, d;
  cin >> n;
  for (i = 1; i <= n; i++) {
    cin >> a[i];
    mp[i][i] = a[i];
  }
  for (i = 1; i <= n; i++) {
    pull(a[i],i);
  }
  pf();
}
相关文章
|
2月前
|
人工智能 测试技术 C++
Codeforces Round 962 (Div. 3)
Codeforces Round 962 (Div. 3)
|
6月前
Codeforces Round #729 (Div. 2)
【6月更文挑战第4天】在这两个编程问题中,B. Plus and Multiply 要求判断通过加法和乘法操作数组是否能形成目标数 `n`。思路是形如 `x^a + yb = n` 的表达式,如果满足则能构造。C. Strange Function 关注的是找到最小正整数 `x` 使得 `x` 不是 `i` 的因子,计算这些值的和模 `10^9+7`。对于每个 `i`,偶数时 `f(i)` 是 3,奇数时是 2,利用因子与最大公约数计算周期性求和。
36 1
|
机器学习/深度学习 人工智能 移动开发
.Codeforces Round 883 (Div. 3)
Codeforces Round 883 (Div. 3)
|
人工智能 算法 BI
Codeforces Round #179 (Div. 2)A、B、C、D
我们每次加进来的点相当于k,首先需要进行一个双重循环找到k点和所有点之间的最短路径;然后就以k点位判断节点更新之前的k-1个点,时间复杂度降到O(n^3),而暴力解法每次都要进行floyd,时间复杂度为O(n^4);相比之下前述解法考虑到了floyd算法的性质,更好了运用了算法的内质。
57 0
Codeforces Round #192 (Div. 2) (330A) A. Cakeminator
如果某一行没有草莓,就可以吃掉这一行,某一列没有也可以吃点这一列,求最多会被吃掉多少块蛋糕。
50 0
|
机器学习/深度学习 Go
codeforces round 885 (div. 2)
codeforces round 885 (div. 2)
101 0
|
人工智能
Codeforces Round #786 (Div. 3)(A-D)
Codeforces Round #786 (Div. 3)(A-D)
77 0
Codeforces Round 849 (Div. 4)
Codeforces Round 849 (Div. 4)A~G2题解
119 0