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/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
随机推荐
- sql 语句系列(加减乘除与平均)[八百章之第十四章]
avg的注意事项 一张t2表: select * from t2 select AVG(sal) from t2 得到的结果是: 本来我们得到的结果应该是10的.但是得到的结果确实15. 这是因为忽略 ...
- 重新点亮linux 命令树————守护进程[二十三]
前言 简单整理一下守护进程. 正文 守护进程一般是开机启动的. 使用nohup 与 & 符号配合运行一个命令 nohup命令使进程忽略hangup(挂起)信号 使用tail 查看log文件. ...
- Deep Learning on Graphs: A Survey第五章自动编码论文总结
论文地址:https://arxiv.org/pdf/1812.04202.pdf 最近老师让我们读的一片论文,已经开组会讲完了,我负责的是第五章,图的自动编码,现在再总结一遍,便于后者研读.因为这篇 ...
- 力扣1768(java&python)-交替合并字符串(简单)
题目: 给你两个字符串 word1 和 word2 .请你从 word1 开始,通过交替添加字母来合并字符串.如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾. 返回 合并后的 ...
- MaxCompute Tunnel 技术原理及开发实战
简介: MaxCompute(原名ODPS)是一种快速.完全托管的EB级数据仓库解决方案, 致力于批量结构化数据的存储和计算,为用户提供数据仓库的解决方案及分析建模服务.Tunnel是MaxCompu ...
- Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题
简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang.众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇.Java 版 Seata ...
- 如何避免 Go 命令行执行产生“孤儿”进程?
简介: 在 Go 程序当中,如果我们要执行命令时,通常会使用 exec.Command ,也比较好用,通常状况下,可以达到我们的目的,如果我们逻辑当中,需要终止这个进程,则可以快速使用 cmd.Pro ...
- AI让边缘更智能 边缘让AI无处不在
简介: 城市管理和城市服务逐步走向智能化,智慧化.到2019底,全国100%的副省级城市,95%以上的地级市,以及50%以上的县级市均提出建设新型智慧城市,并已经有32个主要城市成立了专门的大数据管 ...
- OpenKruise v0.10.0 版本发布:新增应用弹性拓扑管理、应用防护等能力
简介: 阿里云开源的云原生应用自动化管理套件.CNCF Sandbox 项目 -- OpenKruise,今天发布 v0.10.0 新版本,这也会是 OpenKruise v1.0 之前的最后一个 m ...
- [Gin] 单文件极简 HTTP Server 流程分析 ( gin-gonic/gin )
/** * example.go * * @link https://cnblogs.com/farwish */package main import "github.com/gin-go ...