1519A. Red and Blue Beans

问题简述

给定 \(r\) 个红豆,\(b\) 个蓝豆,差值 \(d\) ,要求我们进行为红蓝豆分组,使得红豆和蓝豆绝对值差值不大于 \(d\) ,即:一个红豆最多与 \(d + 1\) 个蓝豆组合,反之亦然

问题分析

设数量小的豆子为 \(x\) ,数量多的豆子为 \(y\) 所以满足 $y \le x + x · d $ 输出 YES

代码解决

using ll = long long;
void solve() {
ll r, b, d;
cin >> r >> b >> d;
if (r < b) swap(r, b);
cout << (b + b * d >= r ? "YES\n" : "NO\n");
}

1519B. The Cake Is a Lie

问题简述

求从\((1,1)\) 移动至 \((n,m)\) 的 Cost是否等于 \(k\),每一步的代价:\((x,y) \to (x + 1,y)\) 代价为 \(y\) ,$(x,y) \to (x,y + 1) $ 的代价为 \(x\)

问题分析

可以通过DP或者数学的方法解决

这里贴一下暴力解法 DFS

int n, m, k;
ll cnt = 0;
void dfs(int x, int y, int val) {
if (x == n && y == m) {
cnt = val;
return;
}
if (x > n || y > m) return;
if (x < n)
dfs(x + 1, y, val + y);
else
dfs(x, y + 1, val + x);
}
void solve() {
cnt = 0;
cin >> n >> m >> k;
dfs(1, 1, 0);
cout << (cnt == k ? "YES\n" : "NO\n");
}

math:\(k = (m - 1) + m * (n - 1)\) 输出 YES

using ll = long long;
void solve() {
ll n, m, k;
cin >> n >> m >> k;
cout << (k == (m - 1) + m * (n - 1) ? "YES\n" : "NO\n");
}

1519C. Berland Regional

问题简述

某地方举办XCPC区域赛, \(n\) 个学生,分别来自 \(u_i\) 且每人的编程能力 \(s_i\) ,如果限定每个队伍必须 \(k\) 人,那么学校会安排 \(s_i\) 更大的人组队,并且每个学院可以派出多个队伍且保证每个队友刚好 \(k\) 人,当 \(k = 1,2,...n\) 时,求出所有学校参赛人的 \(\sum s_i\) ,当人数不够 \(k\) 时战力和为 \(0\) .

问题分析

把每个学生存到对应的学校,并按照从大到小降序存进数组 u[] 且对每个学校的该大小位size的数组进行前缀和s[],每个学校对 \(ans_k\) 的贡献是前 size-k%size(size/k*k) 个的前缀和

using ll    = long long;
const int N = 2e5 + 7;
set<ll> st;
vector<ll> u[N];
bool cmp(pair<ll, ll> a, pair<ll, ll> b) { return a.first > b.first; }
void solve() {
int n;
cin >> n;
vector<pair<ll, ll>> p(n);
vector<ll> cnt(n + 2, 0);
st.clear();
for (int i = 0; i <= n; ++i) u[i].clear();
for (int i = 0; i < n; ++i) cin >> p[i].second, st.insert(p[i].second);
for (int i = 0; i < n; ++i) cin >> p[i].first;
sort(p.begin(), p.end(), cmp);
for (int i = 0; i < n; ++i) u[p[i].second].push_back(p[i].first);
for (auto i : st) {
int siz = u[i].size();
for (int j = 1; j < siz; j++) u[i][j] += u[i][j - 1];
for (int j = 1; j <= siz; j++) cnt[j] += u[i][siz - 1 - siz % j]; //关键是这里处理ans[]
}
for (int i = 1; i <= n; i++) cout << cnt[i] << " ";
cout << endl;
}

1519D. Maximum Sum of Products

问题简述

至多可以反转一次 a[] ,问最大的 \(\sum a_i*b_i\)

问题分析

T=2s,n=5000,直接枚举所有情况,所以考虑 \(a_i*b_i\) 的前缀和,枚举中点,且考虑翻转的长度奇偶,把翻转的 [l,r] 和 [l-1,r+1] 的式子展开发展不同点只有\(a[l-1]*b[r+1]+a[r+1]*b[l-1]\) ,左右两端用前缀和求和即可

using ll = long long;
ll a[5005], b[5005], s[5005], ans = 0;
int n;
void run1(int x) { //翻转长度位奇数
ll res = 0;
for (int l = x, r = x; l >= 1 && r <= n; l--, r++) {
if (l == r) res += a[l] * b[l];
else
res += a[l] * b[r] + a[r] * b[l];
ans = max(ans, res + s[l - 1] + s[n] - s[r]);
}
}
void run2(int x) { //翻转长度位偶数
ll res = 0;
for (int l = x, r = x + 1; l >= 1 && r <= n; l--, r++) {
if (l == r) res += a[l] * b[l];
else
res += a[l] * b[r] + a[r] * b[l];
ans = max(ans, res + s[l - 1] + s[n] - s[r]);
}
}
void solve() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int j = 1; j <= n; j++) cin >> b[j];
for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i] * b[i];
for (int i = 1; i <= n; i++) run1(i); //翻转长度位奇数
for (int i = 1; i <= n; i++) run2(i); //翻转长度位偶数
ans = max(ans, s[n]); //特判一下原来不翻转
cout << ans;
}

Educational Codeforces Round 108 (Rated for Div. 2) (A思维,Bmath,C前缀和,D枚举)的更多相关文章

  1. Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)

    题目链接:https://codeforces.com/contest/1359/problem/D 题意 有一个大小为 $n$ 的数组,可以选取一段连续区间去掉其中的最大值求和,问求和的最大值为多少 ...

  2. Educational Codeforces Round 61 (Rated for Div. 2)-C. Painting the Fence 前缀和优化

    题意就是给出多个区间,要求去掉两个区间,使得剩下的区间覆盖范围最大. 当然比赛的时候还是没能做出来,不得不佩服大佬的各种姿势. 当时我想的是用线段树维护区间和,然后用单点判0,维护区间间断个数.然后打 ...

  3. C. Brutality Educational Codeforces Round 59 (Rated for Div. 2) 贪心+思维

    C. Brutality time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. Educational Codeforces Round 78 (Rated for Div. 2) C - Berry Jam(前缀和)

  5. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  6. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  7. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  8. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  9. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  10. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

随机推荐

  1. hive报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask[已解决]

    我的报错信息 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 解决1(可行):不走ya ...

  2. JAVAweek7

    本周学习[函数][数组] 什么是函数: 函数就是定义在类中的具有特定功能的一段独立小程序.函数也称为方法. 函数的格式: ·修饰符 返回值类型 函数名(参数类型 形式参数) { 执行语句: retur ...

  3. Android学习day04【Button】

    出现的一些小状况: 小状况 报错,代码显示运行成功 但是无法在模拟机上显示 原因是没有在包含应有id 其二是关于设置背景颜色中 关于background与backgroundTint的区别 //这是b ...

  4. K8s容器debug高级技巧

    使用 kubectl exec 执行指令 如果您在 Kubernetes 上运行软件,您会想要在某些时候去调试您所部署的软件的一些方面.对于习惯于使用虚拟机 (VMs) 的人来说能自然使用的一种简单的 ...

  5. UI自动化测试框架:数据驱动

    一.UI自动化框架介绍 测试框架使用了Po设计模式(Page Object),每一个页面用一个类来对应,这个类里面要实现所有核心页面元素的获取方法,类里面提供操作页面元素的所有方法. 这个框架实现几点 ...

  6. 从零玩转人脸识别验证-face

    title: 从零玩转人脸识别验证 date: 2022-05-15 21:05:52.974 updated: 2023-05-16 00:00:11.594 url: https://www.yb ...

  7. STM32CubeMX教程2 GPIO输出 - 点亮LED灯

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 2 ...

  8. Python——第一章:用户交互

    变量 = input(提示语)首先会在屏幕中显示出提示语, 用户输入内容. 然后把用户输入的内容交给前面的变量 案例1: a = input("请输入第一个数字:") #括号里是提 ...

  9. 零基础电气专业毕业生,花费9.9元自学前端,成都月薪6.5K

    介绍 毕业于成都理工电气专业,大学毕业后进入了一家电气公司,月薪2000元.一直对互联网行业感兴趣,但由于没有相关专业背景,所以一直没有勇气转行. 转行契机 公司的书记想搞一个内部生产管理系统,看我们 ...

  10. Rabbitmq从安装到简单入门

    1:Rabbitmq是什么? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). 它由以高性能.健壮以及可伸缩性出名的 Erlang 写成. 2:它的优点 ...