首页 > 其他分享 >D. Matrix Cascade

D. Matrix Cascade

时间:2023-09-02 19:36:32浏览次数:48  
标签:Matrix val int wave Cascade num 该点 under

D. Matrix Cascade

仔细想想会觉得这题的限定方式很像物理上波的传播。所以我们建立一个结构体,对于给定的n*n的表格上的每个点,都定义它具有四个属性:

  • val 该点初始的值是多少 (1/0)

  • under_wave_num 该点处于几个波下。可以知道,如果一个点处于某些波的影响下,那么该点正下方的点也一定处于这些波的影响下

  • lnum 每个波除了向下传播之外,还会向左下和右下传播。所以记录每个点会替几个波向左下传播,替几个波向右下传播,然后把这两个属性赋给该点左下/右下的点,同时更新被传播的点的under_wave_num:既然这些点被一些额外的波影响了,那么影响该点的波的数量自然会增加上这些波的数量。

  • rnum

根据定义的这些属性和传播规律,把n*n的表打完,同时记录答案即可。每次检测一个点是,val += under_wave_num,然后判断val % 2 是否等于1。如果是,那么让答案加一并且让under_wave_num, lnum, rnum 加一,即表示产生了新的波。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 struct point{
 5     int under_wave_num = 0;
 6     int val = 0;
 7     int lnum = 0;
 8     int rnum = 0;
 9 };
10 
11 void solve(){
12     int n;
13     cin >> n;
14     vector<vector<point>> grid(n + 2, vector<point>(n + 2));
15     for(int i = 1; i <= n; i++){
16         for(int j = 1; j <= n; j++){
17             char ch;
18             cin >> ch;
19             grid[i][j].val = ch - '0';
20         }
21     }
22 
23     int ans = 0;
24     for(int i = 1; i <= n; i++){
25         for(int j = 1; j <= n; j++){
26             grid[i][j].val += grid[i][j].under_wave_num;
27             if(grid[i][j].val % 2 == 1){
28                 ans++;
29                 grid[i][j].under_wave_num++;
30                 grid[i][j].lnum++;
31                 grid[i][j].rnum++;
32             }
33 
34             grid[i+1][j].under_wave_num += grid[i][j].under_wave_num;
35             
36             grid[i+1][j-1].lnum += grid[i][j].lnum;
37             grid[i+1][j-1].under_wave_num +=grid[i][j].lnum;
38 
39             grid[i+1][j+1].rnum += grid[i][j].rnum;
40             grid[i+1][j+1].under_wave_num += grid[i][j].rnum;
41         }
42     }
43 
44     cout << ans << endl;
45 }
46 
47 int main(){
48     int t;
49     cin >> t;
50     while(t--){
51         solve();
52     }
53     return 0;
54 }

 

标签:Matrix,val,int,wave,Cascade,num,该点,under
From: https://www.cnblogs.com/kurish/p/17674101.html

相关文章

  • CF1864D Matrix Cascade 题解
    首先把式子拆一下,可以知道\(x-i\ge|y-j|\)等价于\(x-y\gei-j\)和\(x+y\gei+j\),注意到每次操作\((i,j)\),影响到的点\((x,y)\)均要满足\(x>i\),那么我们每次就必须要按照从上往下的顺序进行,否则上面的点无法影响到,即从第一行开始操作。又注意到对于\((i,j)\)如果执......
  • iview Cascader loadData Vue
    <template><div><Carddis-hover><divclass="page-body"><Formref="queryForm":label-width="90"label-position="left"inline>......
  • CF1864D Matrix Cascade
    思路第一时间想到的是暴力,因为同一行的互不影响,所以第一行的\(1\)一定都需要操作,然后把后续的状态更新,再操作第二行的所有的\(1\),但是很可惜是\(O(n^4)\)的复杂度,必然会TLE。所以思考其他的办法,考虑到可以统计有多少操作更改了这个位置的状态,所以可以使用一个类似前缀和的......
  • JTS-IntersectionMatrix 使用说明
    参考:https://blog.csdn.net/weixin_40294332/article/details/124124928参考2:https://vimsky.com/examples/detail/java-method-com.vividsolutions.jts.geom.IntersectionMatrix.set.html......
  • element-ui 中 Cascader 级联选择器同时获取value值和label值
    给Cascader级联选择器添加一个别名 复制代码<el-cascader:options="options"ref="myCascader"></el-cascader>选择完毕之后可以通过别名获取 复制代码letlabelValue=this.$refs['myCascader'].inputValue当然,element-ui在一直更新变化,label值的字......
  • 限制 el-select 和 el-cascader 下拉框宽度
    需求el-select、el-cascader等下拉选项字符过多时,下拉框会自动边长,有时甚至会超出屏幕宽度,不美观。因此,需要限制下拉框宽度,选项内容过长则以省略号显示,鼠标悬浮显示完整内容。el-select解决方案加`popper-class`和`title`,设定宽度为0<el-selectpopper-class="my......
  • LightDB支持drop table时cascade constraints语法
    在Oracle数据库中,droptable语法如下:即droptable时通过cascadeconstraints级联删除所有该表中的约束。在LightDB23.3版本中,droptable同样支持了constraints关键字,自动删除依赖于表的所有约束对象。语法结构如下:DROPTABLE[IFEXISTS]name[,...][CASCADE[CONSTRA......
  • Shopify 内容玩法之 Discounts 折扣码批量上传:matrixify
     折扣码使用的插件是:Matrixify。这个插件可以批量上传Products,Discounts等数据,可以直接使用excel模板创建数据。Discounts的excel模板,见下表:需要注意的几点:Code和Title保持一致,方便在Discounts列表查看当前折扣码的名称DiscountsValue是减掉的金额您需......
  • CMPSC122 Matrix类实现细节
    CMPSC122MatrixMatrixClassAmatrixisrectangulararrayofitemslaidoutinrowsandcolumns.Thedimensions,orsize,ofamatrixcanbeexpressedasmxnorm-by-n,wheremisthenumberofrowsinthematrixandnisthenumberofcolumnsinthemat......
  • Matrix Power Series
    描述Givena n × n matrix A andapositiveinteger k,findthesum S = A + A2 + A3 +…+ Ak.题意已知矩阵A,算A^1+A^2+....+A^k,元素对m取模二分递归,如果k为偶数,,因为是等比矩阵,所以前一半和后一半就有一个比例,所以sum(1,k)=sum(1,k/2)+sum(1,k/2......