博客
关于我
B. Omkar and Infinity Clock
阅读量:150 次
发布时间:2019-02-27

本文共 1665 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要对给定的数组进行k次操作,每次操作包括将数组中的每个元素替换为当前最大值减去该元素。通过分析,我们发现数组会在两次操作后进入一个循环模式,因此我们可以利用这一特性来优化计算过程。

方法思路

  • 第一次操作:计算数组的最大值d,然后将每个元素替换为d减去该元素,得到新数组b。
  • 第二次操作:计算数组的最大值d,再次将每个元素替换为d减去该元素,得到新数组c。
  • 比较数组:检查数组b和c是否相同。如果相同,无论k的值如何,结果都是c。否则,根据k的奇偶性决定最终的数组状态:如果k是奇数,结果为b;如果是偶数,结果为c。
  • 这种方法避免了在k次操作中重复计算,能够在O(n)时间内解决问题,适用于大范围的n和k。

    解决代码

    #include 
    using namespace std;int main() { int t; cin >> t; for (int test_case = 0; test_case < t; ++test_case) { int n, k; cin >> n >> k; ll a[n]; for (int i = 0; i < n; ++i) { cin >> a[i]; } // 第一次操作得到数组b ll d = max(a); ll b[n]; for (int i = 0; i < n; ++i) { b[i] = d - a[i]; } // 第二次操作得到数组c ll d2 = max(b); ll c[n]; for (int i = 0; i < n; ++i) { c[i] = d2 - b[i]; } // 判断b和c是否相同 bool isSame = true; for (int i = 0; i < n; ++i) { if (b[i] != c[i]) { isSame = false; break; } } if (isSame) { for (int i = 0; i < n; ++i) { cout << c[i] << " "; } } else { if (k % 2 == 1) { for (int i = 0; i < n; ++i) { cout << b[i] << " "; } } else { for (int i = 0; i < n; ++i) { cout << c[i] << " "; } } } cout << endl; }}

    代码解释

  • 读取输入:读取测试用例的数量t,然后逐个处理每个测试用例。
  • 第一次操作:计算数组的最大值d,然后生成数组b。
  • 第二次操作:计算数组b的最大值d2,生成数组c。
  • 比较数组:检查b和c是否相同。如果相同,输出c;否则,根据k的奇偶性输出b或c。
  • 输出结果:根据判断结果输出最终数组。
  • 这种方法确保了在处理大范围数据时的效率和正确性。

    转载地址:http://ulib.baihongyu.com/

    你可能感兴趣的文章
    Open vSwitch实验常用命令
    查看>>
    Open WebUI 忘了登入密码怎么办?
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    opencv Mat push_back
    查看>>
    opencv SVM分类Demo
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    opencv1-加载、修改、保存图像
    查看>>
    opencv10-形态学操作
    查看>>