2024/11/17 总结

news/2024/11/17 21:48:34/文章来源:https://www.cnblogs.com/Kang-shifu/p/18551162

记忆宫殿

image

初始入度为\(0\)的点为源点。

我们令 \(S\) 为如果成立,就能够推出事件的源点集合。

当事件成立时,显然 \(S\) 中的点必有至少一个是真的。所以我们只要把所有包含 \(S\) 的事件都标记为真就行了。

Pro-Professor Szu

某大学校内有一栋主楼,还有 栋住宅楼。这些楼之间由一些单向道路连接,但是任意两栋楼之间可能有多条道路,也可能存在起点和终点为同一栋楼的环路。存在住宅楼无法到达主楼的情况。

现在有一位古怪的教授,他希望每天去主楼上班的路线不同。

一条上班路线中,每栋楼都可以访问任意多次。我们称两条上班路线是不同的,当且仅当两条路线中存在一条路是不同的(两栋楼之间的多条道路被视为是不同的道路)。

现在教授希望知道,从哪些住宅楼前往主楼的上班路线数最多。

到达n+1后,可以选择停下或者继续走



首先发现若一个大小大于 1 的 SCC 或自环(下称为不合法结构)能够到达教学楼,则该不合法结构内部每个点到教学楼的路径数量都是无穷大。

显然可以先缩点,然后拓扑排序。

先将反图上入度为 0 的非教学楼点入队跑一遍拓扑排序。注意此时不合法结构可以入队,因为它们没有到达教学楼的路径。
最后,若出现没有入队的点,说明这个点能够到达一个不合法结构,因此路径数同样为无穷大。此外,若 \(f_i>36500\) 也不符合题意。

自己的代码没调出来,一直不过hack,贴一个题解的,过了就补(已)

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m, ed, ban[N], deg[N], f[N];
int dn, dfn[N], low[N], cn, col[N], top, stc[N], vis[N];
struct linklist {int cnt, hd[N], nxt[N], to[N];void add(int u, int v) {nxt[++cnt] = hd[u], hd[u] = cnt, to[cnt] = v;}
} e, g;
void tarjan(int id) {dfn[id] = low[id] = ++dn, stc[++top] = id, vis[id] = 1; // 0 -> 1for(int _ = e.hd[id]; _; _ = e.nxt[_]) {int it = e.to[_];if(!dfn[it]) tarjan(it), low[id] = min(low[id], low[it]);else if(vis[it]) low[id] = min(low[id], dfn[it]);}if(low[id] == dfn[id]) {col[id] = ++cn, ban[cn] = stc[top] != id;while(stc[top] != id) col[stc[top]] = cn, vis[stc[top--]] = 0; // id -> cnvis[id] = 0, top--;}
}
int main() {
#ifdef ALEX_WEIfreopen("1.in", "r", stdin);freopen("1.out", "w", stdout);
#endifcin >> n >> m;for(int i = 1; i <= m; i++) {int u, v;scanf("%d%d", &u, &v);e.add(u, v);}for(int i = 1; i <= n + 1; i++) if(!dfn[i]) tarjan(i);for(int i = 1; i <= n + 1; i++)for(int _ = e.hd[i]; _; _ = e.nxt[_]) {int it = e.to[_];if(i == it) ban[col[i]] = 1;else if(col[i] != col[it]) g.add(col[it], col[i]), deg[col[i]]++;}ed = col[n + 1];queue<int> q;for(int i = 1; i <= cn; i++) if(i != ed && !deg[i]) q.push(i);memset(vis, 0, sizeof(vis));while(!q.empty()) {int t = q.front();q.pop(), vis[t] = 1;for(int _ = g.hd[t]; _; _ = g.nxt[_]) {int it = g.to[_];if(!--deg[it] && it != ed) q.push(it);}}if(!ban[ed]) assert(!deg[ed]), q.push(ed), f[ed] = 1;while(!q.empty()) {int t = q.front();q.pop(), vis[t] = 1;for(int _ = g.hd[t]; _; _ = g.nxt[_]) {int it = g.to[_];if(ban[it]) continue;f[it] = min(36501, f[it] + f[t]);if(!--deg[it]) q.push(it);}}vector<int> ans;for(int i = 1; i <= n; i++)if(!vis[col[i]] || f[col[i]] == 36501)ans.push_back(i);if(!ans.empty()) puts("zawsze");else {int mx = 0;for(int i = 1; i <= n; i++) {if(f[col[i]] > mx) mx = f[col[i]], ans.clear();if(f[col[i]] == mx) ans.push_back(i);}cout << mx << "\n";}cout << ans.size() << "\n";for(int it : ans) cout << it << " ";return cerr << "Time: " << clock() << endl, 0;
}

POI2010 Antisymmetry

对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串。比如00001111和010101就是反对称的,1001就不是。

现在给出一个长度为N的01字符串,求它有多少个子串是反对称的。

manacher板子,写就完了

#include <bits/stdc++.h>
#define ull long long
const int maxn = 1e7;
char SS1[maxn], S[maxn], to[500];
int n, len[maxn], tot = 1;
signed main() {scanf("%d%s", &n, SS1 + 1);S[0] = '$', S[1] = '#';for (register int i = 1; i <= n; ++i) S[++tot] = SS1[i], S[++tot] = '#';to['1'] = '0', to['0'] = '1', to['#'] = '#', to['$'] = '$';int pos = 1, mx = 1;ull ans = 0;for (register int i = 1; i <= tot; i += 2) {len[i] = (i < mx ? std::min(mx - i, len[(pos << 1) - i]) : 1);while (S[i + len[i]] == to[S[i - len[i]]]) len[i]++;if (len[i] + i > mx) {mx = len[i] + i;pos = i;}ans += len[i] >> 1;}printf("%llu\n", ans);return 0;
}

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

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

相关文章

# [团队项目Scrum冲刺-day7]

每天举行站立式会议昨天已完成的任务成员 任务徐嘉炜 优化登录界面交互逻辑陈祥意 对各个测试模块测试林楦 优化整体UI界面陈大锴 优化注册界面交互逻辑蔡家显 检查测试记录陈祖民 优化登录UI肖商 反馈前一天测试结果今日计划完成的任务成员 任务林楦 优化前端页面显示陈祖民 优…

HBase的常用命令

一、general类 1、查看集群的状态 status2、查看数据库版本 version3、显示当前用户和组 whoami4、查看操作表的命令 table_help5、退出hbase exit或者ctrl+c 二、DDL相关 注:DDL是用于定义和管理数据库中的结构的命令,例如创建,删除,修改表等操作 1、创建表 注:创建表的时…

用户故事与敏捷开发

什么是用户故事 用户故事(User Story)是用来对软件或用户有价值功能的简短描述,是对需求的一种描述。它清晰简洁的传达了用户想要的功能。 它从用户角度出发,用来描述用户的需求,用来表达用户需求的方式之一。 它从用户角度出发,解释了用户所期望得到的结果。用户故事清楚…

团队项目冲刺--day6

每天举行站立式会议成员 任务##昨天已完成的工作成员 任务徐嘉炜 开发音频API交互逻辑陈祥意 测试网络API林楦 开发注册UI界面陈大锴 开发系统界面交互逻辑蔡家显 汇总整体测试记录陈祖民##今天计划完成的工作 界面细节完善,如歌曲封面动画,歌曲播放,页面背景随封面渐变,歌…

11.17 鲜花

a pa ta ? zaong ma ze mi da. (byd 没有输入法绷不住了)11.17 鲜花(RMQ专题) 哈哈,回家看到朴彩英这个歌绷不住了。 不是吧,姐?推歌-박채영《아파트》 채영이가 좋아하는 랜덤 게임 랜덤 게임 Game start 아파트 아파트 아파트 아파트 아파트 아파트 Uh, uh huh uh huh …

团队作业4——项目冲刺-7

目录 每日例会 1.1 例会照片 1.2 成员工作情况 2.燃尽图 3.代码签入 4.最新模块 4.1 代码截图 4.2 运行截图 5.每日总结 每日例会 1.1 例会照片1.2 成员工作情况成员 昨日已完成工作 今天计划完成的工作 工作中遇到的困难杨殷(组长) 完善管理员界面增删改查功能 完善整个系统…

jmeter接口测试之SSH Command

原文地址:https://download.csdn.net/blog/column/8863406/106334136 需要提前安装好的工具:按照好jmeter插件:ssh protocol support 、 sshmon samler Collector 然而在实际测试中,不能确定我们的的机器能够正常连接。这里就要用到 while 循环设置重连,如下添加 while …

团队项目冲刺第七天

课程 2024软件工程作业要求 团队作业4——项目冲刺作业目标 团队项目冲刺第七天团队会议合照燃尽图计划表格成员 已完成 下一步洪吉潮 话题发布与展示功能开发开发话题详情页面的前端展示刘家辉 话题发布与展示功能开发实现话题在主题圈和校园圈的展示逻辑柳浩 前后端对接,进行…

堆栈图

一、 1、找到画堆栈图从401168开始画,ctrl+g出来一个弹窗,在弹窗上输入要找到哪一行输入0x401168,他会直接跳转 2、在那一行f2下断点点开始运行让cpu运行到该行停止(画堆栈图要关注栈底EBP,栈顶ESP两个寄存器) (1)调用前(2)push2:栈顶减4,2被压入,为压栈push2之后…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现五

基于SSM整合maven开发的一款宠物收养领养管理系统附带源码指导运行视频,该项目前端模板是借鉴别人的,自己写的后台代码,该系统分为前台和后台,前台功能有:登录注册、领养中心、活动中心等。后台管理员功能有:用户管理、宠物管理、活动管理、领养管理、志愿者管理等。该项…

团队冲刺第六天

课程 2024软件工程作业要求 团队作业4——项目冲刺作业目标 团队项目冲刺第x天团队会议合照燃尽图计划表格成员 已完成 下一步洪吉潮 话题发布与展示功能开发设计话题发布界面,支持文字和图片上传 话题发布与展示功能开发开发话题详情页面的前端展示刘家辉话题发布与展示功能开…

团队作业——项目冲刺4

目录 每日例会 1.1 例会照片 1.2 成员工作情况 2.燃尽图 3.代码签入 4.最新模块 4.1 代码截图 4.2 运行截图 5.每日总结 每日例会 1.1 例会照片1.2 成员工作情况成员 昨日已完成工作 今天计划完成的工作 工作中遇到的困难杨殷(组长) 实现学生功能逻辑代码 完善学生功能界面(…