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】的更多相关文章

  1. 【UOJ Round #5】

    构造+贪心/数论 为什么只有两个标题呢……因为第二题我不会…… 怎样提高智商 构造题……然而一开始半天我都yy不出来…… 后来我想:这题应该不会特别麻烦,而且既然样例只给了1,可能再给大一点就让人发现 ...

  2. 【UOJ Round #1】

    枚举/DP+排列组合 缩进优化 QAQ我当时一直在想:$min\{ \sum_{i=1}^n (\lfloor\frac{a[i]}{x}\rfloor + a[i] \ mod\ x) \}$ 然而 ...

  3. 【UOJ Round #3】

    枚举/二分 C题太神窝看不懂…… 核聚变反应强度 QwQ很容易发现次小的公约数一定是gcd的一个约数,然后……我就傻逼地去每次算出a[1],a[i]的gcd,然后枚举约数……这复杂度……哦呵呵... ...

  4. 【CS round 34】Minimize Max Diff

    [题目链接]:https://csacademy.com/contest/round-34/task/minimize-max-diff/ [题意] 给你n个数字; 数组按顺序不下降; 让你删掉k个数 ...

  5. 【CS Round 34】Max Or Subarray

    [题目链接]:https://csacademy.com/contest/round-34/summary/ [题意] 让你找一个最短的连续子串; 使得这个子串里面所有数字or起来最大; [题解] 对 ...

  6. UOJ #30【CF Round #278】Tourists

    求从$ x$走到$ y$的路径上可能经过的最小点权,带修改  UOJ #30 $ Solution:$ 如果两个点经过了某个连通分量,一定可以走到这个连通分量的最小值 直接构建圆方树,圆点存原点的点权 ...

  7. UOJ #30. 【CF Round #278】Tourists

    Description Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市.第 j 条路连接城市 aj 和 bj.每天,都有成千上万的游客来到 Cyberland ...

  8. 【57.97%】【codeforces Round #380A】Interview with Oleg

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. 【42.86%】【Codeforces Round #380D】Sea Battle

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

随机推荐

  1. LoadRunner FAQ2

    LR中参数的定义和赋值 1.参数的赋值和取值 lr_save_string("hello world","param"); lr_eval_string(&qu ...

  2. Kylin启动时错误:Failed to find metadata store by url: kylin_metadata@hbase 解决办法

    一.问题背景 安装kylin后使用命令 $ kylin.sh start 后出现Failed to find metadata store by url: kylin_metadata@hbase的错 ...

  3. Windows-caffe配置

    我在博客园的第一篇博客开始了,好紧张,好激动,好淫荡...哈哈O(∩_∩)O哈! 下面开始进入正题.配置环境为windows7+cuda7.5+vs2013+matlab2014a 之前用的happy ...

  4. Java8Lambda表达式

    “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个 ...

  5. eclipse 设置文本模板

    1.开打点击Windows选择Prederences选项卡 2.弹出窗口,选择Java选项卡下的Code Style选项卡 3.选择Code Templates选项卡 打开Code选择,选择New J ...

  6. Contest Reviews(Updating)

    现在每天至少一套题又不太想写题解…… 那就开个坑总结下每场的失误和特定题目的技巧吧 2018.8.25[ZROI] T3传送门 T1:找规律找崩了…… 最好不要一上来就钻进大讨论,先想有没有普适规律 ...

  7. 关于void main()的误区

    很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 ...

  8. 20162327WJH2016-2017-2《程序设计与数据结构》课程总结

    20162327WJH2016-2017-2<程序设计与数据结构>课程总结 一.每周作业链接汇总 第一周作业:算法分析 第三周作业:查找与排序 第五周作业:有关栈的总结 第七周作业:树的有 ...

  9. N!(N的阶乘)最末位非0的求解方法

    问题是求关于N!的最后一位非0位, 如3!=6,最后一位非0位为6, 5!=120, 最后一位非0位为2.怎么样快速的求出最后一位非0位呢? 最朴素的想法就是先求出N!的结果,再求出结果的最后一位非0 ...

  10. 解决Jboss中log4j在应用里面无法使用的问题

    [参考1]解决Jboss中log4j在应用里面无法使用的问题http://developer.51cto.com/art/200906/128691.htm文章中说到“如果你的应用下存在WEB-INF ...