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

Educational Codeforces Round 89 (Rated for Div. 2)

A. Shovels and Swords

思路

题意非常简单,就是得到最多的物品嘛,我们假定a,ba, ba,baaa是最小的一个,分两种情况。

如果2∗a<=b2 * a <= b2a<=b,那么我们只需要购买花费是1,21, 21,2的东西即可,也就是最后能购买得到aaa件物品。

否则的话,我们一定是先让数量更多的去减222,用数量更少的去减111,直到两个物品的数量相等,再通过1,21, 21,22,12, 12,1的顺序去交换执行,总结一下最后的答案就是(n+m)/3(n + m) / 3(n+m)/3

代码

#include <bits/stdc++.h>
#define mp make_pair
#define pb push_backusing namespace std;typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;const double eps = 1e-7;
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;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 main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int t = read();while(t--) {ll a = read(), b = read();if(a > b)   swap(a, b);if(a * 2 <= b)  printf("%lld\n", a);else    printf("%lld\n", (a + b) / 3);}return 0;
}

B.Shuffle

思路

就是一个区间有重合判断并集的问题,如果我们给定的区间[l,r][l, r][l,r]在原本的区间外也就是r<L∣∣l>Rr < L || l > Rr<Ll>R,否则的话我们就更新L,RL, RL,R的最大最小值

代码

#include <bits/stdc++.h>
#define mp make_pair
#define pb push_backusing namespace std;typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;const double eps = 1e-7;
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;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 main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int t = read();while(t--) {int n = read(), x = read(), m = read();int l = x, r = x;// cout << l << " " << r << endl;for(int i = 1; i <= m; i++) {int a = read(), b = read();if((a <= r && a >= l) || (b >= l && b <= r) || (l >= a && b >= r)) {//比赛时判断条件写的比较繁琐。l = min(l, a);r = max(r, b);}// cout << l << " " << r << endl;}printf("%d\n", r - l + 1);}return 0;
}

C.Palindromic Paths

思路

开两个数组,num1[i]num1[i]num1[i]记录的是步数为iii的时候的位置上的111的个数,num0[i]num0[i]num0[i]记录的是步数为iii的时候的位置上000的个数,因为整体的步数就是在[1,n+m−1][1, n + m - 1][1,n+m1]之间,所以我们可以通过对每一步全变为000或者全变为111中挑选一个最小值,作为我们的花费,然后累加花费就是答案。

代码

#include <bits/stdc++.h>
#define mp make_pair
#define pb push_backusing namespace std;typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;const double eps = 1e-7;
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;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[40][40];int num0[100], num1[100];int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int t = read();while(t--) {memset(num1, 0, sizeof num1);memset(num0, 0, sizeof num0);int n = read(), m = read();// cout << n << " " << m << endl;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++) {a[i][j] = read();if(a[i][j] == 1)    num1[i + j]++;else num0[i + j]++;}if(n == 2 && m == 2) {puts("0");// puts("");continue;}int ans = 0;int l = 2, r = n + m;while(l < r) {//好像这个if语句并没有什么用,不知道比赛的时候怎么想的。if((num1[l] && num0[l]) || (num1[r] && num0[r]) || (num1[l] && num0[r]) || (num0[l] && num1[r]))ans += min(num0[l]+ num0[r], num1[l] + num1[r]);// cout << ans << "\n";l++, r--;}printf("%d\n", ans);// puts("");}return 0;
}

D.Two Divisors

思路

先引入一个定理gcd(a,b)=1=gcd(a+b,a∗b)gcd(a, b) = 1 = gcd(a + b, a * b)gcd(a,b)=1=gcd(a+b,ab),所以这道题就简简单单就可以水过了,但是我的赛况却不是如此,,,,,

那我们来证明一下这个定理的正确性吧:

假设有KaTeX parse error: Undefined control sequence: \and at position 15: gcd(x, y) = 1 \̲a̲n̲d̲ ̲gcd(x, z) = 1,所以gcd(x,y∗z)=1gcd(x, y * z) = 1gcd(x,yz)=1

gcd(a,b)=1−>gcd(a+b,b)=1=gcd(a,a+b)−>gcd(a+b,a∗b)=1gcd(a, b) = 1 -> gcd(a + b, b) = 1 = gcd(a, a + b) - > gcd(a + b, a * b) = 1gcd(a,b)=1>gcd(a+b,b)=1=gcd(a,a+b)>gcd(a+b,ab)=1

代码

#include <bits/stdc++.h>
#define mp make_pair
#define pb push_backusing namespace std;typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;const double eps = 1e-7;
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;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 N1 = 1e7 + 10, N2 = 5e5 + 10;int prime[N1], cnt;
int ans1[N2], ans2[N2], n;
bool st[N1];int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);for(int i = 2; i < N1; i++) {if(!st[i])  prime[++cnt] = i;for(int j = 1; j <= cnt && i * prime[j] < N1; j++) {st[i * prime[j]] = true;if(i % prime[j] == 0)   break;}}n = read();for(int i = 1; i <= n; i++) {int temp = read();ans1[i] = ans2[i] = -1;for(int j = 1; prime[j] * prime[j] <= temp; j++) {int x = 1;if(temp % prime[j] == 0) {while(temp % prime[j] == 0) {temp /= prime[j];x *= prime[j];}if(temp == 1)   break;else {ans1[i] = x;ans2[i] = temp;break;}}}}for(int i = 1; i <= n; i++)printf("%d%c", ans1[i], i == n ? '\n' : ' ');for(int i = 1; i <= n; i++)printf("%d%c", ans2[i], i == n ? '\n' : ' ');return 0;
}

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

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

相关文章

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

前言最近几年微服务很火&#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 大会上发布了量子开发工具包…

UVA11525 Permutation 逆康托展开

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 逆康托展开板子 // Problem: UVA11525 Permutation // Contest: Luogu // URL: https://www.luogu.com.cn/problem/UVA11525 // Memory Limit: 0 MB // Time Limit: 3000 ms // // Power…

Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站

点击上方蓝字关注“汪宇杰博客”导语微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站。但是不自己配一下环境&#xff0c;就不能体现技术含量&#xff0c;容易被说微软的人都只会点鼠标。年轻的时候不敲命令&#xff0c;什么时候可…

Codeforces Round #285 (Div. 2) D. Misha and Permutations Summation 康托展开 + 线段树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 首先肯定不能模n!n!n!&#xff0c;所以考虑先将a,ba,ba,b做一个逆康托展开&#xff0c;得到a′,b′a,ba′,b′数组&#xff0c;以及a′b′sumabsuma′b′sum数组&#xff0c;让后我们可以通…

「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践

前面系列文章介绍的场景&#xff0c;设定的工具使用对象是Sqlserver和Azure 的SSAS数据模型开发&#xff0c;其实TabularEditor亦可以有限度地使用在PowerBIDeskTop的模型开发上&#xff0c;本文简单介绍下其最佳的使用场景。PowerBIDeskTop模型不同于Sqlserver的SSAS模型虽然大…

E:Modular Stability(组合数)

Modular Stability 思路 (((xmoda1)moda2)……modak−1)modak(((xmodp1)modp2)……modpk−1)modpk(((x \mod a_1) \mod a_2) …… \mod a_{k - 1}) \mod a_{k} (((x \mod p_1) \mod p_2) …… \mod p_{k - 1}) \mod p_{k}(((xmoda1​)moda2​)……modak−1​)modak​(((xmodp…

E:K-periodic Garland(DP)

思路 每个点我们有两种决策&#xff0c;其值为0或1&#xff1a; 如果点我们放置0的话&#xff0c;我们有其前一位数字是零&#xff0c;或者其前一位数字是一。 如果这个点我们放置1的话&#xff0c;我们有其前面是按照每k个数字都出现一次1的排列&#xff0c;也有可能其前面…

Codeforces Round #740 (Div. 2) F. Top-Notch Insertions 线段树 / 平衡树 + 组合数学

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑最终的序列是什么鸭子的&#xff0c;首先序列肯定单调不降&#xff0c;也就是a1≤a2≤a3≤...≤ana_1\le a_2\le a_3\le ...\le a_na1​≤a2​≤a3​≤...≤an​&#xff0c;显然不可…

沃尔玛招聘.NET软件工程师

做为码农, 你可能会知道BAT, 微软, google, oracle, facebook等公司, 然而你知道沃尔玛吗? 在最新公布的2019年世界500强里(http://www.fortunechina.com/fortune500/c/2019-07/22/content_339535.htm?沃尔玛领先阿里巴巴181名.百度不是世界500强沃尔玛领先T公司236名沃尔玛领…

E:Three Blocks Palindrome(hard and easy)(树状数组 ? 前缀和?)

Three Blocks Palindrome (hard version) 思路 考虑到每个数字的范围是12001 ~ 2001 200&#xff0c;于是我们可以通过枚举两侧的元素来寻找最优答案。 我们有一个贪心策略&#xff0c;两侧都以我们枚举的元素作为结尾点&#xff0c;假如我们当前枚举的数字是1&#xff0c;于…

Codeforces Round #731 (Div. 3) G. How Many Paths? dfs + 拓扑 + 思维

传送门 题意&#xff1a; 给你一张nnn个点mmm条边的图&#xff0c;让你对每个点确定一个编号&#xff0c;规则如下&#xff1a; (1)(1)(1) 对于不能到的点编号为000。 (2)(2)(2) 对于只有一条路径能到这个点的点编号为111。 (3)(3)(3) 对于有不止一条路径能到这个点的点编号为…

.NET Core 3.0深入源码理解HttpClientFactory之实战

写在前面前面两篇文章透过源码角度&#xff0c;理解了HttpClientFactory的内部实现&#xff0c;当我们在项目中使用时&#xff0c;总会涉及以下几个问题&#xff1a;HttpClient超时处理以及重试机制HttpClient熔断器模式的实现HttpClient日志记录与追踪链接下来我们将从使用角度…

F:Maximum White Subtree(树形dp)

Maximum White Subtree 思路 如果考虑其覆盖范围只会到其子树上&#xff0c;不会到其父节点上的话(假设的情况)&#xff0c;这道题就非常好写了&#xff0c;就是一个简单的自底向上传递的树形dpdpdp。所以我们还要考虑的就是连接其父节点&#xff0c;因此我们只需要再进行一个…

树莓派 + Windows IoT Core 搭建环境监控系统

前言&#xff1a;Windows IoT 是微软为嵌入式开发板设计的一种物联网操作系统&#xff0c;运行Windows UWP&#xff08;C# 开发&#xff09;&#xff0c;可以设计出丰富的交互界面&#xff0c;驱动GPIO&#xff0c;连接一些传感器做有意思的事&#xff0c;本文详细介绍如何使用…

CF1547F Array Stabilization (GCD version) st表 + 尺取/二分

传送门 题意&#xff1a; 思路&#xff1a; 容易发现&#xff0c;我们将所有aaa都除上所有aaa的gcdgcdgcd&#xff0c;实际上就是让你求一个最小的lenlenlen&#xff0c;对于所有iii&#xff0c;gcd(ai,ai1,...,ailen−1)1gcd(a_i,a_{i1},...,a_{ilen-1})1gcd(ai​,ai1​,...…

Gauss高斯消元——模板

就是线性代数的初等行变化&#xff1a; 倍加。倍乘。交换行。 #include <bits/stdc.h> #define mp make_pair #define pb push_backusing namespace std;typedef long long ll; typedef pair<int, int> pii; typedef unsigned long long ull;const double pi ac…

.net持续集成测试篇之Nunit文件断言、字符串断言及集合断言

使用前面讲过的方法基本上能够完成工作中的大部分任务了,然而有些功能实现起来还是比较麻烦的,比如说字符串相等性比较不区分大小写,字符串是否匹配某一正则规则,集合中的每一个(某一个)元素是否符合特定规则等,Nunit提供了一些特定的方法用来实现一些用普通断言比较难以实现的…

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

Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况&#xff1a; ac/ba c / bac/b这个时候两个的单价是相同的&#xff0c;如果b1b 1b1&#xff0c;也就是aca cac&#xff0c;无论买多少数量的东西&#xff0c;这两个的价格都是一样的&…