Educational Codeforces Round 8
E. Zbazi in Zeydabad
codeforces题目链接
一道CF的E题

晚点补文字,先给代码

//acmer mxc
#include<bits/stdc++.h>
#define mst(s,x) memset(s,x,sizeof(s));
#define sr(x) scanf("%lld",&x);
#define sr2(a,b) scanf("%d%d",&a,&b);
#define sr3(a,b,c) scanf("%d%d%d",&a,&b,&c);
#define sr4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d);
#define f(i,a,n) for(int i=a;i<=n;i++)
#define ff(i) for(int i=1;i<=n;i++)
#define sc(x) cout<<#x<<" : "<<x<<endl;
#define hh cout<<endl;
//#define int __int128
#define pii pair<int,int>
#define int long long
#define pb(x) push_back(x)
#define mk(a,b) make_pair(a,b)
#define dd double
#define inf 0x3f3f3f3f
#define ll __int128
#define fi first
#define se second
using namespace std;
inline ll read()
{ll x=0,w=1; char c=getchar();while(c<'0'||c>'9') {if(c=='-') w=-1; c=getchar();}while(c<='9'&&c>='0') x=(x<<1)+(x<<3)+c-'0',c=getchar();return w==1?x:-x;
}
inline void write(ll x)
{if(x>=10) write(x/10);putchar(x%10+'0');
}
//------------------------------------------------
const int N=3e3+5;
//树状数组维护当前对角线(二维数点)
//从后向前加入树状数组
int r[N][N],l[N][N],lz[N][N];
vector<pii>v[N];
int n,m;
int tree[N<<1][N];
int ask(int k,int x)
{int ans=0;for(;x;x-=x&-x)ans+=tree[k][x];return ans;
}
void add(int k,int x,int val)
{for(;x<=m;x+=x&-x)tree[k][x]+=val;
}
char a[N][N];
void init()
{cin>>n>>m;for(int i=1;i<=n;i++){scanf("%s",a[i]+1);}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='z')l[i][j]=l[i][j-1]+1;else l[i][j]=0; }for(int j=m;j>=1;j--){if(a[i][j]=='z')r[i][j]=r[i][j+1]+1;else r[i][j]=0;}for(int j=1;j<=m;j++){if(a[i][j]=='z')v[j+r[i][j]-1].push_back(mk(i,j));}}for(int i=n;i>=1;i--)for(int j=1;j<=m;j++)if(a[i][j]=='z')lz[i][j]=lz[i+1][j-1]+1;else lz[i][j]=0;
}inline void solve()
{init();int ans=0;for(int j=m;j>=1;j--){for(int i=0;i<v[j].size();i++){add(v[j][i].fi+v[j][i].se,v[j][i].se,1);}for(int i=1;i<=n;i++){if(a[i][j]=='z'){int c=min(l[i][j],lz[i][j]);ans+=ask(i+j,j)-ask(i+j,j-c);}}}printf("%lld\n",ans);return;
}//------------------------------------------------
signed main()
{clock_t c1=clock();
#ifdef LOCALfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
#endif
//==================================int T=1;// cin>>T;for(int i=1;i<=T;i++){solve();}
//==================================
end:cerr<< "Time used:" << clock() - c1 << endl;return 0;
}

406 “Z”型矩阵 思维+树状数组 [代码源][namomo spring camp]每日一题div1相关推荐

  1. 505 新国王游戏 思维 [代码源][namomo spring camp]每日一题div2

    你仔细观察这两个序列,在任意一个位置i以及i+1他们的位置相互交换的话会影响前面的值以及后面的值你仔细观察这两个序列,在任意一个位置i以及i+1他们的位置相互交换的话会影响前面的值以及后面的值你仔细观 ...

  2. Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组

    传送门 文章目录 题意: 思路: 题意: 给你nnn个人,一开始位置分别为1,2,...,n1,2,...,n1,2,...,n,让后mmm个操作,每次都将某个人移动到最前面,其他人依次顺延,求每个人 ...

  3. power oj 2840: 伯陵防线 思维+树状数组

    2840: 伯陵防线 Time Limit: 1000 MS Memory Limit: 262144 KB Total Submit: 9 Accepted: -4 Page View: 81 Su ...

  4. java 树状数组模板源码

    树状数组是一个查询和修改复杂度都为log(n)的数据结构,将树状数组看成一种数据结构,对于一个数组,如果有多次操作,每次的操作有两种:1.修改数组中某一元素的值,2.求和,求数组元素a[1]+a[2] ...

  5. 简单の暑假总结——树状数组

    2.1 树状数组 树状数组,顾名思义,长得像树的数组,用于处理一些单点修改以及区间查询的问题.其时间复杂度为 O(log⁡2n)O(\log _2n)O(log2​n) .如过我们使用一些一般的数据结 ...

  6. 树状数组(树状数组的基本用法与操作)

    什么是树状数组?树状数组简单的来说就是将一个数组模拟树形结构. 树状数组有什么用?树状数组可以将求和的操作从O(n)操作简化为O(logn). 如图所示,横线下方为a数组表示为初试数据:上方为数组c, ...

  7. 数据结构 【树状数组】【线段树】【珂朵莉树】

    一.区间合并 1.AcWing245你能回答这些问题吗 分析: 线段树.维护四个变量,即可实现区间合并. mx 区间最大连续子段和 mx_l 以区间左端点为左界的最大连续字段和 mx_r 以区间左端点 ...

  8. 树状数组(Binary Indexed Tree) 总结

    1."树状数组"数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]. ...

  9. hdu 1892二维树状数组

    这题我知道是用树状数组,可是好久没打树状数组了,就想用普通方法水过去~~结果--结果--水了好多方法都水不过,出题人真狠呐--我的水方法是对于每一次查询,初始化ans=(x2-x1+1)*(y2-y1 ...

最新文章

  1. PCIPCIE MSI中断
  2. 【深度学习笔记】零基础入门深度学习必备知识
  3. python开发一个彩票系统_[宜配屋]听图阁
  4. 洛谷 - P1025 数的划分(计数dp)
  5. 前端学习(3342):ant design中grid排版使用
  6. windows10下安装pytorch并导入pycharm
  7. //监测网络状态(AFNetworking) 服务端 客户端
  8. puts遇到空格无法输出_ACM输出超限|puts与printf
  9. C++20 系列(一)- Hello C++20
  10. git学习4--公钥的配置
  11. vitualbox的一个问题总结
  12. 浏览器地址栏中加入ico图标的二种方法
  13. 开启windows远程共享
  14. PHP爬虫框架phpspider(二) - 分页爬取写入数据库
  15. socks5 python_用Python写socks5服务器端
  16. 用公式编辑器打的公式变大了怎么办?
  17. 水有七德,几近于道!
  18. 量子力学(4) 全同粒子
  19. MC34063升压电路中常见的几种问题
  20. 利器解读:Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术

热门文章

  1. Python+Vue计算机毕业设计基于框架的青岛农业大学海都学院景点导游系统设计与实现denr8(源码+程序+LW+部署)
  2. 什么叫Closed-form闭式解
  3. 京东软件开发工程师面试总结
  4. (BGV12)同态加密方案初学
  5. 趣头条发行区间7至9美元 预计9月14日美国上市
  6. UG NX二次开发(C#)-外部模式-导出dwg格式的文件
  7. Python树结构库treelib
  8. android7.0 提示wifi已连接,但无法连接到互联网
  9. BIM家装族库丨柜子族
  10. java parallelstream_Java-技术专区-Java8特性-parallelStream