首页 > 其他分享 >牛客小白月赛75

牛客小白月赛75

时间:2023-07-02 13:44:40浏览次数:38  
标签:ny int nx 牛客 75 小白月赛 include dp dis

D:给定01矩阵,规定0可以到1,1可以到0,将当前1变为0,将当前0变为1,花费都是1

问从(1,1)走到(n,m)花费是多少,前提是移动都是相邻的点

 

 

考虑bfs,需要处理的是把当前点转化这个问题,其实可以分两种情况,对于相邻的点来说判断当前点和相邻点的点数是否相同而赋予两点之间的权值,不相邻的点也是一样,通过到达中继点来处理这个问题,就变的轻松很多,当初拿到这个题居然还想用dp处理,但是这样的情况通过看一组需要四方向移动的就可以排除

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<string>
 6 #include<vector>
 7 #include<stack>
 8 #include<bitset>
 9 #include<cstdlib>
10 #include<cmath>
11 #include<set>
12 #include<list>
13 #include<deque>
14 #include<map>
15 #include<queue>
16 #include <iomanip>
17 #include<ctime>
18 using namespace std;
19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95
21 //#define int long long 
22 #define double long double
23 #define endl '\n'
24 #define inf LLONG_MAX
25 #define iinf INT_MAX
26 typedef pair<int,int> PII;
27 const double PI = acos(-1.0);
28 const double eps = 1e-6;
29 const int INF = 0x3f3f3f3f;
30 const int N = 1e3+10;
31 int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
32 // int dp[N][N][2];
33 char a[N][N];
34 // bool vis[N][N];
35 int dis[N][N];
36 int n,m;
37 void bfs(int x,int y)
38 {
39     queue<PII>q;
40     dis[x][y]=0;
41     q.push({x,y});
42     while(!q.empty())
43     {
44         int tx=q.front().first;
45         int ty=q.front().second;
46         q.pop();
47         for(int i=0;i<4;i++)
48         {
49             int nx=tx+dx[i];
50             int ny=ty+dy[i];
51             if(nx<1||nx>n||ny<1||ny>m)    continue;
52             int tt=nx+ny;
53             int w=0;
54             if(tt&1){//判断是否相邻
55                 if(a[nx][ny]==a[1][1])    w=2;//如果是同样的数字,则现需要修改相邻数字然后在走过去花费2
56                 else w=1;//直接过去花费1
57             }
58             else//不相邻
59             {
60                 if(a[nx][ny]==a[1][1])    w=1;//经过中继点然后在过去是1
61                 else w=2;//和中继点数字一样则现需要修改相邻数字然后在走过去花费2
62             }
63             if(dis[nx][ny]>dis[tx][ty]+w)//更新
64             {
65                 dis[nx][ny]=dis[tx][ty]+w;
66                 q.push({nx,ny});
67             }
68         }
69     }
70 }
71 int main()
72 {
73     IOS;
74     cin>>n>>m;
75     for(int i=1;i<=n;i++)
76     {
77         for(int j=1;j<=m;j++)
78         {
79             cin>>a[i][j];
80         }
81     }
82     // memset(dp,inf,sizeof dp);
83     // dp[1][1][0]=dp[1][1][1]=0;
84     // for(int i=1;i<=n;i++)
85     // {
86         // for(int j=1)
87     // }
88     //
89     memset(dis,0x3f,sizeof dis);
90     bfs(1,1);
91     cout<<dis[n][m]<<endl;
92     return 0;
93 }

 

 

E:没思路,找个时间补

标签:ny,int,nx,牛客,75,小白月赛,include,dp,dis
From: https://www.cnblogs.com/LQS-blog/p/17520708.html

相关文章

  • 牛客小白月赛75
    A.上班题意:分析:签到题代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){intx,y,z;cin>>x>>y>>z;cout<<x+min(y,z);return0;}B.崇拜题意:分析:按知识点难度从大到小排序,然后计算按这个顺序讲解的最大崇......
  • CS7530CC支持PD3.0,双C口协议芯片,20-35W功率
    协议支持:1,USB电源PD3.0固定PDO2,USB电源PDPPSPDO3,支持20W~35WPDO配置4,USBTYPE-C,CC-逻辑5V/3A5,支持双口TypeC快速充电与单电源6,2kVHBM和1kVCDMESD静电防护等级7,40°C~+125°C工作温度,符合RoHS和无卤素快充协议芯片的作用:1、快速充电管理:快充协议芯片能够根据充电设备和电源......
  • 【牛客小白75】D 矩阵 【bfs+优先队列】
    题目https://ac.nowcoder.com/acm/contest/60063/D题意是说,给你一张\(n*m(n,m\leq10^3)\)大小的01地图,当前点下一步只能走到相邻的点上,如果这两个点值相同,则代价为2,否则代价为1,问从(1,1)走到(n,m)最少代价是多少思路首先很容易想到只往右下走是错的,有可能往左和往上走总代价更......
  • 牛客小白月赛75
    C方豆子题意按照题意模拟,详见链接思路看到的第一眼就想递归,之后发现稍微有点麻烦没那么直接难度不高,模拟水题代码//>>>Qiansui#include<map>#include<set>#include<list>#include<stack>#include<cmath>#include<queue>#include<deque>#include<cstdio&g......
  • CF1753 题解
    CF1753题解A首先我们发现,我们可以将序列一部分取反,将1变-1,-1变1的操作每次将总和增加2,所以如果初始和的绝对值为奇数则无解。我们发现,一段区间可以拆成若干个长度为2和1的小区间(+-+-+-+-....)变成(+-+-+-...)。我们假设初始都是长度为1的小区间,这时答案等于所有数的总和。我们......
  • P3975 [TJOI2015] 弦论 题解
    一、题目描述:给你一个长度为$n$的字符串,字符串由$26$个小写字母组成,求第$k$大的字串。给定参数$t$:$t=0:\位置不同的相同字串只算一个。$$t=1:\位置不同的相同字串算作多个。$若字串数量不足$k$个,输出$-1$。数据范围:$1\le......
  • 牛客图论 (第一章)
    F棋盘覆盖#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=105,M=N*N*4,ID=N*N+N;intn,m;inthead[ID],ver[M],nxt[M],tot;boolban[N][N];intdx[]={1,-1,0,0},dy[]={0,0,1,-1};intmatch[ID];boolv[ID];......
  • 题解 P8757 [蓝桥杯 2021 省 A2] 完美序列
    题解P8757[蓝桥杯2021省A2]完美序列题意如果一个序列是单调递减的,而且除了第一个数以外的任何一个数都是上一个数的因数,则称这个序列为一个完美序列。一个序列中的一个子序列如果是完美序列,则称为该序列的一个完美子序列。一个序列的最长完美子序列长度,称为该序列的完美......
  • hdu 1575(矩阵快速幂)
    题解:矩阵快速幂模板题。#include<stdio.h>#include<string.h>constintN=10;structMat{intg[N][N];}res,ori;intn,k;Matmultiply(Matx,Maty){Mattemp;memset(temp.g,0,sizeof(temp.g));for(inti=0;i<n;i++)......
  • WP CTF-Web 攻防世界 GFSJ0475 get_post
    「场景」进入场景后提示请用GET方式提交一个名为a,值为1的变量「思路」根据提示在url后加上?a=1,回车发送请求。出现新提示。请再以POST方式随便提交一个名为b,值为2的变量打开brupsuite,配置本地代理为brupsuite中proxy的地址和端口号,刷新浏览器页面,brupsuite捕获到请求......