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

  1. Noip模拟68 2021.10.4

    T1 玩水 成功在考试的时候注释掉正解,换成了暴力,只因为不敢保证正解思路的正确 脑子瓦特了,不知道把暴力打成函数拼在一起,不知道当时咋想的.... 就是你找有没有一个点上面和左面的字符一样, 如果这 ...

  2. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  3. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  4. NOIP模拟17.9.22

    NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥

  5. NOIP 模拟4 T2

    本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spf ...

  6. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  7. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  8. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  9. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  10. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

随机推荐

  1. nginx重新整理——————分析log数据[六]

    前言 简单介绍一下goaccess. 正文 安装: yum install epel-release yum install GeoIP GeoIP-devel GeoIP-data yum inst ...

  2. 重新整理数据结构与算法(c#)——KMP破解[二十七]

    前言 很多人把KMP和暴力破解分开,其实KMP就是暴力破解,整个高大上的名字,难道还不是去试错匹配吗? KMP是这样子的,比如说: 绿色部分是我要匹配的. 按照一般写法是这样子的: ABABA 去匹配 ...

  3. @EnableDiscoveryClient 注解如何实现服务注册与发现

    @EnableDiscoveryClient 是如何实现服务注册的?我们首先需要了解 Spring-Cloud-Commons 这个模块,Spring-Cloud-Commons 是 Spring-C ...

  4. 使用ISS服务器方式跑C#程序

    使用ISS服务器方式跑C#程序 VS2010,临时接了一个C#系统的小系统,需要本地调试跑一下 但是老是在conn.open提示06413,简单来说就是连接不上数据库 尝试了很多方法,最后还是决定配置 ...

  5. 我在阿里巴巴做 Serverless 云研发平台

    简介: Serverless 云研发平台经过这半年多的蜕变,已经从简单的解决工程链路的平台演进成一个面向研发.上线.运维的全生命周期研发平台,后续要解决的命题会集中在用户低门槛上. 作者 | 林昱(苏 ...

  6. 每次都需要解释大量指令?使用 PolarDB-X 向量化引擎

    简介: 向量化引擎为PolarDB-X的表达式计算带来了显著的性能提升. 介绍 PolarDB-X是阿里巴巴自研的云原生分布式数据库,采用了计算-存储分离的架构,其中计算节点承担着大量的表达式计算任务 ...

  7. 【详谈 Delta Lake 】系列技术专题 之 湖仓一体( Lakehouse )

    简介: 本文翻译自大数据技术公司 Databricks 针对数据湖 Delta Lake 的系列技术文章.众所周知,Databricks 主导着开源大数据社区 Apache Spark.Delta L ...

  8. Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

    ​简介: 服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势.Dubbo3.0 是 Dub ...

  9. dotnet 在 UOS 统信系统上运行 UNO 程序输入时闪烁黑屏问题

    本文记录我在虚拟机内安装了 UOS 统信系统,运行 UNO 的基于 Skia 的 Gtk 应用程序时,在输入的过程中不断窗口闪黑问题 本质上说这个问题和 UNO 毫无关系,这是一个 OpenGL 硬件 ...

  10. dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输

    我在一台设备上安装了 UOS 系统,但是我如何在我的主开发设备上和 UOS 系统传输文件?通过 dotnet tool 工具可以完成大部分的工作,当然,使用 dotnet tool 不仅做文件传输,还 ...