LOJ3097 SNOI2019 通信 题解】的更多相关文章

题目链接 费用流,当建边需要依靠位置和权值两个偏序关系时,可以用cdq分治优化建边. 代码: #include<bits/stdc++.h> using namespace std; #define N 20007 #define M 200007 const int inf=0x3f3f3f3f; #define ll long long struct flow { int hd[N],pre[M],to[M],num,w[M],mf[N],fa[N],maf,s,t; ll f[M],di…
[LOJ#3097][SNOI2019]通信(费用流) 题面 LOJ 题解 暴力就直接连\(O(n^2)\)条边. 然后分治/主席树优化连边就行了. 抄zsy代码,zsy代码是真的短 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define ll long long #define MAX 50000 const int inf=1e9; inline int…
考虑用费用流解决本题. 每个哨站看作一个点,并将其拆为两个点,建图方式为: \(S \longrightarrow x_i\) 容量为\(1\),费用为\(0\) \(x_i \longrightarrow T\) 容量为\(1\),费用为\(w\) \(x_i \longrightarrow x^\prime_j\ (i>j)\) 容量为\(1\),费用为\(|a_i-a_j|\) \(x^\prime_i \longrightarrow T\) 容量为\(1\),费用为\(0\) 这样就可以…
洛谷 题意: \(n\)个哨站排成一列,第\(i\)个哨站的频段为\(a_i\). 现在每个哨站可以选择: 直接连接到中心,代价为\(w\): 连接到前面某个哨站\(j(j<i)\),代价为\(|a_i-a_j|\). 规定每个哨站只能被后面的至多一个哨站连接. 问最终最小代价和为多少. 思路: 直接费用流比较好想:每个点有两个选择,我们将点拆为两个点\(x_i,y_i\),然后 \(S->x_i\)容量为\(1\),费用为\(w\): \(S->y_i\)容量为\(1\),费用为\(0…
传送门 有匹配次数限制,求最小代价,这显然是个费用流的模型.每个点暴力和前面的点连匹配边,边数是\(n^2\)的. 然后发现可以转化成一个set,每次加入一个点,然后入点对set里面的出点连边.这个set可以用主席树实现,然后就主席树优化连边,点数边数都是\(nlogn\)的,然后就能过了 注意这里连边要把一个点入点拆成两个\(a_i,-a_i\),出点同理,然后假设\(a_i\)在set的第\(p\)位,\(a_i\)在负权值主席树上连区间\([1,p-1]\),\(-a_i\)在正权值主席树…
瞎扯 我们网络流模拟赛(其实是数据结构模拟赛)的T2. 考场上写主席树写自闭了,直接交了\(80pts\)的暴力,考完出来突然发现: woc这个题一个cdq几行就搞定了! 题意简述 有\(n\)个哨站,第\(i\)个哨站的频段为\(a_i\).每个哨站可以花费\(W\)连接中心,也可以花费\(|a_j-a_i|\)连接到第\(j\)个哨站(\(j<i\)). 每个哨站最多只能被连接一次,求所有哨站连接的最小花费. 做法 Luogu能过的暴力 由最多只能被连接一次想到流量限制(显然),发现题目要求…
这题真让人自闭-我EK费用流已经死了?- (去掉define int long long就过了) 我建的边害死我的 spfa 还是spfa已经死了? 按费用流的套路来 首先呢 把点 \(i\) 拆成两个点 \(i\) 和 \(i'\) 令 \(i'\) = \(i+n\) 对任意的 \(i\) 点 建 \(s -> i' -> t\) 表示这个连到控制中心- \(s -> i -> j ->t\) 表示连到某个哨站-流量为\(1\) 费用为 |\(a_i -a_j\)| 其中…
一.题目 点此看题 二.解法 一看就是傻逼补流模型,不会真的有人这个图都建不出来吧 别走啊,我不阴阳怪气了,如果你不知道怎么建这里有图嘛(思路来源是餐巾计划问题): 其中标红的边数量级很大,因为 \(i\) 点拆出来的点 \(i'\) 要连后面的每一个点 \(j\) ,边的数量达到了 \(n^2\) ,如果直接无脑暴力刚那肯定会吃 \(T\) 的,我测试过暴力跑的话只能得 \(80\) 分. 现在肯定要优化建图了,貌似可以可持久化权值线段树优化建图,因为 \(i<j\) 的每个点都要连所以建出后…
题面传送门 首先熟悉网络流的同学应该能一眼看出此题的建模方法: 将每个点拆成两个点 \(in_i,out_i\),连一条 \(S\to in_i\),容量为 \(1\) 费用为 \(0\) 的边 连一条 \(in_i\to T\) 容量为 \(1\) 费用为 \(W\) 的边,表示哨站 \(i\) 连向控制中心 连一条 \(out_i\to T\) 容量为 \(1\) 费用为 \(0\) 的边,表示每个哨站最多被后面一个哨站连接 对每对 \(i,j(i>j)\) 连一条 \(in_i\to ou…
LOJ#3097. 「SNOI2019」通信 费用流,有点玄妙 显然按照最小路径覆盖那题的建图思路,把一个点拆成两种点,一种是从这个点出去,标成\(x_{i}\),一种是输入到这个点,使得两条路径合成一条(或者是新建一条),标成\(y_i\) 源点向每个\(x_i\)流一条容量为1,费用为0的边 然后向每个\(y_{i}\)流一条容量为1,费用为W的边 每个\(y_i\)向汇点连一条容量为1,费用为0的边 这个时候,如果你充满梦想,你可以把所有的\(x_{i}\)到\(y_j\)(\(i < j…
题意: n 个排成一列的哨站要进行通信.第 i 个哨站的频段为 ai. 每个哨站 ii 需要选择以下二者之一: 1.直接连接到控制中心,代价为 W:2.连接到前面的某个哨站 j(j<i),代价为 |ai−aj|. 每个哨站只能被后面的至多一个哨站连接. 请你求出最小可能的代价和. 题解: 显然的费用流 然后我耿直的n^2建边,觉得我的费用流很快,应该可以过 然后返回了TLE 然后google了一下题解:发现这题卡了n^2建图,需要优化建边 我这里是通过分治优化的 就是类似与建立一个虚点 一个x要…
题目 还好我没生在陕西啊 首先发现这个题不能\(dp\),数据范围不大,好像一种网络流的样子啊 哎等等,这样向后面连边不是一个\(DAG\)吗,这不是最小权路径覆盖的板子吗 于是我们套路的拆点,对于一个点\(i\)我们拆成\(i\)和\(i'\),源点向点\(i\)连费用为\(0\)容量为\(1\)的边,\(i'\)向汇点连费用为\(0\)容量为\(1\)的边 之后我们把让\(S\)向\(i'\)直接连费用为\(W\)容量为\(1\)的边,表示直接连到控制中心 对于点\(i\),我们向\(j'(…
dfs #include <bits/stdc++.h> const int maxn = 1000; const int maxm = 10000; using namespace std; int to[maxm+10]; int nex[maxm+10]; int head[maxn+10], cnt = 0; int know[maxn+10][maxn+10]; int vis[maxn+10]; void dfs(int r, int x) { vis[x] = 1; know[r…
根据题意 每个点可以直接与S,T相连 也可以和前面的哨站相连 暴力建边的话 有n2条边 要用分治优化建边: 类似于归并排序 先对每一层分为左半边与右半边 对每一半都拿出来先排序去重后 直接排成一条链建边 if (l == r) { return ; } ; solve(l, mid), solve(mid + , r); ; for (int i = l; i <= r; i++) { aa[++cnt] = a[i]; } sort(aa + , aa + + cnt); cnt = uniq…
用栈的做法来水一发. 首先我们有一个暴力的做法,枚举每个被删除的字符,然后排序输出,时间复杂度:$ O ( N \times N \times LogN ) $ . 然后我们观察一下数据,发现有一个数据点且任意两个相邻字符 $ a_i $ 与 $ a_{i+1} $ 不相等:那么我们考虑这样一个字符串: $ acdedc $ .比如现在我们比较去掉第三位的字符串和去掉第四位的字符串.我们发现 $ acddc $ 比 \(acdec\) 小,然后我们再发现除 $ 3,4 $ 位的以外的都是一样的,…
洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication[最小割]分析+题解代码 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,-,a(c),且a1与a2相连,a2与a3相连,等等,那么电脑a1和a(c)就可以互发电邮. 很不幸,有时候奶牛会不小心踩到电脑上,农夫约翰的车也可能碾过电脑,这台倒霉的电脑就会坏掉.这意味着这台电脑不能再发送电邮了,于是与这…
[LOJ#3096][SNOI2019]数论 题面 LOJ 题解 考虑枚举一个\(A\),然后考虑有多少个合法的\(B\). 首先这个数可以写成\(a_i+kP\)的形式,那么它模\(Q\)的值成环. 所以我们预处理每个环内有多少个合法的\(b\),再把\(b\)按照访问顺序记录一下,那么对于每一个\(a\)就可以直接算答案了. #include<iostream> #include<cstdio> #include<algorithm> #include<vec…
[LOJ#3095][SNOI2019]字符串(后缀数组) 题面 LOJ 题解 首先画图看看如何比较两个串的大小,发现这个东西等价于求两个相邻的后缀的\(LCP\). 一个做法是求出\(SA\),然后就可以很容易的判断两个位置的大小了. 然而实际上相邻两个后缀的\(LCP\)转移可以很容易的从前一个得到,所以这部分的复杂度不会超过\(O(n)\). 那么复杂度瓶颈就在排序了,时间复杂度\(O(nlogn)\). #include<iostream> #include<cstdio>…
题目描述 您正在处理要为每个客户端分配唯一ID的特定系统的后端.但是,系统是分布式的,并且有许多组件,每个组件都必须能够为客户端分配ID.换句话说,您希望每个组件都使用尽可能少的组件之间的通信来分配ID.您已经确定保持系统分布比确保所有客户端都具有唯一ID更重要.因此,您正在考虑让每个组件从大量可能的ID中随机分配ID,并在每天结束时同步分配的ID.换句话说,每个组件将根据所有组件分配的ID在每天结束时更新其可用ID列表. 现在,有两种方法可以做到这一点.第一种方法是每个组件分配ID是随机的.换…
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF计算机职业资格认证考试题解 CCF计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系列中最早启动的一项认证.该项认证重点考察软件开发者实际编程能力,由中国计算机学会统一命题.统一评测,委托各地设立的考试机构进行认证考试.该项认证每年大约3.9.12月各举办一次,自2014年推出以来,短短三年内便先后曾共有73个考点,43479人次参加认证,认证影响力与日俱增. 认证考试全部采用上机…
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息.信息可以通过中转的方式进行传递,即如果a能将信息传递到b,b又能将信息传递到c,则a能将信息传递到c.一条信息可能通过多次中转最终到达目的地. 由于保密工作做得很好,并不是所有部门之间都互相知道彼此的存在.只有当两个…
刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #include <queue> #include <…
SNOI2019场外VP记 教练突然说要考一场别省省选来测试水平...正好还没看题那就当VP咯w... Day 1 八点开题打 .vimrc. 先看了看题目名...一股莫名鬼畜感袭来... 怎么T1就是字符串鸭?HEOI 2019 D1T2的心理阴影为啥我会xjb套那么多东西上去啊QAQ...T2数论T3通信? 不好的感觉... 读了读T1, 神仙字符串排序, 溜了溜了 读了读T2, 模两个模数同余? 溜了溜了... 读了读T3. 诶这个东西怎么这么费用流啊? 看看数据范围...诶这个 \(n\…
持续更新中,记录刷题过程并分享一下小小的心得总结. 试题编号 试题名称 标签 202006-1 线性分类器 | 题解 线性规划 202006-2 稀疏向量| 题解 归并排序思想 202006-3 化学方程式 | 题解 ️ 大模拟.常用STL 201912-1 报数| 题解 201912-2 回收站选址| 题解 常用STL 201909-1 小明种苹果| 题解 201909-2 小明种苹果(续)| 题解 模拟 201903-1 小中大| 题解 201903-2 二十四点|题解 队列.四则表达式 2…
T1及题解 T2 CF1207E 首先,异或这个位运算有个很好的性质:x^y^y=x 于是,可以有两种解决方法: 法一 既然让猜原来的数是多少,当它异或了一个其他值val的时候,再异或val就会变回原来的值. 于是对于第一次输入的数y,让其对输出100个数异或,产生的结果中肯定有一个是原来的数:再对第二次的100个数重复上述操作,同时出现在两次结果中的数即是原来的x 但是会有一个问题: 第一次没用的结果中会出现:\(a_i\) ^\(a_j\) ^\(x\) 第二次没用的结果中会出现:\(a_l…
文章目录 题面(过于冗长,主要是对通信题的一些解释) 题解 1.通信题什么意思 2.此题题解 CODE 实现 题面(过于冗长,主要是对通信题的一些解释) 题解 1.通信题什么意思 并不是两个程序同时跑. 而是你写两个不能单独运行的子程序,然后由评测方调用,检查是否通过数据点. 通信题一般会给你很多函数,有些是你可以不用手写定义就使用的函数(一般在"有效文件名.h"里定义了,你得在代码里加上它的头文件,用""而不是<>),这是第一类,有些是你需要定义其内容…
接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. TCP Server: const net=require('net'); const server=net.createServer(); const serverHost='127.0.0.1'; const serverPort=8888; server.on('connection',(cl…
TODO: 待修正 Binder简介 Binder是android系统中实现的一种高效的IPC机制,平常接触到的各种XxxManager,以及绑定Service时都在使用它进行跨进程操作. 它的实现基于OpenBinder项目,属于核心库.framework层的Binder通信用到的相关java类型都是对应C++类型的一个封装. 这里framework层就是android提供的java api层,类似jre中的java标准类库,也就是我们sdk中用到的各种java类型. IPC和远程对象(Rem…
这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通信. 串口通信,以前一直觉得神秘,没想到用起来却这么简单.当然,这样简单要归功于 .NET 对其操作的封装. .NET 里提供了专门操作串口的类 System.IO.Ports.SerialPort,可以操作串口收发数据.只需要 new 一个对象,简单配置一下相关属性,就可以使用串口收发数据了. S…
MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的实现(四)事件绑定 MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信 MVVM模式解析和在WPF中的实现(六)用依赖注入的方式配置ViewModel并注册消息 0x00 还需要些什么呢 在前面几篇…