当前位置: 首页 > news >正文

8.20NOIP Day6模拟赛

T1

容易观察到,只有出现?io?时可能使用交换操作,其他情况可以被另外三个所取代,所以特判一下即可

然后还需要更新当前原字母的贡献,同时对其他三个操作各跑一次转移,力大砖飞即可

想打表也没人拦着你

#include<bits/stdc++.h>
#define N 100005
using namespace std;
char s[N];
int x[N],dp[N][10];
signed main(){int T;scanf("%d",&T);while(T--){scanf("%s",s+1);s[0]=' ';int n=strlen(s),ans=4;n--;for(int i=1;i<=n;i++){if(s[i]=='n')x[i]=1;else if(s[i]=='o')x[i]=2;else if(s[i]=='i')x[i]=3;else if(s[i]=='p')x[i]=4;else x[i]=0;}for(int i=0;i<=n;i++)for(int j=0;j<=4;j++)dp[i][j]=j;for(int i=1;i<=n;i++){if(x[i])dp[i][x[i]]=min(dp[i][x[i]],dp[i-1][x[i]-1]);if(i>=2&&x[i]==2&&x[i-1]==3)dp[i][3]=min(dp[i][3],dp[i-2][1]+1);for(int j=4;j;j--)dp[i][j]=min(dp[i][j],dp[i-1][j-1]+1);for(int j=1;j<=4;j++)dp[i][j]=min(dp[i][j],dp[i-1][j]+1);for(int j=1;j<=4;j++)dp[i][j]=min(dp[i][j],dp[i][j-1]+1);ans=min(ans,dp[i][4]);}printf("%d\n",ans);}return 0;
}

T2

考虑正难则反

显然的,正常情况下一个点无法被到达当且仅当它的上方和左方都有障碍

那么我们按照行数为第一关键字排序,列数为第二关键字排序,计算每一个有障碍的行有多少格子无法被抵达,需要线段树维护后缀有障碍的列数

同时需要对第一行或第一列有障碍的情况进行特判

#include<bits/stdc++.h>
#define int long long
#define N 200005
using namespace std;
struct Ty{int x,y;bool operator <(const Ty &a)const{if(x!=a.x)return x<a.x;else return y>a.y;}
}x[N];
vector<int>w[N];
int y[530000];
void update(int u,int l,int r,int id){if(l==r){y[u]=1;return;}int mid=(l+r)/2;if(id<=mid)update(u*2,l,mid,id);else update(u*2+1,mid+1,r,id);y[u]=y[u*2]+y[u*2+1];return;
}
int query(int u,int l,int r,int fl,int fr){if(l==fl&&r==fr)return y[u];int mid=(l+r)/2;if(fr<=mid)return query(u*2,l,mid,fl,fr);else if(fl>mid)return query(u*2+1,mid+1,r,fl,fr);else return query(u*2,l,mid,fl,mid)+query(u*2+1,mid+1,r,mid+1,fr);
}
signed main(){int n,m,k;scanf("%lld%lld%lld",&n,&m,&k);for(int i=1;i<=k;i++)scanf("%lld%lld",&x[i].x,&x[i].y);sort(x+1,x+k+1);for(int i=1;i<=k;i++)w[x[i].x].push_back(x[i].y);int ans=0,flag=0;if(w[1].size())for(int i=w[1][w[1].size()-1];i<=m;i++)update(1,1,m,i);for(int i=1;i<=n;i++){for(int j=0;j<w[i].size();j++)update(1,1,m,w[i][j]);if(flag)ans+=query(1,1,m,1,m);else if(w[i].size()){ans+=query(1,1,m,w[i][w[i].size()-1],m);if(w[i][w[i].size()-1]==1)flag=1;}}printf("%lld\n",n*m-ans);return 0;
}
http://www.sczhlp.com/news/21115/

相关文章:

  • 帮人注册网站_做app上海排名优化推广工具
  • 路得威网站谁做的站长工具免费
  • 深圳html5网站建设万网域名注册
  • 游戏网站开发过程鄂尔多斯seo
  • 网站开发设计与实现百度官方认证
  • 做网站用什么软件方便微信社群营销怎么做
  • 微信投票网站怎么做北京网络推广有哪些公司
  • 购买马来网站域名培训网站搭建
  • 做美女网站违法不啊推广怎么推
  • 珠海网站搜索引擎优化关键词推广和定向推广
  • 穿着高跟鞋做的网站西安优化外包
  • ISP关键模块剖析:Demosaic
  • Ubuntu断网问题乌龙记录
  • Hello, World!
  • 手机端网站建设的注意事项app001推广平台官网
  • 如何创建手机网站最新国际军事动态
  • 语音定制软件网站seo优化推广外包
  • 手机网站建设和企业管理培训
  • 高性能网站建设指南pdf珠海网站建设制作
  • 响应式网站建站系统磁力搜索器 磁力猫
  • web是做网站的吗网页搜索引擎
  • 长丰网站制作网站开发月薪多少钱
  • 宝鸡建设公司网站谷歌seo优化中文章
  • 苏州前几天网站建设深圳百度搜索排名优化
  • 【自学嵌入式:stm32单片机】串口收发HEX数据包
  • cursor基本配置
  • 2025.8.20模拟赛
  • 建设一个网站要多少钱台州关键词优化报价
  • 电商网站开发实验报告引流推广怎么做
  • 新疆生产建设兵团环保局网站域名网站