20241004

news/2024/10/6 3:53:27/文章来源:https://www.cnblogs.com/libohan/p/18446992

倍数限制(multiple)

注意是一个排列,我们考虑双指针,那么没一个数只会进出两次,由于是排列,所以就是调和集数的时间复杂度

#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e6 + 5;int t, n, k, a[N], cnt[N], ans;bool vis[N];void Solve() {ans = 0;cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> a[i];cnt[i] = vis[i] = 0;}for (int i = 1, j = 1, tot = 0; i <= n; i++) {while (j <= n && tot + cnt[a[j]] <= k) {tot += cnt[a[j]];vis[a[j]] = true;for (int l = a[j] * 2; l <= n; l += a[j]) {cnt[l]++;}j++;}ans = max(ans, (j - i));for (int l = a[i] * 2; l <= n; l += a[i]) {if (vis[l]) {tot--;}cnt[l]--;}vis[a[i]] = false;}cout << ans << "\n";
}signed main() {ios::sync_with_stdio(0);cin.tie(0);freopen("multiple.in", "r", stdin);freopen("multiple.out", "w", stdout);cin >> t;while (t--) {Solve();}return 0;
}

硬币问题(coin)

我们可以选择面值最小的硬币面值,以它作为基准,我们只用考虑模最小值能否被凑出,我们可以跑一边 \(dij\) 记录将一个数凑出最小要多少倍的基准

#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e6 + 5;struct dv {int d, v;bool operator < (const dv &_y) const {return d > _y.d;}
};int n, m, a[N], cnt, dis[N], mod = 100000000, ans;void dij() {priority_queue<dv> q;dis[0] = 1;q.push({1, 0});while (!q.empty()) {if (dis[q.top().v] < q.top().d) {q.pop();continue;}auto cur = q.top();q.pop();for (int i = 1; i <= n; i++) {int v = (cur.v + a[i]) % mod;if (dis[v] > dis[cur.v] + ((cur.v + a[i]) / mod)) {dis[v] = dis[cur.v] + ((cur.v + a[i]) / mod);q.push({dis[v], v});}}}
}signed main() {freopen("coin.in", "r", stdin);freopen("coin.out", "w", stdout);cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> a[i];mod = min(mod, a[i]);}fill(dis, dis + mod + 1, 2e18);dij();for (int i = 0; i < mod; i++) {if (dis[i] > 1e18) {continue;}int tmp = i + (dis[i] - 1) * mod;if (!i) {tmp += mod;}ans += max(0ll, (m - tmp + 1 + mod - 1) / mod);}cout << ans;return 0;
}

区间寻找(interval)

二分加线段树即可

#include <bits/stdc++.h>using namespace std;#define int long longusing Pii = pair<__int128, __int128>;const int N = 1e5 + 5;int n, q, a[N];__int128 tr[3][N * 4], sum[N];void build(int i, int l, int r) {if (l == r) {tr[1][i] = sum[l];tr[2][i] = sum[l];return ;}int mid = (l + r) >> 1;build(i * 2, l, mid);build(i * 2 + 1, mid + 1, r);tr[1][i] = max(tr[1][i * 2], tr[1][i * 2 + 1]);tr[2][i] = min(tr[2][i * 2], tr[2][i * 2 + 1]);
}Pii query(int i, int l, int r, int x, int y) {if (x > y) {return {-1e18, 1e18};}if (l > y || r < x) {return {-1e18, 1e18};}if (l >= x && r <= y) {return {tr[1][i], tr[2][i]};}int mid = (l + r) >> 1;Pii tmp1 = query(i * 2, l, mid, x, y), tmp2 = query(i * 2 + 1, mid + 1, r, x, y);return {max(tmp1.first, tmp2.first), min(tmp1.second, tmp2.second)};
}void Solve() {int w, x, y, u, d;cin >> w >> x >> y >> u >> d;u -= w, d -= w;u += sum[x - 1];d += sum[x - 1];//cout << u << " " << d << "\n";int l = y - 1, r = n;while (l < r) {int mid = (l + r + 1) >> 1;Pii tmp = query(1, 1, n, x, mid);if (tmp.first <= u && tmp.second >= d && tmp.first >= tmp.second) {l = mid;}else r = mid - 1;}if (l < y) {cout << "None\n";}else cout << l << "\n";
}signed main() {ios::sync_with_stdio(0);cin.tie(0);freopen("interval.in", "r", stdin);freopen("interval.out", "w", stdout);cin >> n >> q;for (int i = 1; i <= n; i++) {cin >> a[i];sum[i] = sum[i - 1] + a[i];}build(1, 1, n);Pii tmp = query(1, 1, n, 2, 6);while (q--) {Solve();}return 0;
}

期望长度(ex)

单调栈

#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e5 + 5, mod = 1e9 + 7;int n, a[N], l[N], r[N], ans1[N], ans2[N];int mypow(int a, int b) {int ans = 1;while (b) {if (b & 1) {ans = ans * a % mod;}a = a * a % mod;b >>= 1;}return ans;
}signed main() {ios::sync_with_stdio(0);cin.tie(0);freopen("ex.in", "r", stdin);freopen("ex.out", "w", stdout);cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}stack<int> stk;for (int i = 1; i <= n; i++) {while (!stk.empty() && a[stk.top()] <= a[i]) {stk.pop();}if (!stk.empty()) {l[i] = stk.top() + 1;}else l[i] = 1;stk.push(i);}while (!stk.empty()) {stk.pop();}for (int i = n; i >= 1; i--) {while (!stk.empty() && a[stk.top()] < a[i]) {stk.pop();}if (!stk.empty()) {r[i] = stk.top() - 1;}else r[i] = n;stk.push(i);}for (int i = 1; i <= n; i++) {ans1[a[i]] += ((r[i] - i + 2) * (r[i] - i + 1) / 2) * (i - l[i] + 1);ans1[a[i]] += ((i - l[i] + 2) * (i - l[i] + 1) / 2) * (r[i] - i + 1);ans2[a[i]] += (i - l[i] + 1) * (r[i] - i + 1);ans1[a[i]] = ((ans1[a[i]] - (i - l[i] + 1) * (r[i] - i + 1) % mod) % mod + mod) % mod;ans1[a[i]] %= mod, ans2[a[i]] %= mod;}for (int i = 1; i <= n; i++) {cout << ans1[i] * mypow(ans2[i], mod - 2) % mod << "\n";}return 0;
}

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

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

相关文章

第八届2024御网杯WP

WEBinput_data使用工具https://github.com/kost/dvcs-ripper./rip-svn.pl -u http://101.200.58.4:10005/.svn下载下来.svn目录然后查看结构发现几个文件cd进去目录,然后cat 文件名字即可看到 flag{5674938f-803d-4c41-8f84-a77f5164bb4f}Flag: flag{5674938f-803d-4c41-8f84…

给PbootCMS增加换行标签br=1

在 PbootCMS 中,如果你需要在前端显示一个包含换行符的简介字段,并且希望这些换行符能够正确显示为 HTML 中的换行,可以通过自定义解析器来实现这一功能。以下是详细的步骤: 步骤 1: 修改 ParserController.php 文件打开文件: 打开 \apps\home\controller\ParserControlle…

pbootcms如何显示按文章内容搜索,而不是搜索标题

在 PbootCMS 中,默认情况下搜索功能通常是基于文章标题进行的。如果你想让搜索功能基于文章内容进行,可以通过以下步骤实现: 步骤 1: 修改搜索表单 在搜索表单中添加一个隐藏字段 field,并将它的值设为 content。这样可以让系统知道搜索时应该针对文章内容进行匹配。 修改后…

PbootCMS文章列表序号怎么写?

根据你提供的信息,我们可以进一步了解如何使用 pboot:list 标签,并结合 [list:n]、[list:i] 和 [list:id] 进行一些实用的功能实现。下面是一些具体的示例和应用场景: 1. 显示列表序号 假设我们需要显示一个列表,并且希望序号从 0 开始:html{pboot:list num=10} <li>…

PbootCMS隐藏指定 scode 的菜单各种条件判断和标签

{pboot:nav} <li {pboot:if([nav:scode] == 2 || [nav:scode] == 4 || [nav:scode] == 6)}style="display: none;"{/pboot:if}><a href="[nav:link]">{nav:name}</a> </li> {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站…

PbootCMS判断导航从第几个开始各种条件判断和标签

{pboot:nav} {pboot:if([nav:i] > 2)} <li><a href="[nav:link]">{nav:name}</a></li> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。…

PbootCMS导航栏 logo 居中判断各种条件判断和标签

{pboot:nav} <a href="[nav:link]">{nav:name}</a> {pboot:if([nav:i] == 3)} <img src="{pboot:sitelogo}" /> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HT…

PbootCMS判断列表页有无内容,无内容返回提示各种条件判断和标签

{pboot:if({page:rows} > 0)} <div class="page"><a href="{page:index}">首页</a><a href="{page:pre}">上一页</a>{page:numbar}<a href="{page:next}">下一页</a><a href="{…

检测到您模板中包含文件超过50个,请检查是否存在互相包含导致无限循环的情况!

在使用PBootCMS搭建网站时,如果遇到“检测到您模板中包含文件超过50个,请检查是否存在互相包含导致无限循环的情况”的错误,通常是因为模板文件中存在互相包含的情况。具体来说,可能是某个模板文件多次递归调用自身或其他模板文件,导致无限循环。 解决方法检查模板文件 定…

自动加载类文件时发生错误,类名【core\basic\Kernel】

当你在使用PBootCMS时遇到“自动加载类文件时发生错误,类名【core\basicKernel】”的问题,通常是因为Kernel.php文件被误删除或丢失。特别是在阿里云虚拟主机上,这类文件可能会被误判为风险文件而被删除。以下是如何解决这一问题的具体步骤: 解决方法重新下载PBootCMS模板访…

pbootcms模板文章列表没有缩略图时也不显示默认图片

通义灵码为了在PBootCMS模板中实现只有上传了缩略图才显示图片的功能,可以使用[list:isico]标签来判断是否存在缩略图。下面是具体实现的代码示例: 完整代码示例{pboot:list scode={sort:scode}}<a href="[list:link]" rel="external nofollow" title…

程序运行异常: Modulo by zero,位置

在PBOOTCMS中,确实存在一些特殊字符可能导致模板解析或数据存储的问题。特别是百分号 %,可能会被误认为SQL查询的一部分或其他特殊用途。为了避免这类问题,可以采取以下几种解决方案: 解决方案直接去掉百分号:直接去掉百分号,避免潜在的问题。使用中文表示:使用中文“百…