模拟26A 题解
A. marshland
考试时想到了网络流,然而不会建图,就死了。
正解是最大费用可行流。
比较容易想到的是将每个点拆为两个点,
s连没有危险值的入点,
没有危险值的入点连有危险值的入点,入点出点之间限流有费用,
出点再连没有危险值的出点,这些出点连向t。
不断跑spfa,通过有流量的边,记录下前趋。
将前趋的边的流量改变,EK算法。
B. party
因为只有单向边,达成尽快到齐的条件是,终点为c个点的lca。
m的范围比较小,于是可以用bitset维护。
比较容易想到了在倍增求lca的同时维护bitset,取并集。
然而空间刚好卡到600多MB,时间也死了。
树链剖分。
空间返回到O(n*m)级别,比倍增少一个log。
问题转化为每个人从自己所有集合中选择相同数量的最多元素,要求互不相同。
网络流+二分可行。
源点向每个人建流量为mid的边,每个人向它包含元素建流量为1的边,每个元素向汇点建流量为1的边。
左部点流满就表示可行。
如果将每个人拆为若干个点,问题其实是求二分图完美匹配。
于是想到霍尔定理(???):
一个二分图 G 存在完美匹配, 当且仅当 X 中的任意 k 个点都至少与 Y 中的 k 个点邻接.
二分答案,枚举$2^{c*mid}$显然是可行的,然而复杂度真的死了。
考虑不同的左部点只有c个,枚举$2^c$,
1表示考虑这个人。
将答案与 所有考虑的人的bitset并集中1的个数除以考虑的人数 取min。
总复杂度为$O(\frac{qlog^2nm}{32})$。
考虑到没有修改操作,直接维护每个点到重链顶的bitset,可以将复杂度降低一个$logn$。
推荐$unsigned long long$手写$bitset$,
主要是可以将$O(n)$的$count$函数通过预处理变成$O(\frac{n}{32})$,
或者继续循环展开将所有操作改为$O(1)$。
struct bitset{
#define lowbit(x) (x&-x)
unsigned long long bit[];
inline void reset(){
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
bit[]=;
}
inline friend void operator |=(bitset &a,const bitset &b){
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
a.bit[]|=b.bit[];
}
inline friend bitset operator |(const bitset &a,const bitset &b){
bitset ans;
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
ans.bit[]=a.bit[]|b.bit[];
return ans;
}
inline void set(const int x){
bit[x>>]|=(unsigned long long)<<(x&);
}
inline int count(){
register int cnt=;
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
cnt+=ct[bit[]&]+ct[(bit[]>>)&]+ct[(bit[]>>)&]+ct[(bit[]>>)&];
return cnt;
}
};
C. platform
后缀数组。
然而完全忘记了怎么打。
没改到,鸽了。
模拟26A 题解的更多相关文章
- [CQOI2012]模拟工厂 题解(搜索+贪心)
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- HGOI NOIP模拟4 题解
NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...
- 10.8 wtx模拟题题解
填坑 orz w_x_c_q w_x_c_q的模拟赛(150pts,炸了) money 题目背景: 王小呆又陷入自己的梦里.(活在梦里...) 题目描述: 王小呆是一个有梦想的小菜鸡,那就是赚好多好多 ...
- [NOIP模拟13]题解
A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 【洛谷】xht模拟赛 题解
前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...
- 10.9 guz模拟题题解
感谢@guz 顾z的题题解 考试共三道题,其中 第一题help共10个测试点,时间限制为 1000ms,空间限制为 256MB. 第二题escape共20个测试点,时间限制为1000ms2000ms, ...
随机推荐
- Python中的单例设计
01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码.让代码更容易被他人理解.保 ...
- Django--模型层进阶
目录 QuerySet对象 可切片 可迭代 惰性查询 缓存机制 何时查询集不会被缓存? exists()与iterator()方法 exists() iterator() 中介模型 查询优化 表数据 ...
- 设计模式之(六)原型模式(ProtoType)
认识原型模式 原型模式是比较简单的设计模式.废话不多说,直接看定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.通过实例指定种类,种类就是初始化的类,然后通过拷贝创建对象.先展示一个 ...
- uni-app学习
1. 学习uni-app 1.1. 概述 号称一次编写多端运行的前端框架,架构图如下 对某些不同平台的特殊功能,可以通过条件进行自动编译,也就是写两套代码,不同的环境会选择不同代码编译 1.2. 推荐 ...
- 滥用exchage远程调用域管理员API接口
0x00 前言 在大多数的Active Directory和Exchange中,Exchange服务器具有很高的权限,即Exchange服务器上的管理员可以很容易地将权限提升到域管理员权限,我在zdi ...
- 你遇到过哪些原因造成MySQL异步复制延迟?
master上多为并发事务,salve上则多为单线程回放(MySQL 5.7起,支持真正的并行回放,有所缓解) 异步复制,本来就是有一定延迟的(否则也不叫做异步了,介意的话可以改成半同步复制) sla ...
- Java开发环境配置大全
Java开发环境配置 零章:JDK安装教程 壹章:Tomcat安装教程 贰章:IntelliJ IDEA安装教程 叁章:MySql安装教程 肆章:Maven安装教程 伍章:MongoDB安装教程 陆章 ...
- python工程化最佳实践
1.pipenv 真实环境 vs virtualenv vs pipenv 2.自定义用户模型 继承BaseUserManager和AbstractBaseUser,在settings中指定AUTH_ ...
- 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs
一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...
- 纯数据结构Java实现(7/11)(SegmentTree)
欢迎访问我的自建博客: CH-YK Blog.