【UOJ Round #8】
A
一道不错的题,虽然大家都觉得是水题,然而蒟蒻我想出来的好慢……Orz alpq
发现其实就是一个网格图,每一个大块都是同一颜色……横纵坐标互不干扰……
//UOJ Round #8 A
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=1e5+;
/*******************template********************/ int n,m,x[N],y[N];
int bel1[N],bel2[N],cnt1,cnt2;
int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
n=getint(); m=getint();
F(i,,n) x[i]=getint();
F(i,,m) y[i]=getint();
int now=x[];
bel1[]=; cnt1=;
F(i,,n){
if (x[i]!=now){
cnt1++;
now=x[i];
}
bel1[i]=cnt1;
}
now=y[]; bel2[]=; cnt2=;
F(i,,m){
if (y[i]!=now){
cnt2++;
now=y[i];
}
bel2[i]=cnt2;
} int Q=getint();
F(i,,Q){
int x1=getint(),y1=getint(),x2=getint(),y2=getint();
if (x2<x1) swap(x1,x2); if (y2<y1) swap(y1,y2);
int t1=min(bel1[x2]-bel1[x1],cnt1-bel1[x2]+bel1[x1]-(x[]==x[n]));
int t2=min(bel2[y2]-bel2[y1],cnt2-bel2[y2]+bel2[y1]-(y[]==y[m]));
printf("%d\n",t1+t2);
}
return ;
}
B
线段树的好题!(话说为什么我感觉那么像KD-Tree……
前两个操作就是普通线段树维护就可以……
查询的时候,感觉就是将n个点的横坐标固定成1~n了……然后用KD-Tree的估价函数来判断是否进入子树查询……
我一开始query写的逗比了,膜了一下vfk的姿势……
然后这题我TLE了好久……
重点是题解里说的:先判断右子树,再判断左子树!!!(就像KD-Tree的时候,要先像估价值较大的那一侧走啊!我怎么给忘了……sad
//UOJ Round #8 B
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=1e5+;
/*******************template********************/ int n,m,x0,v[N],mn[N<<],mx[N<<];
bool rev[N<<];
inline int ran(){
x0=((LL)x0*+)%;
return x0/;
}
#define mid (l+r>>1)
#define L (o<<1)
#define R (o<<1|1)
void maintain(int o,int l,int r){
mn[o]=min(mn[L],mn[R]);
mx[o]=max(mx[L],mx[R]);
}
void change(int o){
rev[o]^=;
mn[o]=-mn[o]; mx[o]=-mx[o];
swap(mn[o],mx[o]);
}
void Push_down(int o,int l,int r){
if (rev[o]){
change(L); change(R);
rev[o]=;
}
}
void build(int o,int l,int r){
if (l==r){
mn[o]=mx[o]=ran()%;
}else{
build(L,l,mid);
build(R,mid+,r);
maintain(o,l,r);
}
}
void update(int o,int l,int r,int p,int val){
if (l==r){
mn[o]=mx[o]=val;
}else{
Push_down(o,l,r);
if (p<=mid) update(L,l,mid,p,val);
else update(R,mid+,r,p,val);
maintain(o,l,r);
}
}
void modify(int o,int l,int r,int ql,int qr){
if (ql<=l && qr>=r){
change(o);
}else{
Push_down(o,l,r);
if (ql<=mid) modify(L,l,mid,ql,qr);
if (qr>mid) modify(R,mid+,r,ql,qr);
maintain(o,l,r);
}
} LL ans=;
int a,b,c;
inline LL calc(int x,int y){return (LL)a*x+(LL)b*y+(LL)c*x*y;}
void query(int o,int l,int r,int ql,int qr){
if (calc(min(r,qr),mx[o])<=ans) return;
if (l==r){
ans=calc(l,mx[o]);
return;
}
Push_down(o,l,r);
if (qr>mid) query(R,mid+,r,ql,qr);
if (ql<=mid) query(L,l,mid,ql,qr);
} int main(){
#ifndef ONLINE_JUDGE
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
#endif
n=getint(); m=getint(); x0=getint();
// F(i,1,n) v[i]=ran()%100001;
build(,,n);
char cmd;
F(i,,m){
while(cmd=getchar(),cmd!='C' && cmd!='R' && cmd!='Q');
if (cmd=='C'){
int p=ran()%n+,y=ran()%;
update(,,n,p,y);
}else if (cmd=='R'){
int ql=ran()%n+,qr=ran()%n+;
if (qr<ql) swap(ql,qr);
modify(,,n,ql,qr);
}else if (cmd=='Q'){
a=getint(),b=getint(),c=getint();
int ql=ran()%n+,qr=ran()%n+;
if (qr<ql) swap(ql,qr);
ans=;
query(,,n,ql,qr);
printf("%lld\n",ans);
}
}
return ;
}
【UOJ Round #8】的更多相关文章
- 【UOJ Round #5】
构造+贪心/数论 为什么只有两个标题呢……因为第二题我不会…… 怎样提高智商 构造题……然而一开始半天我都yy不出来…… 后来我想:这题应该不会特别麻烦,而且既然样例只给了1,可能再给大一点就让人发现 ...
- 【UOJ Round #1】
枚举/DP+排列组合 缩进优化 QAQ我当时一直在想:$min\{ \sum_{i=1}^n (\lfloor\frac{a[i]}{x}\rfloor + a[i] \ mod\ x) \}$ 然而 ...
- 【UOJ Round #3】
枚举/二分 C题太神窝看不懂…… 核聚变反应强度 QwQ很容易发现次小的公约数一定是gcd的一个约数,然后……我就傻逼地去每次算出a[1],a[i]的gcd,然后枚举约数……这复杂度……哦呵呵... ...
- 【CS round 34】Minimize Max Diff
[题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数 ...
- 【CS Round 34】Max Or Subarray
[题目链接]:https://csacademy.com/contest/round-34/summary/ [题意] 让你找一个最短的连续子串; 使得这个子串里面所有数字or起来最大; [题解] 对 ...
- UOJ #30【CF Round #278】Tourists
求从$ x$走到$ y$的路径上可能经过的最小点权,带修改 UOJ #30 $ Solution:$ 如果两个点经过了某个连通分量,一定可以走到这个连通分量的最小值 直接构建圆方树,圆点存原点的点权 ...
- UOJ #30. 【CF Round #278】Tourists
Description Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市.第 j 条路连接城市 aj 和 bj.每天,都有成千上万的游客来到 Cyberland ...
- 【57.97%】【codeforces Round #380A】Interview with Oleg
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【42.86%】【Codeforces Round #380D】Sea Battle
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
随机推荐
- USACO 6.5 All Latin Squares
All Latin Squares A square arrangement of numbers 1 2 3 4 5 2 1 4 5 3 3 4 5 1 2 4 5 2 3 1 5 3 1 2 4 ...
- Django实战(15):Django实现RESTful web service
曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful w ...
- 老的API实现WordCount
使用Hadoop版本0.x实现单词统计 package old; import java.io.IOException; import java.net.URI; import java.util.I ...
- Hive分区和桶的概念
Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...
- Java反射机制demo(七)—反射机制与工厂模式
Java反射机制demo(七)—反射机制与工厂模式 工厂模式 简介 工厂模式是最常用的实例化对象模式. 工厂模式的主要作用就是使用工厂方法代替new操作. 为什么要使用工厂模式?直接new不好吗? 直 ...
- 洛谷P1154 奶牛分厩
P1154 奶牛分厩 173通过 481提交 题目提供者该用户不存在 标签高性能 难度普及- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 测试点3??? 求助!超时了 我抗议 ...
- CentOS7配置ssh证书登录无效
今天配置A服务器使用root用户ssh免密登录服务器B,配置过程很简单,由于这两台服务器开发人员之前生成过证书,我就直接在A服务器执行如下命令即可 # ssh-copy-id -i ~/.ssh/id ...
- [ 原创 ]新手作品-我的第一款安卓自学作品---YY音乐诞生了
YY音乐---我前前后后断断续续花了3个月时间,边从0基础开始学Android 和Java,边开始做自己的Android第一款软件,之间看了许多教学视频,许多博客,才算Android入了一点点门道,终 ...
- 使用SoapUI测试windows身份验证的webservice
有个朋友问到用soapui测试wcf服务时如果使用windows身份验证要怎么传输凭据,于是自己试了一下.其实服务端是wcf还是webservice还是webapi都无所谓,关键是windows身份验 ...
- 实现多线程的另一种方式-Callable
package com.mldn.thread; import java.util.concurrent.ExecutionException; import java.util.concurrent ...