已AC:C,D,E,F

很喜欢这场比赛的题目风格。而且也不难。

C.Vasya And Array

题目大意:

给你mmm条两类限制:区间[L,R][L,R][L,R]单调非降 / 区间[L,R][L,R][L,R]不符合单调非降.
问你是否能够找到一种符合所有限制的长度为nnn的序列aia_iai​

n,m≤1000n,m \leq 1000n,m≤1000

题目思路:思维,贪心

我们考虑一个位置一个位置的填。然后从前往后考虑每对相邻的数(i,i+1)(i,i+1)(i,i+1).如果他们被完整的被包含在第一种条件限制中,那么这两个数必须要增。否则我们让他递减(贪心).因为我们是先满足条件1的限制,之后再暴力checkcheckcheck条件二.所以在满足条件1的情况下,我们想让序列尽量不增,这样好满足条件2.
想到这一点这题就很好做了.O(n2)O(n^2)O(n2)暴力搞即可。

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define pb push_back
#define mp make_pair
#define vi vector<int>
#define vl vector<ll>
const int maxn = 1000 + 5;
const int mod = 1e9 + 7;
int a[maxn];
struct No{int l , r;};
vector<No> t[2];
bool check (int l , int r)
{for (auto g : t[0])if (g.l <= l && r <= g.r) return true;return false;
}
int main()
{ios::sync_with_stdio(false);int n , m; cin >> n >> m;for (int i = 1 ; i <= m ; i++){int x , y , z; cin >> x >> y >> z;x = !x;t[x].pb({y , z});}a[1] = 1005;for (int i = 2 ; i <= n ; i++){if (check(i - 1 , i)) a[i] = a[i - 1] + 1;else a[i] = a[i - 1] - 1;}bool ok = true;for (auto g : t[1]){bool res = true;for (int i = g.l ; i < g.r && res; i++){if (a[i] > a[i + 1]) res = false;}if (res){ok = false;break;}}if (!ok){cout << "NO" << endl;return 0;}cout << "YES" << endl;for (int i = 1 ; i <= n ; i++){cout << a[i] << " ";}cout << endl;return 0;
}
进一步优化?

暴力check的部分我们用前缀最大值优化,复杂度降为O(n)O(n)O(n).

D. Subarray Sorting

题目大意:

给你两个数组a,ba,ba,b.你每次可以取aaa的一个子数组,对其进行排序。问你是否能够将其转化为bbb.

题目思路:

1.先判排序后a==ba==ba==b.
2.由于bbb的顺序不一定是严格升序。而且一旦对一段排完序之后 大的就不能移动到小的之前 了。所以我们尽量对相邻两个数之间排序。例如:
a = [7,6,5]
b = [5,7,6]
3.由于要每一个位置上的数相同。那么我们简单的考虑从左往右一个一个匹配。循环b数组1到i1到i1到i.ptrptrptr维护当前匹配到的aaa数组的位置.

我们需要知道每个数的从小到大的位置。这个对值域开队列即可。对于bib_ibi​,我们在aaa找到离iii最近的位置rrr.那么这个数能够被挪动到位置iii的条件是:[i,r][i,r][i,r]内最小值=bi= b_i=bi​.这个我们用线段树维护区间最小值.

挪动完之后,我们将ar:=1e9a_r:=1e9ar​:=1e9。代表废除这个位置。ptrptrptr不变.

启示:

面对这种需要多次挪动数组的某个数到最前面的问题,不用真的移动,而是用一个指针维护当前数组位置+将这个数改成infinfinf(一个无效的数)来模拟这个问题。

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define pb push_back
#define mp make_pair
#define vi vector<int>
#define vl vector<ll>
#define tl (t << 1)
#define tr (t << 1 | 1)
#define mid ((l + r) >> 1)
const int maxn = 3e5 + 5;
const int mod = 1e9 + 7;
const int inf = 1e9;
int a[maxn] , b[maxn] , n;
int mi[maxn << 2];
void pushup(int t)
{mi[t] = min(mi[tl] , mi[tr]);
}
void build (int t , int l , int r)
{if (l == r) {mi[t] = a[l];return ;}build(tl , l , mid);build(tr , mid + 1 , r);pushup(t);return ;
}
int ask (int t , int l , int r , int L , int R)
{if (L <= l && r <= R) return mi[t];int ans = 1e9;if (L <= mid) ans = min(ans , ask(tl , l , mid , L , R));if (R > mid) ans = min(ans , ask(tr , mid + 1 , r , L , R));return ans;
}
void modify (int t , int l , int r , int p , int c)
{if (l == r){mi[t] = c;return ;}if (p <= mid) modify(tl , l , mid , p , c);else modify(tr , mid + 1 , r , p , c);pushup(t);return ;
}int tmp[2][maxn];
bool check ()
{for (int i = 1 ; i <= n ; i++) tmp[0][i] = a[i];for (int i = 1 ; i <= n ; i++) tmp[1][i] = b[i];sort(tmp[0] + 1 , tmp[0] + 1 + n);sort(tmp[1] + 1 , tmp[1] + 1 + n);for (int i = 1 ; i <= n ; i++) if (tmp[0][i] != tmp[1][i]) return false;return true;
}int main()
{ios::sync_with_stdio(false);int t; cin >> t;while (t--){cin >> n;set<int> s[n + 2];for (int i = 1 ; i <= n ; i++)cin >> a[i] , s[a[i]].insert(i);for (int i = 1 ; i <= n ; i++)cin >> b[i];if (!check()){cout << "NO" << endl;continue;}build(1 , 1 , n);bool ok = true;int ptr = 1;for (int i = 1 ; i <= n ; i++){while (a[ptr] == inf) ptr++;int now = a[ptr];if (b[i] == now) {s[now].erase(ptr);ptr++;continue;}int r = *s[b[i]].begin();if (ask(1 , 1 , n , ptr , r) != b[i]){ok = false;break;}modify(1 , 1 , n , r , inf);a[r] = inf;s[b[i]].erase(r);}cout << (ok ? "YES" : "NO") << endl;}return 0;
}
*/

E - Tree Painting,水题

题目大意:

让你确定一个根,使得各点深度之和相加最大.

题目思路:

换根计算即可.

F. Expected Square Beauty - 计数,期望

见:下一篇博客

Educational Codeforces Round 67小结相关推荐

  1. Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)

    心得 D写了个假算法被hack了wtcl- E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多 F概率dp G费用流 回头再补 思路来源 马老师 归神 贤神等代码 http://www.mami ...

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

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  3. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

  4. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  5. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  6. Educational Codeforces Round 32

    http://codeforces.com/contest/888 A Local Extrema[水] [题意]:计算极值点个数 [分析]:除了第一个最后一个外,遇到极值点ans++,包括极大和极小 ...

  7. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  8. 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, ...

  9. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

最新文章

  1. CentOS压缩命令zip
  2. 解决SwipeRefreshLayout左右滑动事件冲突的问题
  3. mysql zip 安装
  4. 远程抄表系统(AMR/AMI)中无线模块选型指南
  5. L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss+kl散度
  6. 国内一些大公司的开源项目
  7. 卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
  8. 华为P50系列开始量产:Pro+版或进一步延期
  9. 最新美团JS逆向分析(_token参数)
  10. 浏览器中打开IOS应用并传参
  11. POJ 1183 反正切函数的应用
  12. PHP_CodeSniffer HG 服务端部署篇
  13. Feature Statistics Mixing Regularization for Generative Adversarial Networks
  14. w10系统服务器管理器,Win10如何打开服务管理器
  15. 机器学习流程及详细内容(4)
  16. 数据库系统原理与应用教程(042)—— MySQL 查询(四):使用通配符构造查询条件
  17. Python修改文件名
  18. 生猪出售 matlab,数学建模论文-肥猪最佳销售时机问题.doc
  19. TCP/ip 协议端口范围 详解
  20. python图形化编程wx_慢步python,图形用户界面库:wxPython库 初体验,先建一个窗体...

热门文章

  1. 华为鸿蒙系统研发多久了,华为系统公测到正式版需要多久
  2. 源码阅读(32):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(2)
  3. uin-app微信小程序开发
  4. 台式计算机硬盘1t,总结:4款1TB台式机硬盘如何选?_硬盘_内存硬盘评测-中关村在线...
  5. MP3自动播放,并且顺序播放
  6. 1042: 小丑排序
  7. 1508-张晨曦总结《2016年-11月-2日》【连续12天总结】
  8. linux运维高薪就业指导(新手获得高薪必备)
  9. 计算机机房交接班记录,监控室值班交接班制度
  10. Redis实战 - 2.list、set和Sorted Set