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/2i=old,y/2j=oldx/2^i=old,y/2^j=oldx/2i=old,y/2j=old, 返回 2i∗2j>=n2^i*2^j>=n2i2j>=n
一般这样的题目都需要注意使用 LL

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;typedef long long LL;bool inline Check(LL x, LL y, LL n)
{LL ret = 1;while ((x & 1) == 0){ret <<= 1;x >>= 1;if (ret >= n)return true;}while ((y & 1) == 0){y >>= 1;ret <<= 1;if (ret >= n)return true;}if (ret >= n)   return true;else    return false;
}int main()
{int T;  cin >> T;while (T -- ){static LL x, y, n;cin >> x >> y >> n;if (Check(x, y, n))cout << "YES\n";elsecout << "NO\n";}return 0;
}



B Fair Division

原题信息

http://codeforces.com/contest/1472/problem/B
在这里插入图片描述

解题思路

能否将糖果平均分,直接分类讨论
首先统计 1gram1gram1gram 数量为cnt1cnt1cnt1,2gram2gram2gram数量为cnt2cnt2cnt2下面对cnt1,cnt2cnt1,cnt2cnt1,cnt2进行分类讨论
cnt1偶数,cnt2偶数cnt1偶数,cnt2偶数cnt1,cnt2
————可以直接进行平均分
cnt1偶数,cnt2奇数cnt1偶数,cnt2奇数cnt1,cnt2
————当cnt1=0cnt1=0cnt1=0时,不可以平均分
————当cnt1!=0cnt1!=0cnt1!=0时,可以平均分,只需要将cnt1−=2,cnt2++cnt1-=2,cnt2++cnt1=2,cnt2++即可
cnt1奇数,cnt2偶数或偶数cnt1奇数,cnt2偶数或偶数cnt1,cnt2
————因为cnt1cnt1cnt1为奇数,导致总的grams根本就是个奇数,是不可能平均分的。

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;typedef long long LL;const int N = 200010;
int a[N], n;bool inline Check()
{static int cnt1, cnt2, sum;cnt1 = cnt2 = sum = 0;for (int i = 1; i <= n; i ++ ){sum += a[i];cnt1 += (a[i] == 1);cnt2 += (a[i] == 2);}if (sum & 1)   return false;else if (cnt1 == 0 && cnt2 % 2 == 1)    return false;else    return true;
}int main()
{int T;  cin >> T;while (T -- ){cin >> n;for (int i = 1; i <= n; i ++ ){scanf("%d", &a[i]);}if (Check())cout << "YES\n";elsecout << "NO\n";}return 0;
}



C Long Jumps

原题信息

http://codeforces.com/contest/1472/problem/C
在这里插入图片描述

解题思路

一个较为简单的dp,需要注意的是数组下标的特判,防止越界,最好开LL
fif_ifi表示选择iii做为StartPositionStartPositionStartPosition的游戏结果
那么,我们可以得到递归关系式为
————fi=ai+fi+aif_i=a_i+f_{i+a_i}fi=ai+fi+ai 条件为当 i+ai<=ni+a_i<=ni+ai<=n
————否则fi=aif_i=a_ifi=ai
上述的这个讨论就是为了避免数组的越界

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;typedef long long LL;const int N = 200010;
int a[N], n;
LL res = 0;
LL f[N];int main()
{int T;  cin >> T;while (T -- ){cin >> n;for (int i = 1; i <= n; i ++ ){scanf("%d", &a[i]);}memset(f, 0, sizeof f);res = 0LL;for (int i = n; i >= 1; i -- ){f[i] = a[i] + (i + a[i] <= n ? f[i + a[i]] : 0);res = max(res, f[i]);}/// printf("###########\n");cout << res << endl;}return 0;
}



D Even-Odd Game

原题信息

http://codeforces.com/contest/1472/problem/D
在这里插入图片描述

解题思路

题目大意是给定一个数组,AliceBobAlice BobAliceBob轮流在里面选一个数, AliceAliceAlice选择偶数,那么加和偶数一样大的分, 选择奇数不加分;BobBobBob选择奇数,那么加和奇数一样大的分,选择偶数不加分。
从题意出发,我们不难想到下面这种求解方法,将奇数、偶数分开,两个数组分别进行非递增排序,每次选择的时候从两个数组选取最大的,进行拿出。(好像不分开也行)
对于AliceAliceAlice来讲,选取当前最大的数是偶数,那么加分最多,选取最大的数是奇数,是为了防止BobBobBob加分过多!同理,对于BobBobBob也是如此,下面我们来证明他的合法性。

  • 直接严格证明是很难的,我们不妨辅助的思想来看这个问题,对于人物A来说,他可以选择自己可以加分的数字,也可以选择不让别人加分的数(自己不加分),不让别人加分,就类似于让自己加分(因为让别人加分少了)
  • 也就是说让自己的得分减去另一个人得分更大,自己的赢面更大。因此对于博弈双方,我们只需要选择当前最大数即可。
  • 记得开LL

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;typedef long long LL;const int N = 200010;
int a[N], n;
int even_a[N], old_a[N], idx_e, idx_o;
LL score_a, score_b;
int cur_o = 1, cur_e = 1;
bool cmp(int a, int b){ return a > b; }bool Check()
{if (cur_o > idx_o)  return false;if (cur_e > idx_e)  return true;if (old_a[cur_o] >= even_a[cur_e])  return true;else    return false;
}
int main()
{int T;  cin >> T;while (T -- ){cin >> n;score_a = score_b = 0LL;idx_e = idx_o = 0;for (int i = 1; i <= n; i ++ ){scanf("%d", &a[i]);if (a[i] & 1)   old_a[++ idx_o] = a[i];else    even_a[++ idx_e] = a[i];}sort(even_a + 1, even_a + idx_e + 1, cmp);sort(old_a + 1, old_a + idx_o + 1, cmp);cur_o = 1, cur_e = 1;for (int i = 1; i <= n; i ++ ){if (Check())    // 奇数{if (i & 1){cur_o ++;}else{score_b += old_a[cur_o ++];}}else    // 偶数{if (i & 1){score_a += even_a[cur_e ++];}else{cur_e ++;}}}if (score_a == score_b) puts("Tie");else if (score_a > score_b) puts("Alice");else    puts("Bob");}return 0;
}



E Correct Placement

原题信息

在这里插入图片描述

解题思路

对于每一个(h,w)(h, w)(h,w)我们需要找到(hi,wi),hi<h,wi<w(h_i, w_i), h_i<h,w_i<w(hi,wi),hi<h,wi<w的下标,至于另一种情况我们直接 swap(h,w)swap(h, w)swap(h,w)即可,
主要是先对(w,h)(w, h)(w,h)进行排序二分查询 hi<hh_i<hhi<h的最大下标,找他的前缀最小值www(可以预处理)

AC代码

#include <bits/stdc++.h>
using namespace std;const int N = 200010;
const int INF = 0x3f3f3f3f;
class Node
{
public:int h, w;int idx;void operator=(const Node &t1){h = t1.h, w = t1.w, idx = t1.idx;}
}a[N], q[N];
int pre_w[N], pre_idx[N];
int n;bool cmp(const Node &t1, const Node &t2)
{if (t1.h == t2.h)return t1.w < t2.w;elsereturn t1.h < t2.h;
}int Cal2(int h, int w)
{int l = 1, r = n, mid;if (h <= q[l].h)  return -1;while (l < r){mid = l + r + 1 >> 1;if (q[mid].h < h){l = mid;}else{r = mid - 1;}}if (w > pre_w[l])   // 找到了一个高度小,宽度也小的return pre_idx[l];else    // 没有宽度小的return -1;
}int Cal(int h, int w)
{int res1 = Cal2(h, w), res2 = Cal2(w, h);if (res1 == -1 && res2 == -1)return -1;elsereturn max(res1, res2);
}int main()
{int t;  cin >> t;while (t -- ){scanf("%d", &n);for (int i = 1; i <= n; i ++ ){scanf("%d%d", &a[i].h, &a[i].w);a[i].idx = i;q[i] = a[i];}sort(q + 1, q + 1 + n, cmp);pre_w[0] = INF, pre_idx[0] = -1;for (int i = 1; i <= n; i ++ ){if (q[i].w < pre_w[i - 1]){pre_w[i] = q[i].w, pre_idx[i] = q[i].idx;}else{pre_w[i] = pre_w[i - 1], pre_idx[i] = pre_idx[i - 1];}}/*for (int i = 1; i <= n; i ++ )printf("h=%d, w=%d, idx=%d, pre_w=%d, pre_idx=%d\n", q[i].h, q[i].w, q[i].idx, pre_w[i], pre_idx[i]);*/printf("%d", Cal(a[1].h, a[1].w));for (int i = 2; i <= n; i ++ ){printf(" %d", Cal(a[i].h, a[i].w));}puts("");}return 0;
}



F New Year’s Puzzle

原题信息

http://codeforces.com/contest/1472/problem/F
在这里插入图片描述

解题思路

首先第一个想到的就应该是对这些点按照列编号进行排序,然后我们逐个点进行处理。
cur1,cur2cur1,cur2cur1,cur2表示当前第一行,第二行当前可以放置的最小列编号。下面我们对BlockedCellBlocked CellBlockedCell进行讨论

  • r1=r2r1 = r2r1=r2,即两个BlockedCellBlockedCellBlockedCell将一整列堵住,那么要求abs(cur1−cur2)abs(cur1-cur2)abs(cur1cur2)%2=02=02=0,最后更新cur1=cur2=r1+1cur1=cur2=r1+1cur1=cur2=r1+1即可,这一次处理了两个BlockedCellBlockedCellBlockedCell问题
  • r1!=r2r1 != r2r1!=r2,我们处理BlockedCell(r1,c1)BlockedCell(r1, c1)BlockedCell(r1,c1),假设这个BlockedCellBlockedCellBlockedCellcur1cur1cur1那一列。首先倘若r1<cur1r1<cur1r1<cur1指定不行,因为小于cur1cur1cur1的区域已经使用完毕
    那么如果(r1−cur2)(r1-cur2)(r1cur2)%2=02=02=0,那么就说明这一行是可以自己解决的。
    即使是使用了下面的那一行,也会是成对的使用,与另外一列自己解决一样
    倘若(r1−cur2)(r1-cur2)(r1cur2)%2=12=12=1,也就是说他需要另外一列的帮助,加奇数的竖线排列,下面我们只需考虑是否可以加(至少)一个竖线,在这里只需要考虑加一个就行,因为多加了也只能是奇数个,奇数个竖线,两两可以合并为横线,因为是加入一个,我们考虑一下最晚加入(在cur−1cur-1cur1的位置)。
    为什么是最晚在cur−1cur-1cur1?因为最晚就是在 BlockedCell之前加入!
    那么如何判断是否可以,那么只需在最晚加入的话,另一个列前方时候可以组成成对个二元组即可
    最后cur1,cur2cur1, cur2cur1,cur2注意更新,一个为c1c1c1,一个为c1+1c1 + 1c1+1
  • 最后,我们还需考虑满足了BlockedCellBlockedCellBlockedCell之后的cur1,cur2cur1, cur2cur1,cur2是否可以在结尾处ok,因此检验一下
    (cur1−cur2)(cur1-cur2)(cur1cur2)%2=02=02=0->成立,否则不成立

AC代码

#include <bits/stdc++.h>
using namespace std;const int M = 200010, INF = 0x3f3f3f3f;
int n, m;class Node
{
public:int r, c;
}q[M];bool cmp(const Node &t1, const Node &t2)
{if (t1.c == t2.c)return t1.r < t2.r;elsereturn t1.c < t2.c;
}bool Check()
{// if (m & 1)  return false;sort(q + 1, q + 1 + m, cmp);
/*for (int i = 1; i <= m; i ++ )printf("I=%d, r=%d, c=%d\n", i, q[i].r, q[i].c);
*/int r1, r2, c1, c2;int cur1 = 1, cur2 = 1;q[m + 1].c = INF;for (int i = 1; i <= m; i += 1){/// printf("I=%d, cur1=%d, cur2=%d\n", i, cur1, cur2);c1 = q[i].c, r1 = q[i].r, c2 = q[i + 1].c, r2 = q[i + 1].r;if (c1 == c2){/// puts("Equal");i ++;if (abs(cur1 - cur2) & 1)   // 口封不上return false;cur1 = cur2 = c1 + 1;}else{if (r1 == 1)    // 上面{/// puts("Up");if (cur1 > c1)  // 当前这个地方不能堵上return false;else{if ((c1 - cur1) % 2 == 0)   // 偶数,可以自行解决{cur1 = c1 + 1;}else    // 需要下面协助一个竖着的{cur1 = c1 - 1;if (cur1 - cur2 >= 0 && (cur1 - cur2) % 2 == 0)  // 下面可以跟上{cur1 = c1 + 1;cur2 = c1;}else{return false;}}}}else    // 下面{/// puts("Down");if (cur2 > c1)  // 当前这个地方不能堵上return false;else{if ((c1 - cur2) % 2 == 0)   // 偶数,可以自行解决{cur2 = c1 + 1;}else    // 需要上面协助一个竖着的{cur2 = c1 - 1;/*printf("Down, cur1=%d, cur2=%d\n", cur1, cur2);printf("%d\n", cur2 - cur1 >= 0);printf("%d\n", ((cur2 - cur1) % 2 == 0));*/if ((cur2 - cur1 >= 0) && ((cur2 - cur1) % 2 == 0))  // 上面可以跟上{cur2 = c1 + 1;cur1 = c1;}else{//puts("FALSE");return false;}}}}}}if (abs(cur1 - cur2) & 1)return false;elsereturn true;
}int main()
{int t;  cin >> t;while (t -- ){scanf("%d%d", &n, &m);for (int i = 1; i <= m; i ++ )scanf("%d%d", &q[i].r, &q[i].c);if (Check())puts("YES");elseputs("NO");}return 0;
}
/*
1
4 2
1 2
2 2
YES
*/
/*
1
4 3
1 1
1 2
2 2
NO
*/
/*
1
4 2
1 1
2 3
YES
*/
/*
3
5 2
2 2
1 4
3 2
2 1
2 3
6 4
2 1
2 3
2 4
2 6
*/



G Moving to the Capital

原题信息

http://codeforces.com/contest/1472/problem/G
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

一个很有意思的dp问题
首先我们先利用bfs求出起点到其它任意各点的举例,然后我们进行dp求解。

  • dp思路一
    fi,0f_{i, 0}fi,0表示从iii点开始,使用0次规则2可以达到的最小ddd,(其实就是自身的ddd)
    fi,1f_{i, 1}fi,1表示从iii点开始,使用1次规则2可以达到的最小ddd
    下面我们来分析一下fi,1f_{i, 1}fi,1如何进行更新,
    fi,1={fj,0∃i⇒j边且di≥djfj,1∃i⇒j边且di<djf_{i, 1}=\begin{cases} f_{j, 0} & \exists i \Rightarrow j 边且d_i\geq d_j\\ f_{j, 1} & \exists i \Rightarrow j 边且d_i < d_j\\ \end{cases}fi,1={fj,0fj,1ijdidjijdi<dj
    fj,0f_{j, 0}fj,0容易保证,因为直接就是djd_jdj,但是我们如何保证使用的fj,1f_{j,1}fj,1是更新完毕的最终结果呢? 下面我们考虑fj,1f_{j,1}fj,1如何使其尽可能早的确定,而且不会使用到未确定的fj,1f_{j,1}fj,1,我们从di,djd_i, d_jdi,dj在分段函数的关系中,就可以发现,倘若我们对ddd的距离进行降序排序,即先进性距离更大的dpdpdp,那么就可以是得使用到的fj,1f_{j,1}fj,1都会是前面进行处理完毕的,因此进行dpdpdp的算法如下代码

  • Algo

  • 首先bfsbfsbfs处理出各点的距离did_idi

  • 处理出did_idi之后,我们就可以进行按照距离进行非递增排序。

  • 按照分段函数进行dpdpdp

AC代码

#include <bits/stdc++.h>
using namespace std;const int N = 200010, INF = 0x3f3f3f3f;
int f[N];
int h[N], e[N], ne[N], idx;
int n, m;
bool st[N];
int dist[N];
vector<int> order;void Initial()
{// edge initialmemset(h, -1, sizeof h);idx = 0;// dp initialmemset(f, 0x3f, sizeof f);// dist initialmemset(dist, -1, sizeof dist);// orderorder.clear();
}void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}int main()
{int t;  cin >> t;while (t -- ){// inputscanf("%d%d", &n, &m);// initialInitial();for (int i = 1, u, v; i <= m; i ++ ){scanf("%d%d", &u, &v);add(u, v);}// bfs for distqueue<int> que;que.push(1);    dist[1] = 0;order.push_back(1);int u, v;while (que.size()){u = que.front();    que.pop();for (int i = h[u]; ~i; i = ne[i]){v = e[i];if (dist[v] == -1){dist[v] = dist[u] + 1;que.push(v);order.push_back(v);}}}/*for (int i = 1; i <= n; i ++ )printf("i=%d dist=%d\n", i, dist[i]);*/// dfs for dp/*从距离最远的开始,进行枚举dp*/for (int j = n - 1, u, v; j >= 0; j -- ){u = order[j];f[u] = dist[u];for (int i = h[u]; ~i; i = ne[i]){v = e[i];if (dist[u] >= dist[v])  // u -> v 需要耗费一次机会, 只可以 取dist{f[u] = min(f[u], dist[v]);}else    // 不需要消耗机会,直接最优子结构{f[u] = min(f[u], f[v]);}}}// output/*for (int i = 1; i <= n; i ++ )printf("i=%d, f[i][0]=%d, f[i][1]=%d\n", i, f[i][0], f[i][1]);*/printf("%d", 0);for (int i = 2; i <= n; i ++ )printf(" %d", f[i]);puts("");}return 0;
}



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

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

相关文章

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…

03.结构化机器学习项目 W1.机器学习策略(1)

文章目录1. 机器学习策略2. 正交化 Orthogonalization3. 单一数字评估指标4. 满足和优化指标5. 训练/开发/测试集划分6. 开发集和测试集的大小7. 什么时候该改变开发/测试集和指标8. 人类的表现水准9. 可避免偏差10. 理解人的表现11. 超过人的表现12. 改善你的模型的表现测试题…

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

Educational Codeforces Round 104 (Rated for Div. 2) A. Arena \quad原题链接 http://codeforces.com/contest/1487/problem/A \quad解题思路 首先&#xff0c;我们看战斗次数是无限的&#xff0c;任意非最小值的英雄都有赢得次数&#xff0c;既然有场次可以赢&#xff0…

LeetCode 1130. 叶值的最小代价生成树(区间DP/单调栈贪心)

文章目录1. 题目2. 解题2.1 DP2.2 单调栈贪心1. 题目 给你一个正整数数组 arr&#xff0c;考虑所有满足以下条件的二叉树&#xff1a; 每个节点都有 0 个或是 2 个子节点。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。&#xff08;知识回顾&#xff1a;如果一个…

03.结构化机器学习项目 W2.机器学习策略(2)

文章目录1. 进行误差分析2. 清除标注错误的数据3. 快速搭建你的第一个系统&#xff0c;并进行迭代4. 使用来自不同分布的数据&#xff0c;进行训练和测试5. 数据分布不匹配时&#xff0c;偏差与方差的分析6. 定位数据不匹配问题7. 迁移学习 Transfer learning8. 多任务学习 Mul…

Codeforces Round #702 (Div. 3)解题报告

Codeforces Round #702 (Div. 3) 全部题解 读错题意&#xff0c;写了半天真是心态爆炸&#xff0c;总的来看这次题目不难的。 A. Dense Array http://codeforces.com/contest/1490/problem/A 解题思路 相邻的数字必然是倘若不满足的话是需要插入数据的&#xff0c;那么我们…

LeetCode 930. 和相同的二元子数组(哈希+前缀和)

文章目录1. 题目2. 解题1. 题目 在由若干 0 和 1 组成的数组 A 中&#xff0c;有多少个和为 S 的非空子数组。 示例&#xff1a; 输入&#xff1a;A [1,0,1,0,1], S 2 输出&#xff1a;4 解释&#xff1a; 如下面黑体所示&#xff0c;有 4 个满足题目要求的子数组&#xff…

poj 3469(网络流模版)

题目链接&#xff1a;http://poj.org/problem?id3469 思路&#xff1a;终于把网络流的模版测试好了&#xff0c;在Dinic和Sap之间还是选择了Sap,事实证明Sap确实比Dinic效率高&#xff0c;在此贴出自己的网络流模版&#xff1a; 1 #include<iostream>2 #include<cstd…

盒子的真实宽高

盒子的宽 两边border 两边padding 盒子的高度 上下border 上下padding