NOIP模拟68
T1 玩水
解题思路
我们称一个点合法当且仅当 \(s_{i-1,j}=s_{i,j-1}\) 。
于是如果一个合法点在它的左上或者右下也可以相邻有一个合法点就是一个合法的图。
树状数组维护即可
code
#include <bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define f() cout<<"Failed"
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=1e3+10;
int T,n,m,tre[N][N];
char s[N][N];
int lowbit(int x){return x&(-x);}
void insert(int x,int y,int val)
{
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=m;j+=lowbit(j))
tre[i][j]+=val;
}
void clear(int x,int y)
{
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=m;j+=lowbit(j))
tre[i][j]=0;
}
int query(int x,int y)
{
int temp=0;
for(int i=x;i;i-=lowbit(i))
for(int j=y;j;j-=lowbit(j))
temp+=tre[i][j];
return temp;
}
bool judge(int x,int y){return s[x-1][y]==s[x][y-1];}
void solve()
{
n=read(); m=read();
for(int i=1;i<=n;i++) scanf("%s",s[i]+1);
for(int i=2;i<=n;i++)
for(int j=2;j<=m;j++)
if(judge(i,j))
{
if(query(i-1,j-1)) return printf("1\n"),void();
if(judge(i-1,j)||judge(i,j-1)) return printf("1\n"),void();
insert(i,j,1);
}
for(int i=2;i<=n;i++)
for(int j=2;j<=m;j++)
if(s[i-1][j]==s[i][j-1])
clear(i,j);
return printf("0\n"),void();
}
signed main()
{
freopen("water.in","r",stdin); freopen("water.out","w",stdout);
T=read(); while(T--) solve();
return 0;
}
T2 假人
优先队列20pts+背包30pts
大坑未补
T3 切题
解题思路
考场上因为数组忘记清空挂了 15pts (45pts code)

虽说是证明看起来高大上,其实就是分别计算每个数对于不同限制的贡献。
线段树维护每一个 \(k\) 的答案,查询最小值。
\(b\) 的值的增减只会影响到 \(c\) 因此对于线段树修改就可以。
\(a\) 的值的修改也只会影响到相邻的值,因此可以树状数组(当然数组也行)查询当前以及更改之后的值按顺序排序的第一个最后一个。
也是线段树上区间修改。
code
#include <bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define f() cout<<"Failed"
#define ls x<<1
#define rs x<<1|1
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=25e4+10,INF=1e18;
int n,m,lim,q,a[N],b[N],c[N],sa[N],sb[N];
struct BIT
{
int tre[N];
inline int lowbit(int x){return x&(-x);}
inline void insert(int x,int val){if(!x) return;for(int i=x;i;i-=lowbit(i))tre[i]+=val;}
inline int query(int x){x=max(1ll,x);int temp=0;for(int i=x;i<=lim;i+=lowbit(i))temp+=tre[i];return temp;}
}B;
struct Segment_Tree
{
struct Node{int dat,laz;}tre[N<<2];
void push_up(int x){tre[x].dat=min(tre[ls].dat,tre[rs].dat);}
void push_down(int x)
{
if(!tre[x].laz) return ;
tre[ls].dat+=tre[x].laz; tre[ls].laz+=tre[x].laz;
tre[rs].dat+=tre[x].laz; tre[rs].laz+=tre[x].laz;
tre[x].laz=0;
}
void insert(int x,int l,int r,int L,int R,int val)
{
if(L>R) return ;
if(L<=l&&r<=R) return tre[x].dat+=val,tre[x].laz+=val,void();
int mid=(l+r)>>1; push_down(x);
if(L<=mid) insert(ls,l,mid,L,R,val);
if(R>mid) insert(rs,mid+1,r,L,R,val);
push_up(x);
}
}T;
signed main()
{
freopen("problem.in","r",stdin); freopen("problem.out","w",stdout);
n=read(); m=read(); lim=max(n,m);
for(int i=1;i<=n;i++) sa[i]=a[i]=read(),B.insert(a[i],1);
for(int i=1;i<=m;i++) sb[i]=b[i]=read(),c[min(n,b[i])]++;
for(int i=n;i>=1;i--) c[i]+=c[i+1];
sort(sa+1,sa+n+1,greater<int>());
for(int i=1;i<=n;i++) T.insert(1,1,n,i,n,c[i]-sa[i]);
q=read();
while(q--)
{
int opt,pos; opt=read(); pos=read();
if(opt==3){b[pos]++;T.insert(1,1,n,b[pos],n,1);}
if(opt==4){b[pos]--;T.insert(1,1,n,b[pos]+1,n,-1);}
if(opt==1){a[pos]++; B.insert(a[pos]-1,-1); B.insert(a[pos],1);T.insert(1,1,n,B.query(a[pos]),n,-1);}
if(opt==2){a[pos]--; B.insert(a[pos]+1,-1); B.insert(a[pos],1);T.insert(1,1,n,B.query(a[pos]+1)+1,n,1);}
printf("%lld\n",(int)(T.tre[1].dat>=0));
}
return 0;
}
T4 天下第一
需要用到 LCT 。。。
大坑未补
NOIP模拟68的更多相关文章
- Noip模拟68 2021.10.4
T1 玩水 成功在考试的时候注释掉正解,换成了暴力,只因为不敢保证正解思路的正确 脑子瓦特了,不知道把暴力打成函数拼在一起,不知道当时咋想的.... 就是你找有没有一个点上面和左面的字符一样, 如果这 ...
- NOIP模拟赛-2018.11.6
NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...
- NOIP模拟题汇总(加厚版)
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...
- NOIP模拟17.9.22
NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥
- NOIP 模拟4 T2
本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spf ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
随机推荐
- 日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践
导读:当今生活节奏日益加快,企业面对不断增加的海量信息,其信息筛选和处理效率低下的困扰与日俱增.由于用户营销不够细化,企业 App 中许多不合时宜或不合偏好的消息推送很大程度上影响了用户体验,甚至引发 ...
- 系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术
简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程. 文/龙蜥社区高性能网络SIG 一.引言 通过上一篇文章 <系列解读SMC-R:透 ...
- [FAQ] 适用于 macOS / Arm64 (M1/M2) 的 VisualBox
使用与 Windows.Linux.macOS 的x86架构的一般在下面地址中下载: Download VisualBox:https://www.virtualbox.org/wiki/Down ...
- [K8s] Pod 与容器设计模式 Sidecar
为什么 Pod 必须是原子调度? 在两个容器紧密协作的场景中,避免调度失败问题. Pod 解决了里面多个容器之间高效共享某些资源和数据,共享网络.共享存储. 容器设计模式? 通过在 Pod 里定义专门 ...
- NopCommerce支持多种类型的数据库
本文章的内容是根据本人阅读NopCommerce源码的理解,如有不对的地方请指正,谢谢. 阅读目录 1.类结构关系图 2.分析 3.NopCommerce应用 类结构关系图 分析 NopObjectC ...
- Istio微服务入门---通过istio部署微服务实现灰度发布(15)
一.Istio简介 1.1 Istio介绍 官方文档:https://istio.io/docs/concepts/what-is-istio/ 中文官方文档:https://istio.io/zh/ ...
- 第一章 Jenkins安装配置
Jenkins官网 # 官网: https://www.jenkins.iohttps://www.jenkins.io/zh/ # docker安装: https://www.jenkins.io/ ...
- c#胖东来小程序自动购物程序(接单,windows桌面程序、linux程序、网络应用等等)
一.程序效果 自动打开胖东来小程序,自动购物 二.实现 先截屏,然后利用opencv库识别下一步按键所在位置,然后使用mouse_event控制鼠标,模拟人的动作 第一步,截取屏幕 static Bi ...
- 【详细教程】手把手教你开通YouTube官方API接口(youtube data api v3)
一.背景调查 1.1 youtube介绍 众所周知,youtube是目前全球最大的视频社交平台,该平台每天产生大量的视频内容,涵盖各种主题和类型,从音乐视频到教育内容,再到娱乐节目和新闻报道等.You ...
- 一键自动化博客发布工具,用过的人都说好(oschina篇)
oschina和segmentfault一样,界面非常的清爽. 界面上除了必须的标题,内容之外,还有文章专辑和推广专区这几个选项. 一起来看看在blog-auto-publishing-tools中, ...