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/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
随机推荐
- linux 允许root 用户登录(旧)
前言 旧博客迁移的内容 正文 vi /etc/ssh/sshd_config 将PermitRootLogin值改yes service sshd restart
- Java:使用POI和泛型生成excel表格
首先创建一个maven项目,导入POI依赖包 <dependency> <groupId>org.apache.poi</groupId> <artifact ...
- 一个.NET开源的功能丰富、灵活易用的 Windows 窗口增强神器
前言 通常情况下 Windows 中的软件窗口界面一般只包含还原.移动.大小.最大化.最小化.关闭等几个基本的操作: 今天大姚给大家推荐一个.NET开源.免费(MIT License).功能丰富.灵活 ...
- PyFlink 教程(三):PyFlink DataStream API - state & timer
简介: 介绍如何在 Python DataStream API 中使用 state & timer 功能. 一.背景 Flink 1.13 已于近期正式发布,超过 200 名贡献者参与了 Fl ...
- Dubbo 和 HSF 在阿里巴巴的实践:携手走向下一代云原生微服务
简介: HSF 和 Dubbo 的融合是大势所趋.为了能更好的服务内外用户,也为了两个框架更好发展,Dubbo 3.0 和以 Dubbo 3.0 为内核适配集团内基础架构生态的 HSF 3 应运而生 ...
- [Kali] Kali Linux 环境准备
虚拟机和系统: Mac 的 Vmware Fusion:https://www.vmware.com/cn/products/fusion/fusion-evaluation.html 序列号去 ...
- [Go] golang-migrate/migrate 快速使用指南
1. CLI 用途的安装 [文档] [确保] CLI 工具使用 go 命令安装时,不应该在 go.mod 所在的目录中执行命令,也就是先进入到其它非项目目录内. $ go get -tags 'pos ...
- WPF 创建空白图片
本文告诉大家如何在 WPF 创建空白图片,可以创建1像素图片 可以使用 BitmapSource 的 Create 方法创建空白图片 // 限制不能创建小于2x2的图片 const int width ...
- petalinux 报错总结
Failed to menu config project component.... 解决办法 此处是由于Terminal(终端)的界面太窄导致的,把Terminal(终端)界面拉宽即可:重新执行命 ...
- java 高并发下超购问题解决
//@desc:java 高并发下锁机制初探 //@desc:码字不宜,转载请注明出处 //@author:张慧源 <turing_zhy@163.com> //@date:2021/1 ...