Codeforces Round #782 (Div. 2)-D. Reverse Sort Sum

2023-05-16

在这里插入图片描述

传送门:https://codeforces.com/contest/1659/problem/D

思路:树状数组,参考https://blog.csdn.net/weixin_46870692/article/details/124280729

  • 利用 sum{ci}/n可求出 1 的数量 m
    在这里插入图片描述
  • B矩阵右上三角形的值为a[i]的原始值,考虑用来构建a[i]
  • 对于Bi来说,若前 i 项有 m 个1,那么 从 [i-m+1,i]处都是1
  • 用末尾 n到1构建,对于 a[i], 右上角形的 a[i]有 n-(n-i+1) 个 , 而 下三角对其构成的影响为 Bi 到 Bn 的
    i 处的1总数x,这个可以通过树状数组每次更新查询,a[i]=(c[i]-x)/(n-(n-i+1))​, 同时更新m -=a[i]

code:

#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<map>
using namespace std;
typedef long long LL;
typedef pair<int,int> pr;

const int MAX_N=2e5+5;
int n,m,T;
int d[MAX_N];
int C[MAX_N],cn;
int res[MAX_N];

int lowbit(int x);
void update(int id,int x);
int query(int id);

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    cin>>T;
    while(T--){
        cin>>n;
        cn=n;
        LL sum=0;
        for(int i=1;i<=n;++i)
        {
            cin>>d[i];
            sum+=d[i];
            C[i]=0;
        }
        m=sum/n;
        for(int i=n,j=1;i>1;++j,--i)
        {
            update(i-m+1,1);
            res[i]=(d[i]-query(i))/(n-j);
            m-=res[i];
        }
        res[1]=m;
        for(int i=1;i<n;++i)
            cout<<res[i]<<" ";
        cout<<res[n]<<endl;
    }

	return 0;
}

int lowbit(int x){
    return x&(-x);
}

void update(int id,int x){
    while(id<=cn){
        C[id]+=x;
        id+=lowbit(id);
    }
}

int query(int id){
    int res=0;
    while(id>0){
        res+=C[id];
        id-=lowbit(id);
    }
    return res;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Codeforces Round #782 (Div. 2)-D. Reverse Sort Sum 的相关文章

  • 反转 DOMNodeList 中项目的顺序

    你好 我正在制作 RSS 阅读器并且正在使用 DOM 现在我卡住了 试图反转 DOMNodeList 中项目的顺序 我可以用 2 个周期来完成 一个周期将其作为数组 另一个周期用于rsort 有没有办法反转 DOMNodeList 中的顺序
  • 使用 JSCH Java 反向 SSH 隧道 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否可以使用 JSCH 进行反向 ssh 连接 如果不是 是否有其他纯 Java 库可以用来进行反向隧道 SSH 连接 我想模仿的命令类似于 ssh
  • 我如何在原型工作中得到“this = this”

    好吧 偷看 所以我知道弄乱原型是不好的做法 但无论如何 Array prototype rev function this reverse 工作正常 更新源数组变量 ary 如预期 例如 ary 123 456 ary rev result
  • 按自然降序对目录文件名数组进行排序

    我有一个要按自然降序返回的内容目录 我在用着scandir and natsort 但添加array reverse 没有结果 我一直在研究结合使用opendir and readdir 以及影响此结果的其他因素 要排序的项目是编号的图像文
  • 需要替代的 Python 列表反向解决方案

    我今天参加了一个工作面试 在此期间 我被要求写下一个反转列表的算法 首先我使用reverse 方法提供了答案 x 1 2 3 4 5 y reversed x for i in y print i 进行面试的高级开发人员问我是否知道另一种方
  • 使用按位移位反转数字

    我正在尝试找到一种方法来反转数字without 将其转换为字符串以求长度 反转字符串并解析回来 运行单独的循环来计算长度 我目前正在这样做 public static int getReverse int num int revnum 0
  • Playframework2就像春天的反向路由

    任何人都可以建议我春季的路由机制 我使用 thymeleaf 作为我的视图 我想在视图中使用类名和方法名作为我的 url 就像在 playframework 中一样 但我喜欢在 spring 中在控制器方法声明之前定义 url 等待您的建议
  • SQL查询输出的逆序

    我有一个无法解决的问题 我使用 PHP 通过我的数据库运行以下命令 strQuery select from LastResult ORDER BY Date DESC LIMIT 10 结果一切正常 符合预期 但是 然后我必须将它们输入折
  • 反转数组顺序

    我正在尝试反转 java 中数组的顺序 在 O n 内使用最少的内存来完成此操作的最有效方法是什么 不需要用代码回答 伪代码就可以了 这是我的思考过程 create a new temp array I think this is a wa
  • 如何在 PowerShell 数组中反转横向

    Given a PowerShell array hashtable1 similar to the following dept Sales SAM Manager SAP Person IT ITM Manager ITS Specia
  • 如何使用正则表达式进行反向搜索?

    例如 我的字符串是 123456789 nn nn oo nn nn mlm nn203 我的目标是 nn 然后 我从末尾到开头匹配字符串 并返回第一个匹配结果及其位置 在这个例子中 结果是nn从 5 开始 以 3 结束 我写了一个简单的函
  • 为什么Python中的元组可以使用reversed但没有__reversed__?

    在讨论中这个答案 https stackoverflow com questions 9449674 how to implement a persistent python list 9449852 9449852我们意识到元组没有 re
  • 反转字符串中每个单词中的字母

    我有一个包含空格分隔单词的字符串 我想颠倒每个单词中的字母而不颠倒单词的顺序 我想my string成为ym gnirts 这应该有效 words explode string words array map strrev words ec
  • 反转列表时出现意外结果

    我需要对下面代码的意外结果进行一些解释 似乎是由于一些错误 reverse b gt b reverse reverse x x reverse x xs last x xs reverse xs Main gt reverse 0 8 2
  • Java字符串数组反转

    我试图反转 java 数组中的所有字符串 但似乎用第一个字符串覆盖了所有字符串 private static void palindrome String s int flag 0 String reverse for int i 0 i
  • 如何在 .COM 可执行文件中以相反顺序打印字符串?

    我刚刚开始学习汇编语言 我正在尝试以相反的顺序打印 hello world 这意味着 dlrow olleh 问题是我只得到第一个字母作为输出 并且顺序仍然相同 没有任何变化 作为一个新手 很多事情对我来说都是未知的 我犯了很多错误 由于缺
  • 如何在 Java 中获得列表的反向列表视图?

    我想在列表上有一个反向列表视图 与List sublist提供列表上的子列表视图 是否有一些函数可以提供此功能 我不想复制该列表 也不想修改该列表 在这种情况下 如果我能在列表上至少获得一个反向迭代器就足够了 另外 我知道如何自己实现这一点
  • awk 反转行和单词

    我对编程语言之类的东西很陌生 所以我必须用 awk 反转文件中的所有行以及这些行中的所有单词并将其打印出来 要反转的 File1 aa bb cc foo 做为 File1 的输出打印应该是这样的 就像 foo 一样 cc bb aa 我在
  • 沿下三角 numpy 数组的每一行翻转非零值

    我有一个下三角数组 如 B B np array 1 0 0 0 25 75 0 0 1 2 7 0 2 3 4 1 gt gt gt B array 1 0 0 0 0 25 0 75 0 0 0 1 0 2 0 7 0 0 2 0 3
  • C:从 char 数组打印会产生错误字符

    K N King s 的解决方案C 编程 现代方法 第二版 第 8 章 编程项目 14 产生不同的输出 包括正确的和错误的 示例如下所示 Reversal of sentence you can t swallow a cage can y

随机推荐