数学 A - Infinite Sequence

等差数列,公差是0的时候特判

#include <bits/stdc++.h>typedef long long ll;
const int N = 1e5 + 5;int main() {int a, b, c;scanf ("%d%d%d", &a, &b, &c);bool flag = true;if (c == 0) {if (a == b) {flag = true;} else {flag = false;}} else {int d = (b - a) / c;if (d >= 0 && (b - a) % c == 0) {flag = true;} else {flag = false;}}if (flag) {puts ("YES");} else {puts ("NO");}return 0;
}

数学 B - Restoring Painting

题意:3*3的矩阵,已经填了a,b,c,d四个数字,问填完数后四个2*2的子矩阵的和相等的方案数,所有数字范围在[1, n].

分析:蛮有意思的题目,很明显中心的数字是公有的,?从上到下从左到右设为x1,x2,x3,x4x5,那么满足x1+a+b=x4+b+d -> x4 = x1 + (a  - d),x2=x1+(b-c), x5=x1+(a+b-c-d),因为x2, x4, x5范围在[1, n],能得到一个x1的最小可行区间,然后*x3的可行区间(n).当然O(n)枚举也可以.

#include <bits/stdc++.h>typedef long long ll;
const int N = 1e5 + 5;int main() {int n, a, b, c, d;scanf ("%d%d%d%d%d", &n, &a, &b, &c, &d);int d1 = a - d, d2 = b - c, d3 = a + b - c - d;int l = 1, r = n;l = std::max (l, 1 - d1);r = std::min (r, n - d1);l = std::max (l, 1 - d2);r = std::min (r, n - d2);l = std::max (l, 1 - d3);r = std::min (r, n - d3);if (l <= r) {long long ans = 1ll * (r - l + 1) * n;std::cout << ans << '\n';} else {puts ("0");}return 0;
}

数学 C - Money Transfers

题意:n个数字有正有负,总和0,相邻数字可以分配,问最小操作数使得所有数字变成0.

分析:如果一段长度为L数字总和为0,最多L-1次可以使得每个数字为0.将n个数字分成m段都是0的,那么答案是n-m,所以求cnt[k]最大,表示m最大(最后一组为-k+k).

#include <bits/stdc++.h>int main() {std::ios::sync_with_stdio (false);std::cin.tie (0);std::map<long long, int> mp;int n;std::cin >> n;long long sum = 0;int mx = 0;for (int i=0; i<n; ++i) {int x;std::cin >> x;sum += x;mp[sum]++;mx = std::max (mx, mp[sum]);}std::cout << n - mx << '\n';return 0;
}

set D - Tree Construction

题意:按照BST建一棵树二叉树,问当前插入的点的父节点.

分析:set模拟平衡树,lower_bound查找位置.

#include <bits/stdc++.h>const int N = 1e5 + 5;
std::set<int> st;
std::map<int, int> left, right;int main() {int n, x;scanf ("%d", &n);scanf ("%d", &x);st.insert (x);int ans;for (int i=0; i<n-1; ++i) {scanf ("%d", &x);auto it = st.lower_bound (x);if (it != st.end () && left.count (*it) == 0) {left[*it] = x;ans = *it;} else {--it;right[*it] = x;ans = *it;}st.insert (x);printf ("%d ", ans);}return 0;
}

DP E - Trains and Statistic

题意:第i个车站能到[i+1, a[i]]的位置,p(i, j)表示从i到j最少搭几次车.求

分析:定义dp[i]表示的最小搭车数,从[i+1, n]中a[m]最大的dp[m]转移来,...

#include <bits/stdc++.h>const int N = 1e5 + 5;
int a[N];
long long dp[N];
std::pair<int, int> mx[N][20];
int n;void init_ST() {for (int i=0; i<n; ++i) {mx[i][0] = {a[i], i};}for (int j=1; (1<<j)<=n; ++j) {for (int i=0; i+(1<<j)-1<n; ++i) {mx[i][j] = std::max (mx[i][j-1], mx[i+(1<<(j-1))][j-1]);}}
}int query_max(int l, int r) {int k = 0; while (1<<(k+1) <= r - l + 1) k++;return std::max (mx[l][k], mx[r-(1<<k)+1][k]).second;
}int main() {scanf ("%d", &n);a[n-1] = n - 1;for (int i=0; i<n-1; ++i) {scanf ("%d", a+i);a[i]--;}init_ST ();long long ans = 0;dp[n-1] = 0;for (int i=n-2; i>=0; --i) {int p = query_max (i + 1, a[i]);dp[i] = dp[p] - (a[i] - p) + n - i - 1;ans += dp[i];}printf ("%I64d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/Running-Time/p/5505693.html

Codeforces Round #353 (Div. 2)相关推荐

  1. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  2. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  3. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  4. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  5. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  6. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  7. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  8. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  9. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

最新文章

  1. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第6章-Lurie 型动态网络的簇同步
  2. nginx下部署vue项目
  3. Java线程的生命周期及线程的几种状态
  4. 购物车完善版,客户余额及所购商品保存在文件
  5. java怎样返回json_java怎么返回json
  6. ipsec ip替换_[windows]利用IPSec对指定的ip进行访问限制
  7. youcans 的 OpenCV 学习课—6.灰度变换与直方图处理
  8. RocketMQ之事务消息
  9. PyQt5的QAction多次响应triggered信号的处理方式
  10. Eclipse的PHP插件PHPEclipse安装和使用
  11. 我要看的学习网站——php
  12. 倍福PLC TwinCAT 3 基础——编程基础
  13. 用英语推销计算机设备,销售电脑的英语对话
  14. 人工智能数学基础:费马引理、罗尔定理、拉格朗日微分中值定理、柯西中值定理
  15. [MAC]Google Drive下载大文件
  16. 越来越大的人使用计算机的原因,为什么越来越多的人喜欢用WPS这款电脑软件?这几点是关键原因...
  17. Bandwagon的配置记录(二) —— ftp文件传输
  18. 5G安全_核心网业务
  19. android识别人脸开放贴纸,人脸识别及动态贴纸
  20. 查看mysql 表 被人删除_MySQL 删除数据表

热门文章

  1. 你需要知道的缓存击穿/穿透/雪崩
  2. Javascript中的深拷贝和浅拷贝
  3. 面试题31.连续子数组的最大和
  4. Linux文件存储结构,包括目录项、inode、数据块
  5. db2 CLP中如何换行啊
  6. java+flash在线拍照和编辑,保存到服务器(Spring3.2.2+swf+jquery)
  7. iPhone全球技术巡讲北京站,WWDRChina 2009 Beijing
  8. Code Valley团队拟在澳洲建立一座价值5000万美元的BCH科技园
  9. 揭开对机器学习的七点误解
  10. 使用Typescript重写axios