哈理工软件与微电子学院第十届程序设计竞赛
nirvana · rebirth
NIRVANA & REBIRTH
展开
-
哈尔滨理工大学软件与微电子学院程序设计竞赛——A.Race【模拟】(题面坑啊)
题目传送门题解题目有点坑啊,后来补上 只算整数时间点的条件 了。恕我直言,打死我也想不出来竟然不考虑小数时间点。Q_Q那么这数据范围,一秒一循环模拟就过了水题AC-Code#include <bits/stdc++.h>using namespace std;int main() { int v1, v2, t, s, l; while (cin >> v1 >> v2 >> t >> s >> l)原创 2020-06-14 17:10:46 · 441 阅读 · 1 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——B.Min Value【二分 & 思维】
题目传送门题解第一想法应该就是二分,但是区间断点收缩的判定,就很难确定了。所以这种方法被pass了换种思路,我们优先找的是 ∣ai+aj∣|a_i+a_j|∣ai+aj∣ 最小,实际上,对于每一个 aia_iai ,去找 −ai-a_i−ai 的是最优解。那么按着这个思路就很好想到了。排序之后,每次去二分查找 −ai-a_i−ai 的位置 ppp。但是不一定会存在,所以需要在 p−1,p,p+1p-1,p,p+1p−1,p,p+1 三个合法的位置找最优解AC-Code原创 2020-06-15 11:40:35 · 426 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——C.Coronavirus【BFS】
题目传送门题解直接BFS跑一遍即可水题AC-Code#include <bits/stdc++.h>using namespace std; const int maxn = 1e7 + 7;char mp[55][55];bool vis[55][55];struct NODE { int x, y, val; NODE(int x, int y, int v) :x(x), y(y), val(v) {}}S(0, 0, 0), E(0,原创 2020-06-14 17:13:04 · 481 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——D.Array【二进制 & 思维】(详解!思路以及严谨推导)
题目传送门题解u:相加和,v:异或和u:相加和,v:异或和u:相加和,v:异或和在二进制运算中,对于某一位来讲:a∧b:表示a+b的本位a \wedge b:表示a+b的本位a∧b:表示a+b的本位a & b:表示a+b应该进的位a\ \&\ b:表示a+b应该进的位a & b:表示a+b应该进的位那么 a & b<<1:表示进位之后a\ \&\ b <<1:表示进原创 2020-06-16 00:48:47 · 379 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】
题目传送门题解对于 NNN 的二进制表示 bbb那么最佳答案就是 len(b)len(b)len(b) 位的1比如n的二进制位101010100101010100101010100那肯定是拿100000000100000000100000000和111111111111111111111异或最后全部为111就是结果AC-Code#include <bits/stdc++.h>using namespace std;typedef unsigned long原创 2020-06-14 17:20:08 · 317 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——H.Maze【BFS & 并查集】
题目传送门题解不考虑 QQQ 次询问的话,就是简单的 BFSBFSBFS那么有了 QQQ 次询问,那么直接使用 并查集并查集并查集 维护即可注意数组大小AC-Code#include <bits/stdc++.h>using namespace std;const int maxn = 3e3 + 7;int N, M, Q;struct NODE { int x, y; NODE(int x = 0, int y = 0) :x(x), y(y) {}}原创 2020-06-15 10:00:11 · 426 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——I.Prime【前缀数组】{1~N区间内质数个数}
题目传送门题解如果没有多次询问,那么直接随便晒一晒就好了那么询问次数很多,可以用前缀数组维护AC-Code#include <bits/stdc++.h>using namespace std; const int maxn = 1e7 + 7; int pre[maxn];bool vis[maxn]; // false:素数 void init() { vis[1] = 1; for (int i = 2; i <= maxn; i原创 2020-06-14 17:24:16 · 334 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——J.Compare【字符串 | python大法好!】
题目传送门题解字符串找一下就行或者。。。python大法好!AC-Code#include <bits/stdc++.h>using namespace std; int main() { string a, b; while (cin >> a >> b) { if (a.length() != b.length()) { cout << (a.length() > b原创 2020-06-14 17:36:12 · 279 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——K.Walk【逆元 & 组合数】
题目传送门题解按理说应该用dp进行转移最短走法应该只往下和右dp[i][j]=dp[i−1][j]+dp[i][j−1]dp[i][j]=dp[i−1][j]+dp[i][j−1]dp[i][j]=dp[i−1][j]+dp[i][j−1]但是这个n,mn,mn,m较大,不支持用二维数组和复杂度,并且还是多组输入那么直接用组合数进行计算从(1,1)(1,1)(1,1)到(n,m)(n,m)(n,m)的路径往右和往下总共走n+m−2n+m−2n+m−2次其中往原创 2020-06-14 17:43:32 · 379 阅读 · 0 评论 -
哈尔滨理工大学软件与微电子学院程序设计竞赛——L.Defeat the monster【尺取】
题目传送门题解滑动窗口跑一下即可AC-Code#include <bits/stdc++.h>using namespace std; const int maxn = 2e5 + 7;int arr[maxn];int main() { int n; while (cin >> n) { for (int i = 1; i <= n; ++i) { cin >> arr[i];原创 2020-06-14 17:50:52 · 400 阅读 · 0 评论