CSP-S 33

news/2025/10/20 21:53:37/文章来源:https://www.cnblogs.com/HS-fu3/p/19153759

10.17

t1

签到题

注意到约数只有 \(O(\sqrt n)\) 级别,暴力找约数即可。

唐人当然有唐做法啦!

分解质因数+dfs搜约数

反正唐就对了。

code

嘻嘻
#include <bits/stdc++.h>
#define int long long
#define pir pair<int, int>
using namespace std;
int n, m, cnt;
int a[210], ans[210];
int cntt[11], num[11];
map<int, int> mp;
pir node[3000000];inline bool cmp(pir a, pir b) { return a.second < b.second; }inline int km(int a, int b)
{int ans = 1;while (b){if (b & 1)ans *= a;a *= a;b >>= 1;}return ans;
}void dfs(int val, int id, int sum)
{if (sum > n)return;if (id == cntt[0] + 1){if (sum > n)return;bool flag = 1;for (int i = 1; i <= cntt[0]; ++i)if (sum == num[i]){flag = 0;break;}if (flag && val % sum == 0)mp[sum]++;return;}for (int i = 0; i <= cntt[id]; ++i){int nxt = km(num[id], i);if (nxt > n)return;dfs(val, id + 1, sum * nxt);}
}inline void chai(int x)
{int val = x;cntt[0] = 0;for (int i = 2; i * i <= x; ++i){if (x % i == 0){mp[i]++;num[++cntt[0]] = i;while (x % i == 0)x /= i, ++cntt[cntt[0]];}}if (x != 1){num[++cntt[0]] = x, cntt[cntt[0]] = 1;if (x <= n)mp[x]++;}int nnum = 1;dfs(val, 1, 1);
}signed main()
{freopen("div.in","r",stdin);freopen("div.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for (int i = 1; i <= m; ++i)cin >> a[i], chai(a[i]);sort(a + 1, a + 1 + m);for (int pos = 1; pos <= m; ++pos){if (a[pos] > n)break;if (mp[a[pos]])continue;mp[a[pos]]++;for (int i = pos + 1; i <= m; ++i)if (a[i] % a[pos] == 0)mp[a[pos]]++;}mp[1] = m;for (auto y : mp)node[++cnt] = y;ans[0] = n - cnt;for (int i = 1; i <= cnt; ++i)ans[node[i].second]++;for (int i = 0; i <= m; ++i)cout << ans[i] << "\n";return 0;
}

t2

第一眼:背包版题,第二眼:你值域开玩笑呢?

惊人注意力发现虽然值域很大,但答案很小,于是将 dp 数组的下标与所存内容交换,正常预处理 dp 后将其赋成前缀最小值,每次询问二分即可。

code

哈哈
#include <bits/stdc++.h>
using namespace std;
int n, m;
struct node
{int cst, val, tim;
} a[310];
int ans[310];
int dp[310][90010];inline bool cmp(node a, node b) { return a.tim < b.tim; }signed main()
{freopen("market.in", "r", stdin);freopen("market.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i)cin >> a[i].cst >> a[i].val >> a[i].tim;sort(a + 1, a + 1 + n, cmp);memset(dp, 63, sizeof(dp));dp[0][0] = 0;int l = 1, r = 0;for (int k = 1; k <= 300; ++k){while (r <= n && a[r].tim <= k)++r;int lim = r - 1;for (int i = 0; i <= 90000; ++i)dp[k][i] = dp[k - 1][i];for (int i = l; i <= lim; ++i)for (int j = 90000; j >= a[i].val; --j)dp[k][j] = min(dp[k][j], dp[k][j - a[i].val] + a[i].cst);l = r;}for (int i = 1; i <= 300; ++i)for (int j = 90000; j; --j)if (dp[i][j + 1] < dp[i][j])dp[i][j] = dp[i][j + 1];int t, up;while (m--){cin >> t >> up;int ans = upper_bound(dp[t], dp[t] + 1 + 90000, up) - dp[t];cout << ans - 1 << "\n";}return 0;
}

t3

神秘 dp

改不动了

喝的

详见QED代码

t4

赛时紧急打了个链(还是错的),喜提 8pts ,但是它输出 0 能有 37pts 你逗我呢???

听Wy_x 讲的不用线段树写法听懂了,但打的时候就是感觉不对,像 大分 一样,最后还是写了线段树。

我们将边权(边的归属权)下放,拆点,将每个点拆为两个,分别表示边的两种方向。

然后就一堆连边,find ,跳,判无解阿巴阿巴 。

实在不想写了,还是看代码吧。

code

呜呜
#include <bits/stdc++.h>
#define int long long
#define lid (id << 1)
#define rid (id << 1 | 1)
using namespace std;
const int mod = 1e9 + 7;
const int N = 3e5 + 10;
int n, m;
vector<int> e[N];
int Fa[N << 1];
int dep[N], siz[N], fa[N], son[N];
int top[N], tot, id[N], fid[N];
struct tree
{int l, r;bool flag;
} t[N << 3];
#define lid (id << 1)
#define rid (id << 1 | 1)inline int km(int a, int b)
{int ans = 1;while (b){if (b & 1)ans *= a, ans %= mod;a *= a, a %= mod;b >>= 1;}return ans;
}inline int find(int x) { return x == Fa[x] ? x : Fa[x] = find(Fa[x]); }
inline void connect(int x, int y)
{int fx = find(x), fy = find(y);if (fx != fy)Fa[fx] = fy;
}inline void merge(int u, int v, bool opt)
{if (opt)connect(u, v + n), connect(u + n, v);elseconnect(u, v), connect(u + n, v + n);
}void dfs1(int x, int f)
{siz[x] = 1, fa[x] = f, dep[x] = dep[f] + 1;for (auto y : e[x]){if (y == f)continue;dfs1(y, x);siz[x] += siz[y];if (siz[y] > siz[son[x]])son[x] = y;}
}void dfs2(int x, int t)
{top[x] = t;id[x] = ++tot;fid[tot] = x;if (!son[x])return;dfs2(son[x], t);for (auto y : e[x])if (y != fa[x] && y != son[x])dfs2(y, y);
}inline int LCA(int u, int v)
{while (top[u] != top[v]){if (dep[top[u]] < dep[top[v]])swap(u, v);u = fa[top[u]];}return dep[u] < dep[v] ? u : v;
}void build(int id, int l, int r)
{t[id].l = l, t[id].r = r;if (l == r)return;int mid = (l + r) >> 1;build(lid, l, mid);build(rid, mid + 1, r);
}void update(int id, int l, int r)
{if (l > r)return;if (t[id].flag)return;if (t[id].l == t[id].r){merge(fa[fid[t[id].l]], fid[t[id].l], 0);t[id].flag = 1;return;}int mid = (t[id].l + t[id].r) >> 1;if (mid >= l)update(lid, l, r);if (mid < r)update(rid, l, r);t[id].flag = t[lid].flag & t[rid].flag;
}signed main()
{freopen("usmjer.in","r",stdin);freopen("usmjer.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i)Fa[i] = i, Fa[i + n] = i + n;for (int i = 1, u, v; i < n; ++i){cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs1(1, 0);dfs2(1, 1);build(1, 1, n);int u, v;while (m--){cin >> u >> v;int lca = LCA(u, v);if (u != lca && v != lca)merge(u, v, 1);while (top[u] != top[lca]){update(1, id[top[u]] + (fa[top[u]] == lca), id[u]);u = fa[top[u]];}update(1, id[lca] + 2, id[u]);while (top[v] != top[lca]){update(1, id[top[v]] + (fa[top[v]] == lca), id[v]);v = fa[top[v]];}update(1, id[lca] + 2, id[v]);}int tot = 0;for (int i = 2; i <= n; ++i){int u = find(i), v = find(i + n);if (u == v){cout << 0;return 0;}tot += (i != u) + (i + n != v);}cout << km(2, n - 1 - (tot >> 1)) << "\n";return 0;
}

不知道为什么感觉很累,大抵是被t4恶心到了。

累了累了,先歇会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSP-S 29

10.11 只记录了当时认为有意义的题10.11 t3 赛后才看懂题面 \(\ldots\) 妈妈我会推式子!(骗你的其实我不会) 推完式子就过了。 考虑先求出 \(1\) 为根时的答案,之后换根即可。 开始拆贡献ing 对于根结点,由于一开…

10.20每日总结

今天主要的课程有软件设计,软件开发案例分析,大数据技术,物联网工程。完成了好几项作业,满课还是太忙太累了,软考网课开始第三章。

CSP-S 31

10.1410.14 看大家得分跟信心赛似的,就我一个唐诗写了一场暴力 \(\ldots\) 开场t1没切出来就开始慌了,之后就想着多打暴力拿部分分,导致t2得出的性质没有推广,t3,t4暴力都没写出来(这俩得出性质/部分性质后比暴力…

2025网络安全振兴杯wp

振兴杯wp web1 神探狄仁杰在js和源代码,以及关于里面有flag的base64字段 css中关于的源代码中然后解密就行了 web2Darksale 这个是一个原型链污染 我们发现购买的金额可以被改变我们发现改价格后会回显出来我们尝试修…

ES原理、zookeeper、kafka

ES原理、zookeeper、kafkaES高级 ES底层原理 协调节点是 Elasticsearch 中接收客户端请求、将请求转发到相关数据节点、并汇总最终结果返回给客户端的中心路由节点 Cluster State 是 Elasticsearch 集群的元数据大脑,…

CF1606E Arena 题解(动态规划)

考虑设 \(f_{i,j}\) 表示现在存活 \(i\) 个人,血量最大的人为 \(j\)。这么设是因为注意到有没有胜者其实之和血量最大的是谁,以及有多少个血量最大的有关。 边界情况 \(f_{1,i}=0\)。 考虑转移。如果 \(j<i\),则…

服务器CPU市场概况2025

2025年的服务器CPU市场正处于关键转型期。传统的x86架构(以Intel和AMD为代表)依然占据主导,但基于Arm的解决方案正在快速崛起。随着人工智能(AI)、云计算和高性能计算(HPC)的普及,CPU的设计趋势正在朝着能效优…

CSP-S 24

9.21~9.2?9.21 今天开始集训告一段落了,去补文化课一周。 如果写不完回来会补(?) 115=100+0+15 t1 先等会 t2 先等会 t3 9.22:回来补债了 \([\gcd(i,j)=1]=[\gcd(p_i,p_j)=1]\) 这个限制初看好像很难转化,只能猜…

正睿 2025 NOIP20 连测 Day5 做题记录

T1给 \(m\) 个质数,第 \(i\) 个质数 \(p_i\) 出现了 \(n_i\) 次。求一种划分质数的方案,使得第一个集合的和等于第二个集合的乘积。萌萌题,注意到最后相当于是要求 \(p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alp…

29-腾讯云COS接入指南与价格说明

腾讯云对象存储(COS)接入流程与价格说明 一、腾讯云COS简介 腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、高可靠性和高安全性等特点。用户可…

LLM学习记录DAY7

📘今日LLM学习笔记总结 一、大模型解码策略 1.1 自回归解码定义:逐词生成下一个词,基于已生成内容继续生成。 流程:输入词序列 ( u ) 重复:模型输出下一个词的概率分布 ( P ) 采样或选择下一个词 ( u ) 将 ( u )…

CSP-S 23

9.179.17 109=9+100 赛时将剩余时间“明智”的投入t4,结果就是后两题没分。 t1 三维前缀和+二分答案 写了个假的kdt调了2h... 二分显然是好想的。 看值域考虑复杂度: \(256\times 256\times 256\times 8=134217728\) …

Recall

可惜了,这静谧的长夜。 是夕阳,余晖照在我的肩上。 惨白的灯喧哗着。 昏黑,安静的可怕。 滴答,滴答。 滴答,滴答。 昏黑,安静的可怕。 惨白的灯喧哗着。 是夕阳,余晖照在我的肩上。 可惜了,这静谧的长夜。

CSP-S 20

9.119.11 今天是挂分的好日子~~~ 101=0+10+91 t1 追逐游戏 (chase) 倍增+k祖先 算了不想写了....... 第2次没保存然后死机丢失了... 不难理解也不难实现,细节手模即可。 t1 就这样吧,看代码。 code点击查看代码 #…

Flutter应用设置插件 - 轻松打开iOS和Android系统设置

一个功能强大的Flutter插件,支持从应用中直接打开iOS和Android系统的各种设置页面,包括位置、Wi-Fi、通知、蓝牙等系统设置,简化了用户设置跳转流程。app_settings 一个用于从Flutter应用中打开iOS和Android手机设置…

CSP-S 22

9.169.16 原来史可以连着吃 挂了100 t1 简单贪心,不多解释。 没有大样例爆了 code点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; const int inf = 1e18; int minn; int T…

/usr/bin/sudo 二进制文件的权限有问题,导致所有用户都无法使用 sudo

[root@node1 sudoers.d]# su - student [student@node1 ~]$ sudo whoami sudo ls /root -bash: /usr/bin/sudo: Permission denied -bash: /usr/bin/sudo: Permission denied 问题很明确了!在 node1 上,/usr/bin/sud…

MySQL 8.0.43社区版本安装流程

MySQL 8.0.43社区版本安装流程> 1. MySQL的下载 点击MySQL官网地址进入https://www.mysql.com/cn/,选择页面download,选择社区版本下载。选择对应自己主机机型下载Windows或者Linux版本的,这里以Windows版本为例子…