Educational Codeforces Round 103 (Rated for Div. 2)A~E解题报告

Educational Codeforces Round 103 (Rated for Div. 2)

A. K-divisible Sum

原题信息

在这里插入图片描述

解题思路

在这里插入图片描述

AC代码

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N = 100010;int main()
{int t;  cin >> t;while (t -- ){static LL n, k;scanf("%lld%lld", &n, &k);k = (n / k + (n % k != 0)) * k;// printf("N=%lld, k=%lld\n", n, k);cout << (k / n + (k % n != 0)) << endl;}return 0;
}

B. Inflation

原题信息

在这里插入图片描述

解题思路

在这里插入图片描述

AC代码

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N = 100010;
int n, k;
LL p[N], b[N];int main()
{int t;  cin >> t;while (t -- ){scanf("%d%d", &n, &k);for (int i = 0; i < n; i ++ )scanf("%lld", &p[i]);b[0] = p[0];for (int i = 1; i < n; i ++ )b[i] = b[i - 1] + p[i];LL res = 0;for (int i = 1; i < n; i ++ ){res = max(res, 100LL * p[i] / k - b[i - 1] + (100LL * p[i] % k != 0));}cout << res << endl;}return 0;
}

C. Longest Simple Cycle

原题信息

在这里插入图片描述

解题思路

在这里插入图片描述

AC代码

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int N = 100010;
const LL INF = 0x3f3f3f3f3f3f3f3f;
int n, k;
LL res;
LL a[N], b[N], c[N];int main()
{int t;  cin >> t;while (t -- ){res = 0;// inputscanf("%d", &n);for (int i = 1; i <= n; i ++ )  scanf("%lld", &c[i]);for (int i = 1; i <= n; i ++ )  scanf("%lld", &a[i]);for (int i = 1; i <= n; i ++ )  scanf("%lld", &b[i]);for (int i = 1; i <= n; i ++ )if (a[i] > b[i])swap(a[i], b[i]);LL tmp, pre = -INF;for (int i = 2; i <= n; i ++ ){if (a[i] == b[i])tmp = c[i] + 1;elsetmp = max(c[i] + b[i] - a[i] + 1, c[i] + pre - (b[i] - a[i] - 1));res = max(res, tmp);pre = tmp;}cout << res << endl;}return 0;
}

D. Journey

原题信息

在这里插入图片描述

解题思路

在这里插入图片描述

AC代码

#include <bits/stdc++.h>
using namespace std;const int N = 301010;
int f_l[N], f_r[N];
int ans[N];
char s[N];
int n;int main()
{int t;  cin >> t;while (t -- ){scanf("%d", &n);scanf("%s", s + 1);// leftf_l[1] = 1;for (int i = 2; i <= n; i ++ )if (s[i] != s[i - 1])f_l[i] = f_l[i - 1] + 1;elsef_l[i] = 1;// rightf_r[n] = 1;for (int i = n - 1; i >= 1; i -- )if (s[i] != s[i + 1])f_r[i] = f_r[i + 1] + 1;elsef_r[i] = 1;// 初始化并计算结果memset(ans, 0, sizeof ans);for (int i = 1; i <= n; i ++ )if (s[i] == 'R')ans[i - 1] += f_r[i];elseans[i] += f_l[i];cout << ans[0] + 1;for (int i = 1; i <= n; i ++ )printf(" %d", ans[i] + 1);puts("\n");}return 0;
}

E. Pattern Matching

原题信息

在这里插入图片描述
在这里插入图片描述

解题思路

在这里插入图片描述
倘若题目的要求,变一下,变成 rearrange 后的 pattern 在 mt[j] 的位置上是与 str[j] 匹配的,那么本题就变成了一个 二分图匈牙利算法的问题
显示对 m 个 str进行排序,按照他们的 mt进行排序,最后看每个mt需要满足的匹配要求,连向可以连接的 pattern,这样二分图就构建完成,直接跑一边匈牙利算法即可。
这是我之前一直读错的题意 ,绝了。

AC代码

#include <bits/stdc++.h>
using namespace std;const int BASE = 27, M = 27 * 27 * 27 * 27 + 10;
const int N = 100010, K = 7;
int _hash[M], char_num[258];   // _hash 需要开辟的数组
int n, m, k;
char _str[N][K];        // n 个 pattern
char pattern_match[K];  // dfs查询 m 个 str可以匹配的 pattern 可能
char str[5]; int mt;    // m 个询问
vector<int> idx_ret;    // 记录返回的编号
int h[N], e[M * 5], ne[M * 5], idx;
bool flag = true;       // 全局变量,记录是否可以
int ind[N];
int res[N];             // 存储最终的排序结果// 计算字符串hash的数值
int Cal(char *s)
{int ret = 0;for (int i = 0, base = 1; i < k; i ++, s ++){ret += base * char_num[*s];base = base * BASE;}return ret;
}// 第一个是 str, 第二个是 pattern,可以带有_
bool Match(char *s, char *pa)
{for (int i = 0; i < k; i ++ ){if (*s == *pa || *pa == '_' || *s == '_'){s ++;   pa ++;continue;}return false;}return true;
}void GetIdx(char *s, int cnt)
{if (cnt == k){if (Match(str, pattern_match)){if (_hash[Cal(pattern_match)] != -1){idx_ret.push_back(_hash[Cal(pattern_match)]);}}return;}else{pattern_match[cnt] = *s;GetIdx(s + 1, cnt + 1);pattern_match[cnt] = '_';GetIdx(s + 1, cnt + 1);}
}void add(int x, int y)
{e[idx] = y, ne[idx] = h[x], h[x] = idx ++;
}void topsort()
{int cur_idx = 1;queue<int> que;for (int i = 1; i <= n; i ++ ){if (ind[i] == 0)que.push(i);}int u, v;/// printf("TOPSORT:\n");while (que.size()){u = que.front();    que.pop();res[cur_idx ++] = u;/// printf("%d, ", u);for (int i = h[u]; ~i; i = ne[i]){v = e[i];ind[v] --;if (ind[v] == 0)que.push(v);}}/// cout << endl;/// printf("n=%d, curidx=%d\n", n, cur_idx);flag = (cur_idx == n + 1);/// cout << flag << endl;
}int main()
{// _hash initialmemset(_hash, -1, sizeof _hash);for (int i = 'a'; i <= 'z'; i ++ )char_num[i] = i - 'a';char_num['_'] = 26;// edge list initialmemset(h, -1, sizeof h);idx = 1;// input and build string hashcin >> n >> m >> k;for (int i = 1; i <= n; i ++ ){scanf("%s", _str[i]);_hash[Cal(_str[i])] = i;}
/*cout << 27 * 27 * 27 * 27 - 1 << endl;cout << Cal("abc_") << endl;cout << Cal("____") << endl;cout << Cal("aaaa") << endl;return 0;
*/// ind initialmemset(ind, 0, sizeof ind);for (int i = 1; flag && i <= m; i ++ ){scanf("%s%d", str, &mt);if (!Match(str, _str[mt])){puts("NO");return 0;}else{idx_ret.clear();GetIdx(str, 0);/// printf("\t*J:%d\n", i);for (int j = 0; flag && j < idx_ret.size(); j ++){if (mt != idx_ret[j]){add(mt, idx_ret[j]);ind[idx_ret[j]] ++;}/// cout << idx_ret[j] << ", ";}/// puts("");}}//if (!flag){/// printf("BEGIN\n");puts("NO");}else{topsort();if (!flag){puts("NO");}else{puts("YES");cout << res[1];for (int i = 2; i <= n; i ++ )printf(" %d", res[i]);puts("");}}return 0;
}

赛后总结

题意一定要读清楚,结合样例好好看一看

输入输出的形式搞明白

结合建图、贪心、动态对话进行综合答题

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

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

相关文章

LeetCode 967. 连续差相同的数字(BFS/DFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 返回所有长度为 N 且满足其每两个连续位上的数字之间的差的绝对值为 K 的非负整数。 请注意&#xff0c;除了数字 0 本身之外&#xff0c;答案中的每个数字都不能有前导零。 例如&#xff0c;01 因为有一个前导零&#xff0c;所…

android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce...

animation_3.xml: 1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"3 android:orientation"vertical"4 android:padding"10dip"5 …

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)

文章目录1. 梯度下降2. mini-Batch 梯度下降3. 动量4. Adam5. 不同优化算法下的模型5.1 Mini-batch梯度下降5.2 带动量的Mini-batch梯度下降5.3 带Adam的Mini-batch梯度下降5.4 对比总结测试题&#xff1a;参考博文 笔记&#xff1a;02.改善深层神经网络&#xff1a;超参数调试…

Codeforces Round #697 (Div. 3)A~G解题报告

Codeforces Round #697 (Div. 3)A~G解题报告 题 A Odd Divisor 题目介绍 解题思路 乍一想本题&#xff0c;感觉有点迷迷糊糊&#xff0c;但是证难则反&#xff0c;直接考虑没有奇数因子的情况&#xff0c;即 N 2i2^{i}2i,那么当N ! 2i2^i2i时&#xff0c;就有 奇数因子 注意…

LeetCode 1048. 最长字符串链(哈希+DP)

文章目录1. 题目2. 解题1. 题目 给出一个单词列表&#xff0c;其中每个单词都由小写英文字母组成。 如果我们可以在 word1 的任何地方添加一个字母使其变成 word2&#xff0c;那么我们认为 word1 是 word2 的前身。 例如&#xff0c;“abc” 是 “abac” 的前身。 词链是单词…

LeetCode第45场双周赛-解题报告

LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为数据范围比较小&#xff0c;可以直接模拟&#xff0c;如果出现一次就加上去。 或者是直接map打表也可以 AC代码 暴力 class Soluti…

LeetCode 1034. 边框着色(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给出一个二维整数网格 grid&#xff0c;网格中的每个值表示该位置处的网格块的颜色。 只有当两个网格块的颜色相同&#xff0c;而且在四个方向中任意一个方向上相邻时&#xff0c;它们属于同一连通分量。 连通分量的边界是指连…

Codeforces Round #693 (Div. 3)A~G解题报告

Codeforces Round #693 (Div. 3)A~G解题报告 A Cards for Friends 原题信息 http://codeforces.com/contest/1472/problem/A 解题思路 本题就是一个找 x/2iold,y/2joldx/2^iold,y/2^joldx/2iold,y/2jold, 返回 2i∗2j>n2^i*2^j>n2i∗2j>n 一般这样的题目都需要注…

02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架

文章目录1. 调试处理2. 为超参数选择合适的范围3. 超参数调试的实践4. 归一化网络的激活函数5. 将 Batch Norm 拟合进神经网络6. Batch Norm 为什么奏效7. 测试时的 Batch Norm8. Softmax 回归9. 训练一个 Softmax 分类器10. 深度学习框架11. TensorFlow作业参考&#xff1a; 吴…

关于整数划分的问题

&#xff08;一&#xff09;递归法 根据n和m的关系&#xff0c;考虑以下几种情况&#xff1a; &#xff08;1&#xff09;当n1时&#xff0c;不论m的值为多少&#xff08;m>0)&#xff0c;只有一种划分即{1}; (2) 当m1时&#xff0c;不论n的值为多少…

LeetCode第 227 场周赛题解

LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-and-rotated/ 解题思路 直接进行测试就行&#xff0c;因为数组的数据范围很小&#xff0c;直接进行O(N2&#xff09;O(N^2&#xff09;O(…

LeetCode 1124. 表现良好的最长时间段(单调栈/哈希)

文章目录1. 题目2. 解题2.1 单调栈2.2 哈希1. 题目 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意…

二进制如何转十进制,十进制如何转二进制

1 转成二进制主要有以下几种&#xff1a;正整数转二进制&#xff0c;负整数转二进制&#xff0c;小数转二进制&#xff1b; 1、 正整数转成二进制。要点一定一定要记住哈&#xff1a;除二取余&#xff0c;然后倒序排列&#xff0c;高位补零。 也就是说&#x…

02.改善深层神经网络:超参数调试、正则化以及优化 W3. 超参数调试、Batch Norm和程序框架(作业:TensorFlow教程+数字手势预测)

文章目录1. 探索TensorFlow库1.1 线性函数1.2 计算 sigmoid1.3 计算损失函数1.4 One_Hot 编码1.5 用0,1初始化2. 用TensorFlow建立你的第一个神经网络2.0 数字手势识别2.1 创建 placeholder2.2 初始化参数2.3 前向传播2.4 计算损失2.5 后向传播、更新参数2.6 建立完整的TF模型2…

Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/problem/A 解题思路 对于题目基本有两种方式&#xff0c;一种是直接暴力求解&#xff0c;第二种是使用函数求导进行严格证明 暴力求解 a1e9a1e^9a1e9不…

Codeforces Round #700 (Div. 2)A~D2解题报告

Codeforces Round #700 (Div. 2)A~D2解题报告 A Yet Another String Game 原题链接 http://codeforces.com/contest/1480/problem/A 解题思路 Alice想让更小&#xff0c;先手Bob想让其更大&#xff0c;后手解决方案当然是贪心&#xff0c;从第一个排到最后一个如果不是选择…

LeetCode 2020 力扣杯全国秋季编程大赛(656/3244,前20.2%)

文章目录1. 比赛结果2. 题目1. LeetCode LCP 17. 速算机器人 easy2. LeetCode LCP 18. 早餐组合 easy3. LeetCode LCP 19. 秋叶收藏集 medium4. LeetCode LCP 20. 快速公交 hard5. LeetCode LCP 21. 追逐游戏 hard1. 比赛结果 做出来2题&#xff0c;第三题写了好长时间无果。还…

LeetCode 第 206 场周赛(733/4491,前16.3%)

文章目录1. 比赛结果2. 题目1. LeetCode 5511. 二进制矩阵中的特殊位置 easy2. LeetCode 5512. 统计不开心的朋友 medium3. LeetCode 5513. 连接所有点的最小费用 medium4. LeetCode 5514. 检查字符串是否可以通过排序子字符串得到另一个字符串 hard1. 比赛结果 做出来3题。继…

lightoj 1026 无向图 求桥

题目链接&#xff1a;http://lightoj.com/volume_showproblem.php?problem1026 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<queue> #include<vector> using namespace …

python基础知识点小结(2021/2/9)

python基础知识点小结(2021/2/9)持续更新中~~ 入门小知识 cmd 在cmd上进行python&#xff0c;直接输入 python\quad pythonpython退出cmd输入 exit()\quad exit()exit()到指定文件夹上运行python文件 python路径文件名.py\quad python 路径文件名.pypython路径文件名.py pyt…