首页 > 其他分享 >[ARC128E] K Different Values

[ARC128E] K Different Values

时间:2023-10-11 21:24:39浏览次数:37  
标签:Different ARC128E frac int cnt Values 块长

[ARC128E] K Different Values

考察 \(k=2\) 的情形,这个很经典,就是绝对众数。这样的话我们发现显然的一个必要条件是 \(\max A_i \le \lceil \frac{n}{k} \rceil\)。进一步,我们按照 \(k\) 为块长分块,还需满足 \(A_i = \lceil \frac{n}{k} \rceil\) 的个数不超过最后一段的块长。

按照 OIer 的直觉,我们断言这就是充要条件,考虑归纳构造,\(n \le k\) 的情形是平凡的。现在考虑填第一个数,如果 \(A_i = \lceil \frac{n}{k} \rceil\) 的个数刚好等于最后一段块长了,那么就把最小的这样的 \(A_i\) 填进去,否则找还能填的最小的填进去,这时候需要后面满足前 \(k - 1\) 个数不能填 \(i\),但是按照我们的分块我们必然可以在后面填好 \(i\) 的位置,然后去掉 \(i\) 的限制后按照归纳假设还是有解的,然后就构造完了。做法就按照构造过程每次填数即可,复杂度 \(O(N \sum A_i)\)。

const int N = 2e5 + 10;
int n, m, k;
int a[N], b[N], vis[N];

int main() {
  read(n, k);
  for(int i = 1; i <= n; ++i) 
    read(a[i]), m += a[i];
  int cnt = 0;
  for(int i = 1; i <= n; ++i) {
    if(a[i] > (m + k - 1) / k) {
      puts("-1");
      return 0;
    } else if(a[i] == (m + k - 1) / k) {
      ++cnt;
    }
  }
  if(cnt > (m - 1) % k + 1) {
    puts("-1");
    return 0;
  }
  for(int i = m; i >= 1; --i) {
    cnt = 0;
    for(int j = 1; j <= n; ++j)
      if(a[j] == (i + k - 1) / k) ++cnt;
    if(i <= m - k) vis[b[m - i + 1 - k]] = 0; 
    if(cnt == (i - 1) % k + 1) {
      for(int j = 1; j <= n; ++j) {
        if(a[j] == (i + k - 1) / k && !vis[j]) {
          --a[j], vis[j] = 1, 
          b[m - i + 1] = j;
          break;
        }
      }
    } else {
      for(int j = 1; j <= n; ++j) {
        if(a[j] && !vis[j]) {
          --a[j], vis[j] = 1;
          b[m - i + 1] = j;
          break;
        }
      }
    }
  }
  for(int i = 1; i <= m; ++i) 
    printf("%d ",b[i]);
  return 0;
}

标签:Different,ARC128E,frac,int,cnt,Values,块长
From: https://www.cnblogs.com/DCH233/p/17758208.html

相关文章

  • Django 数据库--values_list 指定字段取值及 distinct 去重处理
    通过QuerySet会返回model的所有字段,通过obj.field_name即可获取对应字段的数据values():获取某一个或者某几个字段的数据指定字段使用values()指定参数可以仅仅返回相应字段的字典列表,如:name_dict_list=Project.objects.values('name')则name_dict_list= <Q......
  • Go - Remove values from a slice
    Totakeoutthefirstelementoftheslice:numbers:=[]int{3,14,159,26,53,58}numbers=numbers[1:]//removeelement0To takeoutthelastelementoftheslice:numbers:=[]int{3,14,159,2......
  • Go - Insert values into a slice
    Thereisnobuilt-infunctionforinsertion,butyoucanstilluseappendforthetask.Let’ssayyouwanttoinsertthenumber1000betweenelementsatindex2and3,whichareints159and26,respectively:numbers:=[]int{3,14,159,......
  • 告警日志出现"which is different from the number of indexes 4 defined in the MySQ
    问题描述:告警日志出现"whichisdifferentfromthenumberofindexes4definedintheMySQL"报错,如下所示:数据库:MySQL5.7.211、告警日志########################################ErrorDetail########################################23092121:30:00[ERROR]Tablet......
  • a different object with the same identifier value was already associated with th
    数据库更新记录报错:adifferentobjectwiththesameidentifiervaluewasalreadyassociatedwiththesession:[com.miracle.dm.sysmgr.user.model.OrgUserProInfo#4028800b269cc2f301269cc959960007];nestedexceptionisorg.hibernate.NonUniqueObjectException:adiffe......
  • 信息: org.jbpm.JbpmException: closed JbpmContext in different order then they we
    刚接触jbpm 刚才遇到这个错误:closedJbpmContextindifferentorderthentheywerecreated...checkyourtry-finally'saroundJbpmContextsblocks我百思不得其解,网上说是hibernate的session没关闭,在搜索也就是javaeye那几个。查看了源代码有这句话:if(jbpmContext!=......
  • Swift 可选值(Optional Values)介绍
    文章转载于https://blog.csdn.net/zhangao0086/article/details/38640209Optional的定义Optional也是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil。此外,Swift的nil也和Objective-C有些不一样,......
  • 微分平坦(differential flatness)的简易理解
    对于运动控制下的系统建模,如果规划控制的变量太多,产生的维度就太多,如无人机变量为12个,即12维空间,同时规划12个变量不现实,所以考虑使用少数几个变量及其有限阶导数代表其他变量,这样一来只需要对少数几个变量进行规划则可以达到对所有变量规划。  参考:https://zhuanlan.zhihu.c......
  • Proj CDeepFuzz Paper Reading: Automatic differentiation in PyTorch
    Abstract本文:描述automaticdifferentiationmoduleofPyTorch包括:LuaTorch,Chainer,HIPSAutogradTask:Providesahigh-performanceenvironmentondifferentdevices(bothCPUsandGPUs)方法:不用symbolicdifferentiation,而是使用differentiationonpurelyimper......
  • 参数化-单参数@ValueSource
    引入依赖<!--参数化依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.8.1</version><scope>test</scope></dependency......