ABC274 题解
A
题目:给定 \(A,B\) 输出 \({B}\over{A}\) 保留 \(3\) 位小数。
简答题,和A+B problem 一样,除一除,保留一下小数。
B
题目:给定一个 \(n\) 行 \(m\) 列由'.'和'#'的方阵,求每列有多少个 '#'(\(n,m \le 1000\) )。
暴力遍历每一行进行统计。
C
题目:给定 \(N\) 个数的数列 \(A\),开始时有 \(1\) 只变形虫,第 \(i\) 时刻时,第 \(i\) 只变形虫会变化为 \(2i\) 与 \(2i+1\) ,定义这两只变形虫的亲代为 \(A_i\),求每只变形虫距离 \(1\) 号虫间隔几代,对 \(2N+1\) 只虫输出答案 (\(N \le 2 \times 10^5\))。
按题意模拟即可,注意可能亲代编号比当前的大,用搜索实现。
D
题目:给定数列 \(A\) 以及 \(x,y\) 要求判断是否有一个点集满足以下条件(\(N \le 1000,|x|,|y| \le 10^4,A_i \le 10\) )。
- \(P_0=(0,0),P_1=(A_1,0),P_N=(x,y)\)。
- \(P_i\) 与 \(P_{i-1}\) 的距离为 \(A_i\)。
- \(\angle P_{i-1} P_i P_{i+1}\) 为 \(90^\circ\)。
题目等同与将点 \(B(0,0)\) 每次选择一维加减 \(A_i\),最后能否成为 \((x,y)\)。
发现当\(i\)为奇数时第一维改变,反之第二维。
数据范围较小,对两位分别进行 \(O(NV)\) 的dp,定义 \(f_{i,j}\) 表示前 \(i\) 个点 能否和为 \(j\)。转移是平凡的。
E
题目:给定平面直角坐标系上 \(n\) 个小镇和 \(m\) 个加速站,从 \((0,0)\) 出发,每经过一个加速站就可以使速度乘 \(2\),重复经过加速站无用,求最少时间遍历所有小镇并回到 \((0,0)\)。(\(n \le 12,m \le 5\))
发现 \(n,m\) 规模很小考虑状压dp,记录以及经过的位置与当前从哪个位置出发,转移是平凡的。
F
河中有 \(N\) 条鱼,每条鱼都有出发位置 \(x_i\),速度 \(v_i\) 以及重量 \(w_i\),现在让你在任意时刻选择一段长度为 \(A\) 的区间,使得 \(\sum w\) 最大。(\(N \le 2000,x_i,v_i,w_i \le 10^9\))
考虑钦定一条鱼在这个区间的右端点上,正确性显然。现在就有这个区间在第 \(0\) 时刻位置。根据其他鱼相对的初始位置与速度计算出每一条鱼进出区间的时刻 (记为 \(s_i,t_i\))。
将鱼以 \(s\) 为第一关键字排序,用扫描线把所有鱼可能的在与不在区间的状态遍历并取 max
复杂度为 \(O(n^2 \log n)\)
G
给定一个 \(N\) 行 \(M\) 列的矩形,每个位置上有'.'或'#'。前者表示当前位置为空,后者表示当前位置有障碍。现在可以在空位置放置监控,监控可以监控上下左右四个方向,一个监控只有一个方向,可以看到该方向上没有被障碍遮挡的位置,现在求最少用多少个监控可以覆盖所有的空位置。(\(N,M \le 300\))
下面用 0 指代'.',用 1 指代'#'。
发现最优答案一定可以被以下方式构造:在一个 0 的极长横向连续段的左端放置一个向右监控,在一个 0 的极长纵向连续段顶端放置一个向下的监控。正确性显然。
记 \(f_i,g_i\) 表示点 \(i\) 所在极长横向\纵向 0 连续段的 左端\顶端,发现 \(f_i,g_i\) 必有一个点放置监控。
容易想到二分图最小点覆盖,使用网络流解决,复杂度 \(O(n^3)\)
Ex
题目:定义函数 \(S(A,B)=\{A_1 \oplus B_1,A_2 \oplus B_2,A_3 \oplus B_3 … A_n \oplus B_n\}\),现在给定一个序列 \(A\),有 \(q\) 个询问,每个询问给定 \(a,b,c,d,e,f\),求 \(S(A(a,b),A(c,d))\) 字典序是否严格小于 \(A(e,f)\)。(\(q \le 5 \times 10^4,n \le 5 \times 10^5\))
首先考虑运算是 \(+\) 要怎么做,发现可以预处理出序列的哈希值,然后二分 \(S(A(a,b),A(c,d))\) 与 A(d,e) 的 LCP。
那么我们现在想要一个哈希函数 \(H(X)\),满足 \(H(A,B)=H(A)\oplus H(B)\),并且可以类似地满足"异或乘法"。
考虑使用异或与 Nim 积,即 \(H(A_i)=H(A_{i-1}) \otimes base \oplus A_i\),其中 \(\otimes\) 表示 Nim 积。
关于 Nim 积可以阅读 这篇 和 这篇 博客。
剩下的内容就是二分了,复杂度为 \(O(q \log^3 n)\)。
点击查看代码
#include<bits/stdc++.h>
#define reg register
#define int long long
using namespace std;
inline int read(){
int k=1,x=0;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') k=-1; ch=getchar();}
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-48,ch=getchar();
return k*x;
}
inline int cmin(reg int x,reg int y){return x<y?x:y;}
const int N=5e5+10;
int n,m,A[N];
#define ull unsigned long long
ull f[300][300],hsh[N],pw[N],base;
mt19937_64 rnd(333);
inline ull Nimp(reg ull x,reg ull y,reg int p){
if (x<=1||y<=1) return x*y; if (p<8&&f[x][y]) return f[x][y];
reg ull a=x>>p,b=((1ull<<p)-1)&x,c=y>>p,d=((1ul<<p)-1)&y;
reg ull bd=Nimp(b,d,p>>1),ac=Nimp(Nimp(a,c,p>>1),1ull<<p>>1,p>>1),res;
res=((Nimp(a^b,c^d,p>>1)^bd)<<p)^ac^bd;
if (p<8) return f[x][y]=res; return res;
}
inline ull query(reg int l,reg int r){return hsh[r]^Nimp(hsh[l-1],pw[r-l+1],64);}
signed main(){
for (reg int i=0;i<256;i++) for (reg int j=0;j<256;j++) f[i][j]=Nimp(i,j,8);
n=read();m=read();
for (reg int i=1;i<=n;i++) A[i]=read();
pw[0]=1,hsh[0]=0,base=rnd();
for (reg int i=1;i<=n;i++) hsh[i]=Nimp(hsh[i-1],base,64)^A[i],pw[i]=Nimp(pw[i-1],base,64);
while (m--){reg int a=read(),b=read(),c=read(),d=read(),e=read(),f=read();
reg int l=0,r=cmin(b-a+1,f-e+1)+1,ans=0;
while (l+1<r){ reg int mid=l+r>>1; query(a,a+mid-1)^query(c,c+mid-1)^query(e,e+mid-1)?r=mid:l=mid,ans=mid;} ans=l;
if (e+ans-1==f) puts("No"); else{
if (a+ans-1==b||(A[a+ans]^A[c+ans])<A[e+ans]) puts("Yes"); else puts("No");
}
}
return 0;
}
ABC274 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 【11个适合毕设的Python可视化大屏】用pyecharts开发拖拽式可视化数据大屏
你好,我是@马哥python说,一枚10年程序猿. 一.效果演示 以下是我近期用Python开发的原创可视化数据分析大屏,非常适合毕设用,下面逐一展示:(以下是截图,实际上有动态交互效果哦) 以下大屏 ...
- 2021-12-26:给定一个长度为n的数组arr,求有多少个子数组满足 : 子数组两端的值,是这个子数组的最小值和次小值,最小值和次小值谁在最左和最右无所谓。 n<=100000(10^5) n*
2021-12-26:给定一个长度为n的数组arr,求有多少个子数组满足 : 子数组两端的值,是这个子数组的最小值和次小值,最小值和次小值谁在最左和最右无所谓. n<=100000(10^5) ...
- 2021-07-07:股票问题4。给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成
2021-07-07:股票问题4.给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你最多可以完成 ...
- IBM小型机 - AIX系统配置IP
AIX系统网口配置IP 前言 新部署的系统都是要通过IP来访问的,但是AIX系统配置IP的方式和Linux的不一样: 为了配置后可以通过远程访问系统,我们要给网口配置上IP. 操作步骤 1.新部署的A ...
- Django 14天从小白到进阶- Day1 Django 初识
来自作者:金角大王 本节内容 Http原理介绍 自行开发一个Web框架 WSGI介绍 Django介绍 MVC/MTV Django安装 创建项目与APP 开发第一个页面 为什么学Django? Go ...
- 理论+实操,带你了解多沙箱容器运行时Kuasar
摘要:华为云DTSE技术布道师张天阳结合沙箱容器发展历程,介绍华为云多沙箱容器运行时 Kuasar 项目优势,开启多沙箱容器运行时上手实践体验. 本文分享自华为云社区<理论+实操,带你了解多沙箱 ...
- 2013年蓝桥杯C/C++大学B组省赛真题(马虎的算式)
题目描述: 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是 ...
- 500行代码手写docker-实现硬件资源限制cgroups
(5)500行代码手写docker-实现硬件资源限制cgroups 本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一 ...
- ABP - 依赖注入(2)
依赖注入的使用 构造方法注入 这是将服务注入类的最常用方法,是将依赖项注入类的首选方式,也是微软推崇的模式.这样,除非提供了所有构造方法注入的依赖项,否则无法构造类,显示的声明了类必需的服务,使开发人 ...
- WPF中进度条同步实现
WPF界面的编写 滑动条的显示 //前台界面的设计 <Border Grid.Row="1" Background="Transparent" Borde ...