首页 > 编程语言 >CodeForces 1883C Raspberries

CodeForces 1883C Raspberries

时间:2024-07-28 11:18:53浏览次数:8  
标签:int 元素 CodeForces 1883C Raspberries 数组

题目链接:CodeForces 1883C【Raspberries】



思路

       依次枚举,特判k = 4的情况,因为k = 4可以由2个2拼凑起来,这2个2可以不在同一个元素上,如K = 4时,数组a可以为2, 3, 2, 5, 7, 9,此时数组中所有的元素乘积可以被4整除。若k = 4时,此时数组中元素没有可以拆分出2的情况时,所有的数组元素都是奇数,所以取出两个奇数,分别加1,就可以使得数组元素乘积为4的倍数。


代码

#include <bits/stdc++.h>

using namespace std;
const int N = 1e5 + 10;

int a[N];
void solve() {
  int n, k;
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  int ans = 1e7, num = 0;
  for (int i = 1; i <= n; i++) {
    // 计算结果
    ans = min(ans, (a[i] + k - 1) / k * k - a[i]);
    if (k == 4) {
      while (a[i] % 2 == 0 && num <= 1) {
        a[i] /= 2;
        num++;
      }
    }
  }

  if (k == 4 && num == 2) {
    cout << 0 << endl;
  } else if (k == 4 && num == 1) {
    cout << min(ans, 1) << endl;
  } else if (k == 4 && num == 0) {
    cout << min(ans, 2) << endl;
  } else {
    cout << ans << endl;
  }

}

int main() {
  int t;
  cin >> t;
  while (t--) {
    solve();
  }

  return 0;
}

标签:int,元素,CodeForces,1883C,Raspberries,数组
From: https://www.cnblogs.com/againss/p/18327991

相关文章

  • Codeforces Round 962 (Div. 3) A - D详细题解(思路加代码Python,C++(垃圾灰名小白想
             吐槽一下,这次比赛不知道怎么的,可能是div3参加的人比较多吗,代码题解上去后全是inqueue,比赛的过程中我还看了提交的,80多页几千个提交全是inqueue,我的代码等了**半个多小时才运行,然后发现timelimit真的有点搞心态,思路在下一题我还要反过来去优化上一题,不过......
  • Codeforces Round 962 (Div. 3) CDE
    时间:2024-07-27C.Sort原题:C.Sort标签:前缀和题意给定字符串a,b定义\(sorted(a[l..r])\)表示将a的lr区间排序为有序有q次询问,每次给出区间l,r,要求通过操作使\(sorted(a[l..r])==sorted(b[l..r])\)操作为将\(a_i\)变成需要的任意字符,求最少次数思路一开始由于是div3,尝......
  • Codeforces Round 962(Div. 3)
    CodeforcesRound962(Div.3)A.legs题解:简单的贪心,可以对n预处理,将n除以2,此时可将动物视为1,则动物便是1条或两条腿,此时若是奇数才需要鸡,否则全部是牛便是最优解ShowCode#include<bits/stdc++.h>#defineANScout<<ans<<'\n'usingnamespacestd;voidsolve(){......
  • Codeforces Round 962(Div .3)
    CodeforcesRound962(Div.3)A.legs题解:简单的贪心,可以对n预处理,将n除以2,此时可将动物视为1,则动物便是1条或两条腿,此时若是奇数才需要鸡,否则全部是牛便是最优解ShowCode#include<bits/stdc++.h>#defineANScout<<ans<<'\n'usingnamespacestd;voidsolve(){......
  • 【做题笔记】板刷 CodeForces
    CF1987DWorldisMine第一想法是贪心的决策,考虑到是博弈论,每一轮决策肯定都是最优的。显然贪心做法假掉。发现问题具有最优子结构与后效性,考虑dp。将\(a_i\)数组排序,将相同元素打包成块,块长为\(b_{a_i}\)。设\(f_{i,j}\)表示以第\(i\)个块结尾,剩余决策数为\(j\)的最......
  • Codeforces Round 962 (Div. 3) 题解
    A.Legshttps://codeforces.com/contest/1996/problem/A翻译:农夫约翰的农场又迎来了美好的一天。农夫约翰来到农场后,数了数n条腿。众所周知,农场里只住着鸡和牛,一只鸡有2条腿,而一头牛有4条腿。假设约翰农场主数清了所有动物的腿,那么他的农场里最少有多少动物?思路求最少......
  • Codeforces Round 962 (Div. 3) 补题记录(A~G)
    这场Div.3难度高于平时。A#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=500100;inta[N];signedmain(){intT;scanf("%lld",&T);while(T--){intn;scanf("%lld",......
  • Codeforces Round 961
    省流:运气好没有掉分)B2Bonquet(HardVertion)(CF1995B2)事实上B1都写挂了(尖叫)处理花瓣数相差不超过1的花,可以用map存储每种花的数量,顺序遍历即可(其实是不想排序统计,好麻烦);那么如何计算最终答案呢。。。此处省略我赛时乱七八糟的一堆复杂做法,比较简单的写法是先找到一个可行的......
  • Codeforces 913 div3 A-G
    A题意分析把给定的坐标的那一行和那一列的其他所有坐标都输出来C++代码#include<iostream>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ strings; cin>>s; for(inti=1;i<=8;i++){ if(i+'0'!=s[1])cout<<s[0]<<i<<end......
  • CodeForces 1883A Morning
    题目链接:CodeForces1883A【Morning】思路    模拟,特判当密码中的某个元素为0时,用10减去当前光标的位置,并修改光标的位置为当前元素,再操作依次显示当前元素。对于其他情况则直接使用光标的位置减去目标位置,修改光标位置为当前元素,然后再操作一次显示当前元素。代码#......