首页 > 其他分享 >《如 何 速 通 一 套 题》5.1bug fixed

《如 何 速 通 一 套 题》5.1bug fixed

时间:2024-09-25 16:03:14浏览次数:1  
标签:5.1 le int long st vis 背包 fixed bug

好吧,那天晚上才发现数据错了,只能咕一下了,现在咕完了

前情提要:5.0

D 补幺梨

\(1 \le m \le 10^8\),\(1 \le n \le 10^7\),一看就不是背包。

那么,以背包的形式出现,但是不是背包,还能是什么呢?

同余最短路。只能是同余最短路。

然后由于 \(n\) 太大了,所以不同的值的数量估计不会很多,最大值估计不会很大,再加上数据随机,随便写写就过了...

然后数据出锅了。

#include <bits/stdc++.h>
#define int ll
using namespace std;
using ll = long long;

const int kInf = 0x3f3f3f3f3f3f3f3f;

struct node {
  int x, v;
  
  bool operator <(const node &b) const {
    return (v == b.v? x < b.x : v < b.v);
  }
};

int n, m, seed, a[10000010], ans;
vector<int> dis, vis;
set<node> st;

void dijkstra() {
  st.insert({0, 0});
  for(; st.size(); ) {
    node tmp = *st.begin();
    st.erase(st.begin());
    vis[tmp.x] = 1;
    for(int i = 2; i <= n; i++) {
      int nv = (tmp.x + a[i]) % a[1], nw = tmp.v + a[i];
      if(nw < dis[nv] && !vis[nv]) {
        if(st.find({nv, dis[nv]}) != st.end()) {
          st.erase(st.find({nv, dis[nv]}));
        }
        dis[nv] = nw;
        st.insert({nv, dis[nv]});
      }
    }
  }
}

signed main() {
  freopen("pear.in", "r", stdin);
  freopen("pear.out", "w", stdout);
  cin >> n >> m >> seed;
  mt19937 rng(seed);
  auto get = [&]() {
    uniform_int_distribution<int> qwq(2, m);
    return qwq(rng);
  };
  for (int i = 1; i <= n; i++) {
    a[i] = get();
  }
  sort(a + 1, a + n + 1);
  n = unique(a + 1, a + n + 1) - a - 1;
  dis.resize(a[1]), vis.resize(a[1]);
  fill(dis.begin() + 1, dis.end(), 0x3f3f3f3f3f3f3f3f);
  dijkstra();
  for(auto i : dis) {
    ans = max(ans, i - a[1]);
  }
  cout << ans << '\n';
  return 0;
}

标签:5.1,le,int,long,st,vis,背包,fixed,bug
From: https://www.cnblogs.com/leavenothingafterblog/p/18431535/speedrun_v5-1bugfixed

相关文章

  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.7.0发布 新增各项优化与BUG修复
    GZY.Quartz.MUI(基于Quartz的UI可视化操作组件)2.7.0发布新增各项优化与BUG修复 前言时隔大半年,终于抽出空来可以更新这个组件了(边缘化了,大概要被裁员了)2.7.0终于发布了~更新内容:1.添加API类任务的超时时间,可以通过全局配置也可以单个任务设置2.设置定时任务日......
  • 6.5.1嵌套规则/布尔对象
    嵌套规则下面案例:这种混合模式设计模拟了一个具有衍射功率的透镜和一个没有衍射功率的中心区域。通过首先在非顺序组件编辑器中定义一个衍射光栅(对象1)来模拟透镜的全部范围,可以很容易地实现这个几何图形。在上面的图像中,这是由镜头更大的灰色区域表示的。然后,我们可以在NSCE中......
  • 15.10 在k8s部署grafana-deployment并导入k8s大盘
    本节重点介绍:grafanadeployment部署k8s大盘导入准备yaml部署工作1.修改yaml中的节点选择器标签k8s-node01改为你自己的节点2.在节点上创建数据目录mkdir-pv/data/grafana3.部署grafana#部署kubectlapply-fdeployment.yaml#检查[root@prome-master01grafana]#ku......
  • 3.5.1 发送并处理IPIPE_CRITICAL_IPI
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!3.5.1发送并处理IPIPE_CRITICAL_IPI      __ipipe_init()最核心的就是__ipipe_enable_pipeline(),接下来对其展开分析!__ipipe_enable_......
  • Advanced .Net Debugging 11:完结篇
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第十一篇文章,也是这个系列的最后一篇了。我已经把原书的前八章内容全部写完了,本来打算继续写第九章和第十章的内容,后来我放弃逐章逐节的编写,选择了将两章的内容进行过滤后,合为一篇,只把重要的内容包含进来的做法。原......
  • 五、I/O与网络编程-5.1、I/O基础
    5.1、I/O基础5.1.1、Java有几种文件拷贝方式,哪一种效率最高?答:以下是三种不同方式的Java代码示例:使用字节流进行传输:可以使用FileInputStream和FileOutputStream类来完成文件的读取和写入,逐字节地拷贝文件内容。这种方式比较简单,但效率较低,特别是对于大文件而言。示例:i......
  • 修正中文控件名称时IDE代码提示出错的Bug
    根据之前的方法增加中文控件名称后发现中文控件名称IDE代码提示”Error:identifiernotfound:“,不能显示控件的方法/属性。 解决方法:打开lazarus\components\codetools\customcodetool.pas添加红色代码部分(lazarus3.4在第1753行)//readatomifIsStringConstantthe......
  • C#——fixed用法
    1.fixed语句*固定用于指针操作的变量;*可防止垃圾回收器重新定位可移动变量,并声明指向该变量的指针;*固定变量的地址,在语句的持续时间内不会更改*fixed语句中,只能使用声明的指针,声明的指针是只读的,无法修改*fixed语句只能在不安全的上下文中使用staticvoidMain(str......
  • uart loglevel和pr_debug的区别
    pr_debug是Linux内核中用于打印调试信息的宏,它的行为会根据编译时的配置有所不同。如果定义了CONFIG_DYNAMIC_DEBUG配置选项,pr_debug会扩展为dynamic_pr_debug,这允许在运行时动态地控制调试信息的输出。如果没有定义CONFIG_DYNAMIC_DEBUG,但定义了DEBUG,则pr_debug等同于......
  • 日常唐氏Bug合集
    数组空间一定要开够,只要在限制内就随便开,宁可开大数据范围不确定就全局\(longlong\)想清楚状压/哈希情况下**\(0\)是否产生“不存在”与第一项的冲突,想清楚边界是否有一定意义**考虑线段树\(pushup\)时左右区间是否有先后/依赖关系运算符先后关系:小括号()>逻辑非!......