首页 > 其他分享 >[ARC085E] MUL

[ARC085E] MUL

时间:2023-03-07 19:01:40浏览次数:25  
标签:ch int namespace ARC085E isdigit MUL getchar

[ARC085E] MUL

随机化贪心初探,真不错。

有一个显然的贪心:每次选一个数,考虑删去它的倍数是否能使答案更优,然后贪心做,这样显然是错的。

但是我们乱搞一下,每次做之前随机一个排列,按照排列的顺序做,然后做个好多次,就对了!

参考代码:

#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long LL;
 
namespace IO {
  #define isdigit(x) (x >= '0' && x <= '9')
  template<typename T>
  inline void read(T &x) {
    x = 0; char ch = getchar(); int f = 0;
    for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;
    for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
    if(f) x = -x;
  }
  template<typename T>
  inline void write(T x) {
    if(x < 0) putchar('-'), x = -x;
    if(x > 9) write(x / 10);
    putchar(x % 10 + '0');
  }
  #undef isdigit
}
using namespace IO;
 
const int N = 110;
int n, a[N], tp[N], p[N];
 
mt19937 rnd(time(0));
 
int main() {
  read(n);
  LL s = 0;
  for(int i = 1; i <= n; ++i)
    read(a[i]), p[i] = i, s += a[i];
  int T = 50000;
  LL ans = 0;
  while(T--) {
    shuffle(p + 1, p + n + 1, rnd);
    for(int i = 1; i <= n; ++i) 
      tp[i] = 0;
    LL cur = 0;
    for(int k = 1; k <= n; ++k) {
      int i = p[k];
      LL sum = 0;
      for(int j = i; j <= n; j += i) 
        if(!tp[j]) sum += a[j];
      if(sum < 0)
        for(int j = i; j <= n; j += i)
          if(!tp[j]) tp[j] = 1, cur += a[j];
    } 
    ans = max(ans, s - cur);
  }
  printf("%lld\n",ans);
  return 0;
}

标签:ch,int,namespace,ARC085E,isdigit,MUL,getchar
From: https://www.cnblogs.com/DCH233/p/17189199.html

相关文章

  • Clickhouse实现累计求和cumulative sum
    源表数据如下:timeprovinceorder_cnt20200601shandong10020200601jiangsu20020200601zhejiang30020200602shandong20020200602jiangsu30020200602zhejiang40020200603shandon......
  • RT-Thread 模拟器 simulator 搭建 LVGL 的开发调试环境
    前言RT-Thread当前的版本:4.1.0,通过简单的配置就可以支持最新的LVGL图形库版本,LVGL图形库以软件包的方式加入工程LVGL可以认为是当前开源、免费的优秀GUI的图形库,对内存的......
  • riscv co-sim:riscv内核开发集成simulator仿真
    riscvco-sim:riscv内核开发集成simulator仿真1.原理a.确定对比粒度RTLtraceinterfacesimulatorstepinterfaceDPIinterfaceb.系统构建simulator编译生成共......
  • 基于simulink的自适应PID控制器仿真
    1.算法描述自适应PID控制,是指自适应控制思想与常规PID控制器相结合形成的自适应PID控制或自校正PID控制技术,人们统称为自适应PID控制。最常用的自适应控制算法有:最小方......
  • 基于simulink的自适应PID控制器仿真
    1.算法描述       自适应PID控制,是指自适应控制思想与常规PID控制器相结合形成的自适应PID控制或自校正PID控制技术,人们统称为自适应PID控制。        ......
  • multi-signature
    多签名multisignature涉及多方签名主要考虑以下几个性质:Privacy:保护签名者的隐私Tracebility(Accountablity):必要时可以通过一些方法追溯到参与签名的人群签......
  • Java上传二进制(multipart/form-data)_Demo
    这里做个记录,通过此次问题的解决,弄清POST同时传文件及参数时,底层到底是怎么组成,文件流及参数是怎么分隔组成,及分隔符如何写入流。好,废话不多说,直接上代码,此代码配置好自己......
  • 【嵌入式】MATLAB的Simulink工具学习目录
    入门建模仿真视频教程1、控制策略开发与MATLAB应用2、Simulink基础模块库讲解教程3、自动生成代码技术讲解4、SimulinkPID控制模型例子模糊PID控制、仿真模型、模糊......
  • 基于matlab和simulink的小型无人机集群仿真演示平台
    1.算法描述        随着无人机作业自主性、智能化、多任务等方面要求的提高,无人机从单机作业发展到集群作业,对多机集群通信技术提出了更高的要求。采用多架无人机......
  • Abaqus与SOLIDWORKS Simulation对比分析
    一、关于软件SolidWorksSimulation是一个虚拟测试环境,用于分析你的设计,评估其性能并做出决策以提高产品质量。SolidWorksSimulation提供了单一屏幕解决方案来进行应力分......