
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #include <iostream> #include <cstring> #include <algorithm> #include <queue> const int N=15; using namespace std; char map[N][N];
int st[N][N]; int dist[N][N]; int mx[4]={-1,0,1,0}; int my[4]={0,1,0,-1}; int lx,ly; int fx,fy;
int main() { for(int i=0;i<10;i++) for(int j=0;j<10;j++) { cin>>map[i][j]; if(map[i][j]=='B') fx=i,fy=j; if(map[i][j]=='L') lx=i,ly=j; } queue<pair<int,int>> q; q.push({lx,ly}); dist[lx][ly]=0; st[lx][ly]=1; while(q.size()) { auto t=q.front() ; q.pop(); int a=t.first; int b=t.second; for(int i=0;i<4;i++) { int x=a+mx[i]; int y=b+my[i]; if(x>=0&&x<10&&y>=0&&y<10&&!st[x][y]&&map[x][y]!='R') { if(map[x][y]=='B') { cout<<dist[a][b]; return 0; } st[x][y]=1; dist[x][y]=dist[a][b]+1; q.push({x,y}); } } } }
|
一道模拟题
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1日周六(含)到 2020 年 10月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<bits/stdc++.h> using namespace std; int D[13]; bool check(int y){ if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) return true; return false; } signed main() { D[1] = 31 , D[2] = 28 , D[3] = 31 , D[4] = 30 , D[5] = 31 , D[6] = 30; D[7] = 31 , D[8] = 31 , D[9] = 30 , D[10] = 31 , D[11] = 30 , D[12] = 31; int ans = 0 , week = 6; for(int y = 2000 ; y <= 2020 ; y ++){ if(check(y)) D[2] = 29; else D[2] = 28; for(int m = 1 ; m <= (y == 2020 ? 10 : 12) ; m ++){ if(y == 2020 && m == 10) D[m] = 1; for(int d = 1 ; d <= D[m] ; d ++){ if(week == 1 || d == 1) ans += 2; else ans += 1; week = (week + 1) % 7; } } } cout << ans << '\n'; return 0; }
|