首页 > 其他分享 >2024/10/20 模拟赛总结

2024/10/20 模拟赛总结

时间:2024-10-21 21:42:30浏览次数:1  
标签:10 20 gr int kMaxN 2024 freopen push dis

\(0+0+0+0=0\),没考

#A. 袜子分配

直接大眼找规律,得到 \(n\) 双袜子期望为 \(\frac{n}{2n-1}\)

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;
using DB = long double;

DB n;

int main() {
  freopen("socks.in", "r", stdin), freopen("socks.out", "w", stdout);
  cin >> n, cout << fixed << setprecision(10) << n / (n + n - 1) << '\n';
  return 0;
}

#B. 艰难睡眠

有点像选种子的那题

枚举牛牛睡觉的时间,用 multiset 维护单调队列,像那道题差不多的方法查一下就可以了

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 5e3 + 5, kMaxM = 2e3 + 5;

int n, m, k, a[kMaxN], b[kMaxN], c[kMaxN][kMaxM << 1], f[kMaxN], sz, ans = 1e9;
multiset<int> s;

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  freopen("sleep.in", "r", stdin), freopen("sleep.out", "w", stdout);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    cin >> a[i] >> b[i];
  }
  for (int i = 1; i <= n; i++) {
    if (k + b[i] > m) {
      return cout << "-1\n", 0;
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> c[i][j], c[i][j + m] = c[i][j];
    }
    sz = m - b[i] - k + 1, s.clear();
    for (int j = 1; j <= m << 1; j++) {
      s.insert(c[i][j]);
      if (s.size() == sz) {
        int e = (b[i] + j) % m == 0 ? m : (b[i] + j) % m;
        f[e] += *s.begin(), s.erase(s.find(c[i][j - sz + 1]));
        if (e == b[i] + sz - 1) {
          break;
        }
      }
    }
  }
  for (int i = 1; i <= m; i++) {
    ans = min(ans, f[i]);
  }
  cout << ans << '\n';
  return 0;
}

#C. 路径难题

考的就是建图

每条公交车线路建一个点,把这个点连向所有有向公交车线路的点连一条边

存下每个出租车线路的整数和余数,在 dij 时枚举接下来的点是否走公交车如果是,则把余数清零,否则加上并继续转移即可

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;
using LL = long long;

const int kMaxN = 2e5 + 5;

struct P {
  int x;
  LL f, g;
  LL Calc() const { return f + !!g; }
  bool operator<(const P &o) const {
    return Calc() != o.Calc() ? Calc() < o.Calc() : (f != o.f ? f < o.f : g < o.g);
  }
  bool operator>(const P &o) const {
    return Calc() != o.Calc() ? Calc() > o.Calc() : (f != o.f ? f > o.f : g > o.g);
  }
};

int n, m, k, r, qtot, sz;
LL f[kMaxN], g[kMaxN];
vector<pair<int, LL>> gr[kMaxN];
vector<int> vec;
priority_queue<P, vector<P>, greater<P>> q;

LL Solve(int s, int t) {
  for (; !q.empty(); q.pop()) {
  }
  q.push((P){s, 0, 0}), fill(f, f + kMaxN, 1e9), fill(g, g + kMaxN, 0), f[s] = g[s] = 0;
  for (P u; !q.empty();) {
    u = q.top(), q.pop();
    if ((P){u.x, f[u.x], g[u.x]} < u) {
      continue;
    }
    (u.x > sz) && (u.g && (u.f++, u.g = 0));
    for (auto [v, w] : gr[u.x]) {
      LL dis = u.g + w, cos = dis / r + u.f;
      dis %= r;
      if ((P){v, cos, dis} < (P){v, f[v], g[v]}) {
        q.push((P){v, cos, dis}), f[v] = cos, g[v] = dis;
      }
    }
  }
  return f[t] + !!g[t];
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  freopen("path.in", "r", stdin), freopen("path.out", "w", stdout);
  cin >> n >> m >> k >> r >> qtot, sz = n;
  for (int i = 1, u, v, w; i <= m; i++) {
    cin >> u >> v >> w, gr[u].push_back({v, w}), gr[v].push_back({u, w});
  }
  for (int i = 1, t, c; i <= k; i++, vec.clear()) {
    cin >> t >> c;
    for (int j = 1, in; j <= t; j++) {
      cin >> in, vec.push_back(in);
    }
    n += 2;
    for (int x : vec) {
      gr[x].push_back({n - 1, c * 1ll * r}), gr[n].push_back({x, 0});
    }
    gr[n - 1].push_back({n, 0});
  }
  for (int S, T; qtot; qtot--) {
    cin >> S >> T, cout << Solve(S, T) << '\n';
  }
  return 0;
}

#D. 牛半仙的妹子序列

不会吉司机

标签:10,20,gr,int,kMaxN,2024,freopen,push,dis
From: https://www.cnblogs.com/bluemoon-blog/p/18490460

相关文章

  • 20222315 2024-2025-3 《网络与系统攻防技术》实验三实验报告
    1.实验内容通过多次加密、文件格式欺骗、填充、加壳等技术实现shellcode免杀,产生恶意程序,并尝试通过杀毒软件,不被杀毒软件查杀。1、通过使用msf编码器,用msfvenom命令生成exe,jar等文件。2、使用veil、夹壳工具来尝试让shellcode实现免杀:3、使用C+shellcode编程;4、尝试将文件......
  • CSP2024 前集训:csp-s模拟12
    前言咕了好久才写,当时又发烧了所以没有交。虽然有两道签,但一道时计算几何一道放了T4都没打,T1赛时猜到结论和先看T4的都赢麻了,T1赛时\(π\)只会背倒第九位精度炸了暴力都不对。剩下的题当天太难受了都没改,改的两道都是specialjudge哎?T1小h的几何九点圆圆心的证......
  • 10.21
    没时间写题了,写点题解。一道题写了一晚上,效率有点低。。。多校A层冲刺NOIP2024模拟赛09区间给定一个长度为\(N\)的数列\(A_1,A_2,\dots,A_N\)和一个长度为\(N−1\)的数列\(B_2,B_3,\dots,B_N\)。有\(Q\)个询问,每次询问是一个区间\([L_i,R_i]\)。请你求出有多少二元......
  • P10724 [GESP202406 七级] 区间乘积,洛谷id:sxshm
    题解一、分析看看标签:数论,再看题目:完全平方。这不是质因数分解的标配吗?继续看数据范围:1≤ai......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛10
    前言不想说啥了最简单的一题是紫,去死吧只改了T1、T2,T2原题翻译和赛时题面描述都很唐,赛后断断续续加了好多hack。T1岛屿设\(f_{a,b}\)表示\(a\)条两端同色链,\(b\)条两端异色链时连通块数量的期望。红红蓝蓝相连得到红蓝\(\tof_{a-1,b+1}\)。红红红蓝相连得到红红......
  • 20240917【省选】模拟
    难说T1暴力可以写dp只要你学过线性基那么你就会想怎么用线性基做,显然是要套点数据结构维护的。你要知道两个线性基可以在\(O(\log^2n)\)的时间内合并,得到的线性基是原来两个的交。可以用线段树维护,复杂度\(O((n+q)\logn\log^2a)\),难说能不能过。没有修改,所以考虑用常熟......
  • VS2022安装OpenGL (GLUT)
    VS2022安装OpenGL(GLUT)下载GLUT并解压安装打开VS2022根目录下的include文件夹:...\2022\VC\Tools\MSVC\14.31.31103\include在这里创建一个名为gl的文件夹在gl文件夹中放入glut.h文件打开VS2022根目录下的lib文件夹:xxx\VS2022\VC\Tools\MSVC\14.31.31103\lib打开其中的......
  • 1107. 每日新用户统计
    力扣题目跳转(1107.每日新用户统计-力扣(LeetCode))Traffic 表:+---------------+---------+|ColumnName|Type|+---------------+---------+|user_id|int||activity|enum||activity_date|date|+---------------+---------+......
  • [20241021]使用gdb查看修改内存地址以及相关值.txt
    [20241021]使用gdb查看修改内存地址以及相关值.txt--//执行oradebugpoke报错,感觉oracle已经禁止这类hack操作。1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION              ......
  • 10.21 ~ 10.27
    10.21Day-4快CSP啦……话说真的应该这么早就开始记“Dayx”吗为啥这几天这么冷啊要冻死了......