Codeforces Round #648 (Div. 2)(A, B, C, D)

Codeforces Round #648 (Div. 2)

或许更好的阅读体验

A:Matrix Game

思路

题意可以说是非常简单的,我们选定的格子的行列都不能存在1,可以发现我们可以放的格子一定是固定的,然后这题就变成了技术总共可以放多少个棋子了,所以我们直接开两个数组记录一下行列是否有1存在,再通过暴力求解的到可放的格子的数量就行,具体看代码注释吧。

代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();} while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}const int N = 55;int a[N][N], n, m, c[N], r[N];int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false);int t = read();while(t--) {n = read(), m = read();memset(c, 0, sizeof c);memset(r, 0, sizeof r);for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++) {a[i][j] = read();if(a[i][j]) c[i] = 1, r[j] = 1;//r[i]表示这一行是否有1,c[j]表示这一列是否有1,}int sum = 0;for(int i = 1; i <= n; i++) {//枚举行。if(c[i])    continue;//如果这一行是有1的话,直接跳过,不用考虑了,for(int j = 1; j <= m; j++) {if(r[j])    continue;//同上,这一列有1不考虑else {//否则将这一列标记上1,然后格子数量+1;sum++;r[j] = 1;break;}}}// cout << sum << endl;if(sum & 1) puts("Ashish");//判断答案奇偶即可。else    puts("Vivek");}return 0;
}

Trouble Sort

思路

这题全靠瞎猜:分两种情况。

  • 一、原本的数列就是有序的,这是肯定可以复原的到的。
  • 二、原本的数列是无序的,所以我们必须进行交换,这个时候只有同时存在 0 ,1就行了。

赛后仔细想想好像确实是这样,假设只存在一个1,然后全是0,我们可以通过交换得到任意的排列。

代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();} while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}const int N = 510;int a[N], b[N], n;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false);int t = read();while(t--) {n = read();int sum0 = 0, sum1 = 0;for(int i = 1; i <= n; i++) {a[i] = read();b[i] = a[i];}sort(a + 1, a + 1 + n);for(int i = 1; i <= n; i++) {int temp = read();if(temp)    sum1++;else sum0++;}// for(int i = 1; i <= n; i++) //     printf("%d%c", a[i], i == n ? '\n' : ' ');int flag = 1;for(int i = 1; i <= n; i++)//判断是否有序,if(a[i] != b[i]) {flag = 0;break;}if(flag)    puts("Yes");//case 1else {//case 2if(sum1 && sum0)    puts("Yes");else    puts("No");}}return 0;
}

Rotation Matching

思路

首先我们明白,左移和右移的操作是等价的,任何通过左移得到的序列,我们都可以通过右移得到,反之亦然。所以我直接统计b序列的每个位置向右移动多少位可以得到在a中的相同位置,最后再统计一圈最大值就行了。

代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();} while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}const int N = 2e5 + 10;int a[N], b[N], sum[N], n;struct Node {int value, id;bool operator < (const Node & t) const {return value < t.value;}
}node[N];int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false);n = read();for(int i = 1; i <= n; i++) {node[i].value = read();node[i].id = i;}sort(node + 1, node + 1 + n);for(int i = 1; i <= n; i++) {a[i] = node[i].value;b[i] = read();}for(int i = 1; i <= n; i++) {int p = lower_bound(a + 1, a + 1 + n, b[i]) - a;p = node[p].id;//好像这里直接就可以是p = node[b[i]].id;,写比赛的时候傻了。// cout << p << endl;int len = p - i;if(len < 0) len += n;sum[len]++;}// for(int i = 0; i <= n; i++)//     printf("%d%c", sum[i], i == n ? '\n' : ' ');int ans = 0;for(int i = 0; i <= n; i++)if(sum[i] > sum[ans])ans = i;printf("%d\n", sum[ans]);return 0;
}

Solve The Maze

思路

我们要保证最优,使所有的好人都可以到达n,mn, mn,m,所以我们一定要选择在每一个BBB的边上加墙,这个时候还有一点要注意,如果有好人是紧邻坏人的,那么我们一定不存在一种方案得到答案,这里直接在加墙的时候特判就行了。

加完墙之后,我们要保证所有的好人和n,mn, mn,m点是联通的,所以我们直接从n,mn, mn,m点开始dfs∣bfsdfs | bfsdfsbfs去访问所有可以达到的点,最后加一个特判,判断是否所有的好人和n,mn, mn,m是否联通,也就是看visit数组对应的点是否已经标记为1,然后这题就🆗了。

代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();} while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}typedef pair<int, int> PII;
const int N = 55;
const int ax[4] = {1, 0, 0, -1}, ay[4] = {0, 1, -1, 0};char maze[N][N];
int visit[N][N];
int n, m;struct node{int x, y;node(int a = 0, int b = 0) : x(a), y(b) {}
};
queue<node> q;void bfs(int s,int t) {while(!q.empty())	q.pop();visit[s][t] = 1;q.push(node(s, t));while(!q.empty()) {node temp = q.front();q.pop();for(int i=0;i<4;i++) {int tempx = temp.x + ax[i];int tempy = temp.y + ay[i];if(maze[tempx][tempy] != '#' && visit[tempx][tempy] == 0) {visit[tempx][tempy] = 1;q.push(node(tempx, tempy));}}}
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false);int t = read();while(t--) {n = read(), m = read();for(int i = 1; i <= n; i++)scanf("%s", maze[i] + 1);for(int i = 0; i <= m + 1; i++)maze[0][i] = maze[n + 1][i] = '#';for(int i = 0; i <= n + 1; i++)maze[i][0] = maze[i][m + 1] = '#';int flag = 1;for(int i = 1; i <= n; i++) {for(int j = 1; j <= m; j++) {if(maze[i][j] == 'B') {// cout << i << " " << j << endl;int x = i, y = j;for(int k = 0; k < 4; k++) {if(maze[x + ax[k]][y + ay[k]] == 'G') {//这个点一定要注意特判,不然直接wa,flag = 0;break;}if(maze[x + ax[k]][y + ay[k]] == '.')maze[x + ax[k]][y + ay[k]] = '#';}}if(!flag)   break;}if(!flag)   break;}memset(visit, 0, sizeof visit);if(maze[n][m] != '#')	bfs(n, m);for(int i = 1; i <= n;i++) {for(int j = 1; j <= m; j++) {if(maze[i][j] == 'G') {if(visit[i][j])	continue;else {flag=0;break;}}if(!flag)   break;}if(!flag)   break;}if(flag)    puts("Yes");else    puts("No");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可落地微服务on k8s的持续集成/部署方案

我们隔一流的软件生产工艺还有多远&#xff1f;在距离15000公里外&#xff0c;Amazon一年可以进行5000万次部署&#xff0c;在这一边某电商平台的研发部门里&#xff0c;让他们引以为傲的是他们正在进行“敏捷”开发模式&#xff0c;并对外号称他们是以每周为迭代来进行升级。时…

Codeforces Round #579 (Div. 3) F1. Complete the Projects (easy version) 排序 + 贪心

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 比较直观的想法就是对于bi≥0b_i\ge0bi​≥0的项目&#xff0c;我们将aia_iai​从小到大排序&#xff0c;让后依次加bib_ibi​&#xff0c;如果有取不到的&#xff0c;显然就无解。否则再看…

历久弥新 - 微软万亿市值背后的文化支撑(下)|DevOps案例研究

内容来源&#xff1a;DevOps案例深度研究-Microsoft文化支撑研究战队&#xff08;本文只展示部分PPT研究成果&#xff0c;更多细节请关注案例分享会&#xff0c;及本公众号。&#xff09;本案例内容贡献者&#xff1a;陈飞&#xff08;Topic Leader&#xff09;、陈雨卿、郭子奇…

Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 排序方式跟easyeasyeasy版本的一样&#xff0c;但是hardhardhard版本是输出最多能选多少&#xff0c;所以我们对b<0b<0b<0的情况不能直接贪心的来选了&#xff0c;考虑用dpdpdp来…

D:Ehab the Xorcist

或许更好的阅读体验 Ehab the Xorcist 思路 刚看时确实是一脸懵&#xff0c;最怕的就是这种构造题了&#xff0c;然后细想好像能写啊。 判断不可行的条件&#xff0c;只有两种情况&#xff1a; 一、v<uv < uv<u是一定不可能的&#xff0c;一串数的异或值一定小于…

架构杂谈《九》

微服务与轻量级通信机制微服务架构是一种架构模式&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;服务之间胡亮协调、互相配合&#xff0c;为用户提供最终价值。在微服务架构中&#xff0c;服务与服务之间通信时&#xff0c;通常是通过轻量级的通信机制&#…

Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑数列最终的状态一定是相同颜色在一起&#xff0c;所以我们发现他的颜色是有顺序的&#xff01;显然可以用状压dpdpdp来枚举颜色的顺序&#xff0c;但是又有问题了&#xff0c;你怎么确…

E:Sleeping Schedule(DP)

或许更好的阅读体验 Sleeping Schedule 思路 这道题读题就感觉像时DPDPDP&#xff0c;读完题后更加坚定了&#xff0c;这是一道DPDPDP题目。 我们考虑状态转移方程&#xff0c;dp[i][j]dp[i][j]dp[i][j]表示在第iii次入睡时间是jjj的时候的时间最优值&#xff0c;所以显然有…

GitLab CI 自动部署netcore web api 到Docker

前端篇文章中&#xff0c;我们已经成功的将asp.net core webapi在Docker容器中运行&#xff0c;并且部署了一套自己的GitLab环境。.Net & Docker&#xff08;二&#xff09;5分钟快速用Docker部署你自己的GitLab.Net & Docker&#xff08;一&#xff09;在Docker容器上…

Codeforces Round #585 (Div. 2) F. Radio Stations 2-sat + 神仙建模

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 你现在有ppp种电台&#xff0c;有nnn对关系(x,y)(x,y)(x,y)代表xxx电台或yyy电台中至少有一个&#xff0c;mmm对关系(x,y)(x,y)(x,y)代表xxx电台或yyy电台中最多有一个&#xff0c;每个电台有两个参数li,ril…

C. Orac and LCM(数论lcm, gcd)

C. Orac and LCM 思路 题目非常简单&#xff0c;就是求gcd(lcm(i,j))foriinrange(n),forjinrange(n),i<jgcd(lcm_(i,\ j))\ for\ i\ in\ range(n),\ for\ j\ in\ range(n),\ i\ <\ jgcd(lcm(​i, j)) for i in range(n), for j in range(n), i < j 对于包含a1a_1a1…

.net core 实现基于 cron 表达式的任务调度

.net core 实现基于 cron 表达式的任务调度Intro上次我们实现了一个简单的基于 Timer 的定时任务&#xff0c;详细信息可以看这篇文章 。但是使用过程中慢慢发现这种方式可能并不太合适&#xff0c;有些任务可能只希望在某个时间段内执行&#xff0c;只使用 timer 就显得不是那…

P6378 [PA2010] Riddle 2-sat + 前缀和优化建图

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你nnn个点mmm调变的无向图被分成kkk个部分&#xff0c;每个部分包含若干点&#xff0c;请选择一些关键点&#xff0c;使得每个部分恰好有一个关键点&#xff0c;且每条边至少有一个是关键点。 1≤k,w≤n≤…

E:Tree Queries(假树链剖分写法)

博客园地址 E&#xff1a;Tree Queries 思路 当我写完A完这道题后&#xff0c;百度了一下&#xff0c;发现好像没有人是用类树链剖分来写的&#xff0c;都是LCALCALCA&#xff0c;于是我就来水一篇树链剖分题解了。 第一步&#xff1a;贪心取点 我们可以发现&#xff0c;要…

ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

前言原本本节内容是不存在的&#xff0c;出于有几个人问到了我&#xff1a;我想使用ASP.NET Core Identity&#xff0c;但是我又不想使用默认生成的数据库表&#xff0c;想自定义一套&#xff0c;我想要使用ASP. NE Core Identity又不想使用EntityFramework Core。真难伺候&…

Educational Codeforces Round 17 E. Radio stations cdq分治 + 树状数组

传送门 文章目录题意思路&#xff1a;题意 有nnn个电台&#xff0c;对于每个电台iii有三个参数xi,ri,fix_i,r_i,f_ixi​,ri​,fi​&#xff0c;分别指他们的坐标、作用半径、频率。如果两个电台频率差值在kkk以内&#xff0c;并且他们的作用范围都能覆盖到彼此&#xff0c;那么…

Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单&#xff0c;就是得到最多的物品嘛&#xff0c;我们假定a,ba, ba,b中aaa是最小的一个&#xff0c;分两种情况。 如果2∗a<b2 * a < b2∗a<b&#xff0c;那么我们只需…

什么是微服务?为什么你要用微服务?

前言最近几年微服务很火&#xff0c;大家都在建设微服务&#xff0c;仿佛不谈点微服务相关的技术&#xff0c;都显得不是那么主流了。近几年见识到身边朋友的很多公司和团队都在尝试进行微服务的改变&#xff0c;但很多团队并没有实际微服务踩坑经验&#xff0c;很多团队甚至强…

P5367 【模板】康托展开

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 存个板子 // Problem: P5367 【模板】康托展开 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P5367 // Memory Limit: 64 MB // Time Limit: 1200 ms // // Powered by …

微软开源基于.NET Core的量子开发工具包 QDK

微软最近开源了量子开发工具包&#xff08;Quantum Development Kit&#xff0c;QDK&#xff09;&#xff0c;旨在使“量子计算和算法开发对开发人员来说更容易、更透明”。微软 QDK 包括 Q#编译器、量子库和量子模拟器。微软在 2017 年底的 Ignite 大会上发布了量子开发工具包…