LibreOJ NOI Round #2 Day 1
T1:
别被定义弄晕了
反着做,A->1/A+B
取倒数没法做,所以变成a/b,维护2*2的矩阵
区间?不用线段树,不用倍增
存在逆矩阵,直接前缀积
注意左乘右乘方向
T2
模拟费用流
经典老鼠和洞的问题
序列:从左往右扫,
到了老鼠i,wi加入堆,
到了洞j,找权值最大的未匹配老鼠或者已经匹配的洞k,如果valk+vj>0,更新ans,pop,然后把-vj加入堆
外向树:可并堆进行上述操作
而本题带修
(52)60pts做法:
https://www.luogu.org/blog/i207M/libreoj-noi-round-2-xie-ti-bao-gao
相当于模拟动态加边费用流,
建图方式就是树上直接建,S到miner,gold到T
加入一个miner,会和匹配的miner、未匹配的gold产生匹配
疯狂DFS走有流量的边到这些点,选择最大的
加入gold,和未匹配的miner、匹配的gold产生匹配
这里DFS,如果反向边有流量才走,因为实际在反向增广
如果有匹配并且贡献>0,暴力把整个路径流量改变
匹配和未匹配的miner和gold用2个堆维护
由于可能加入的费用过大,会造成正环
一般机械费用流要消正环
但是其实无所谓,正环只会产生在miner-S-miner之间,以及gold-T-gold之间
和我们的人工方法一致
#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
#define pb push_back
#define solid const auto &
#define enter cout<<endl
#define pii pair<int,int>
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
char ch;x=;bool fl=false;while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);(fl==true)&&(x=-x);}
template<class T>il void output(T x){if(x/)output(x/);putchar(x%+'');}
template<class T>il void ot(T x){if(x<) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');}
namespace Modulo{
const int mod=;
il int ad(int x,int y){return x+y>=mod?x+y-mod:x+y;}
il int sub(int x,int y){return ad(x,mod-y);}
il int mul(int x,int y){return (ll)x*y%mod;}
il void inc(int &x,int y){x=ad(x,y);}
il void inc2(int &x,int y){x=mul(x,y);}
il int qm(int x,int y=mod-){int ret=;while(y){if(y&) ret=mul(x,ret);x=mul(x,x);y>>=;}return ret;}
template<class ...Args>il int ad(const int a,const int b,const Args &...args) {return ad(ad(a,b),args...);}
template<class ...Args>il int mul(const int a,const int b,const Args &...args) {return mul(mul(a,b),args...);}
}
//using namespace Modulo;
namespace Miracle{
const int N=+;
const int inf=0x3f3f3f3f;
int n,m;
ll ans;
priority_queue<ll>q[N][];
//0: matched miner ; no match gold
//1: matched gold ; no match miner
struct node{
int nxt,to;
int w,c;
}e[*N];
int du[N];
int hd[N],cnt=;
void add(int x,int y,int w,int c){
e[++cnt].nxt=hd[x];
e[cnt].to=y;e[cnt].w=w;e[cnt].c=c;
hd[x]=cnt; e[++cnt].nxt=hd[y];
e[cnt].to=x;e[cnt].w=;e[cnt].c=-c;
hd[y]=cnt;
}
int pre[N];
ll mx;
int id;
void dfs(int x,int fa,ll d,int tp){
if(!q[x][tp].empty()){
if(q[x][tp].top()+d>mx){
mx=q[x][tp].top()+d;
id=x;
}
}
for(reg i=hd[x];i;i=e[i].nxt){
int y=e[i].to;
if(y==fa) continue; if(tp==){
if(e[i].w) pre[y]=i,dfs(y,x,d+e[i].c,tp);
}else{
if(e[i^].w) pre[y]=i,dfs(y,x,d+e[i^].c,tp);
}
}
}
void wrk(int x,int v,int tp){
mx=1ll*-0x3f3f3f3f3f3f3f3f,id=;
dfs(x,,,tp); if(mx+v>){
ans+=mx+v;
ll val=q[id][tp].top();
q[id][tp].pop();
q[id][tp^].push(-val); q[x][tp].push(-v);
if(tp==){
while(id!=x){
e[pre[id]].w--;
e[pre[id]^].w++;
id=e[pre[id]^].to;
}
}else{
while(id!=x){
e[pre[id]].w++;
e[pre[id]^].w--;
id=e[pre[id]^].to;
}
}
}else{
q[x][tp^].push(v);
}
}
int main(){
rd(n);rd(m);
int x,y,z;
for(reg i=;i<n;++i){
rd(x);rd(y);rd(z);
add(x,y,inf,z);
++du[y];
}
// int rt=0;
//for(reg i=1;i<=n;++i){if(du[i]==0) rt=i;} int op,v;
while(m--){
rd(op);rd(x);rd(v);
--op;
wrk(x,v,op);
printf("%lld\n",ans);
}
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
*/
100pts:
miner往上跳到最高点,子树最大值就是答案
gold就是到根的链的所有轻儿子连通块内的最大值
树剖维护一下,找连通块,线段树pushup时候考虑中间边有没有,就好了
在写了在写了
T3:
好题
https://loj.ac/article/1779

没有大于号限制是好算的.
容斥的话,枚举i最后连续的不满足的大于号
分治NTT
dp0=1.题解打错了
LibreOJ NOI Round #2 Day 1的更多相关文章
- 「LibreOJ NOI Round #2」不等关系
「LibreOJ NOI Round #2」不等关系 解题思路 令 \(F(k)\) 为恰好有 \(k\) 个大于号不满足的答案,\(G(k)\) 表示钦点了 \(k\) 个大于号不满足,剩下随便填的 ...
- LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿
二次联通门 : LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 /* LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 dp 记录一下前驱 ...
- LibreOJ NOI Round #1 Day 1 B. 失控的未来交通工具
瞬间移动 官方题解 题意:一个带边权无向图,加边以及询问在 x,x+b,...,x+(c−1)bx,x+b,...,x+(c-1)bx,x+b,...,x+(c−1)b 这些数中,有多少存在一条与之模 ...
- 「LibreOJ NOI Round #1」验题
麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然 ...
- #509. 「LibreOJ NOI Round #1」动态几何问题
下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...
- #510. 「LibreOJ NOI Round #1」动态几何问题
题目: 题解: 几何部分,先证明一下 \(KX = \sqrt{a},YL = \sqrt{b}\) 设左侧的圆心为 \(O\) ,连接 \(OK\) ,我们有 \(OK = r\). 然后有 \(r ...
- #507. 「LibreOJ NOI Round #1」接竹竿 dp
题目: 题解: 我们考虑把每对花色相同的牌看作区间. 那么如果我们设 \(f_i\) 表示决策在 \([1,i]\) 内的最优答案. 那么有 \(f_i = max\{max\{(f_{j-1}+\s ...
- LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)
题面 传送门 题解 感谢\(@M\_sea\)的代码我总算看懂题解了-- 这个操作的本质就是每次把\(x\)的\(k\)进制最低位乘\(2\)并进位,根据基本同余芝士如果\(k\)是奇数那么最低位永远 ...
- LOJ 510: 「LibreOJ NOI Round #1」北校门外的回忆
题目传送门:LOJ #510. 题意简述: 给出一个在 \(K\) 进制下的树状数组,但是它的实现有问题. 形式化地说,令 \(\mathrm{lowbit}(x)\) 为在 \(K\) 进制下的 \ ...
随机推荐
- [转载]C++之using namespace std 详解与命名空间的使用
来源:https://blog.csdn.net/Bruce_0712/article/details/72824668 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识 ...
- 浅析HBase:为高效的可扩展大规模分布式系统而生
什么是HBase Apache HBase是运行在Hadoop集群上的数据库.为了实现更好的可扩展性(scalability),HBase放松了对ACID(数据库的原子性,一致性,隔离性和持久性)的要 ...
- PanDownload/AD16/MDK5/CAD2019及2007/Dev-C++/Office2016专业版软件安装包
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 作者:struct_mooc 博客地址:https://www.cnblogs.com/stru ...
- python 定义变量
定义变量 什么是变量? 在程序运行过程中,其值可以改变的量 标识符(命令规范) 只能由数字.字母.下划线组成 不能以数字开头 不能是系统关键字 # 导入包import keyword# 打印所有关键 ...
- LLVM源码安装教程
LLVM4.0源码安装教程 环境:ubuntu16.04 llvm-4.0 clang-4.0 步骤: 1.依赖库安装,注意llvm的编译对gcc版本和cmake版本有要求,请根据版本进行匹配 $ s ...
- zabbix-server、proxy、agent的分布式部署步骤
1.准备工作 关闭防火墙和SELinux防火墙,因为他们会限制一些访问权限,如果服务器不能关闭就需要手动设置规则,这里测试用就直接关闭了 service firewalld stop; setenfo ...
- 08Request
1.request对象和response对象的原理 1. request和response对象是由服务器创建的.我们来使用它们 2. request对象是来获取请求消息,response对象是来设置响 ...
- poj3522 苗条树(极差最小生成树)
给你N个点和M条边 要求你求出一个生成树使得这个生成树里边权极差最小 做法① n*m做法 当最小的边已知的时候这个生成树就确定 所以最大的边也确定了 于是我们每次枚举最小的边 然后用kruskal做一 ...
- xss过滤方法
用的白名单过滤,是我们的论坛自用的方法,也许考虑不周,欢迎来黑我们的论坛!https://www.ebcms.com/forum.html // 安全过滤 function safe_html($ht ...
- iptables设置
一,安装iptables yum -y install iptables-services iptables-devel 二,查看规则 iptables -nL --line-number 三,清空规 ...