• A 签到
  • B 签到
  • C dp
    • 题意:n道题,第i道题做对的概率为pip_ipi​,问分别做对n道题中分别做对0,1,2,3,…n道的概率。
    • 思路:dp[i][j]表示前i道题中对了j道的概率dp[i][j]表示前i道题中对了j道的概率dp[i][j]表示前i道题中对了j道的概率
      dp[i][0]=dp[i−1][0]∗(1−pi)dp[i][0]=dp[i-1][0]*(1-p_i)dp[i][0]=dp[i−1][0]∗(1−pi​)
      dp[i][j]=dp[i−1][j]∗(1−pi)+dp[i−1][j−1]∗pidp[i][j]=dp[i-1][j]*(1-p_i)+dp[i-1][j-1]*p_idp[i][j]=dp[i−1][j]∗(1−pi​)+dp[i−1][j−1]∗pi​
  • D 签到 注意判断三角形是否合法(三点共线)
  • E 签到 将原式平方+质因子分解
  • F 贪心 按照a+b降序排列即可
  • G hash 选取模数如402653189看等式两边对模数取模的结果是否相同即可
  • H
    • 题意:
    • 思路:升序排列,设遍历到i(i≥k),dp[i]表示前i个处理完之后至少需要的魔力值。
      那么dp[i]=min1≤j≤i−k+1{a[i]−a[j]+dp[j−1]}=a[i]−min1≤j≤i−k+1{dp[j−1]−a[j]}dp[i]=min_{1≤j≤i-k+1}\{a[i]-a[j]+dp[j-1]\}=a[i]-min_{1≤j≤i-k+1}\{dp[j-1]-a[j]\}dp[i]=min1≤j≤i−k+1​{a[i]−a[j]+dp[j−1]}=a[i]−min1≤j≤i−k+1​{dp[j−1]−a[j]}且每次往下遍历一个,j范围的左边界不变,右边界只增加一个值,可以在遍历的时候处理出来。最后求得的dp[n]即答案。
  • I
    • 题意:
    • 思路:对于vi=vjv_i=v_jvi​=vj​,花费为0,所以vi=vjv_i=v_jvi​=vj​的点一定是相连的。假如这n个点去重后有m个不同的点,那么只需要连m-1条边,找到最低的位p,如果存在viv_ivi​的p位为0,vjv_jvj​的p位为1,那么最终的答案就是2p∗(m−1)2^p*(m-1)2p∗(m−1),这是由于lowbit只关系找到最后一个是1的位置,让p位上值不同的点之间相连。
      对于如何处理上述的"如果存在viv_ivi​的p位为0,vjv_jvj​的p位为1"问题呢,将所有的v相&,可以得到哪些位上的值全为1,相|可以得到哪些位上的值全为0,再将结果异或,就可以得到哪些位上的值即有0也有1了,且异或结果上该位为1。
    • ac代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5+10;
int n;
int a[maxn];
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d", &n);int x = (1<<30)-1, y = 0;for(int i = 1; i <= n; i++){scanf("%d", &a[i]);x &= a[i];y |= a[i];}x ^= y;sort(a+1, a+1+n);int m = unique(a+1, a+1+n)-(a+1);ll ans = 0;for(int p = 0; p <= 30; p++){if(x&(1<<p)){ans = (1ll<<p)*(m-1);break;}}cout << ans;return 0;
}
  • J

    • 题意:
    • 思路:
    • ac代码:
//题解代码,我偷懒了
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> pii;
int n, m, t[N << 2], t1[N << 2], k[N];
void modify(int o, int l, int r, int k, ll v, ll v1) {if (l == r) return t[o] = v, t1[o] = v1, void();int mid = (l + r) >> 1;if (k <= mid) modify(o << 1, l, mid, k, v, v1);else modify(o << 1 | 1, mid + 1, r, k, v, v1);t[o] = (t[o << 1] * 1ll * t[o << 1 | 1]) % mod;t1[o] = (t1[o << 1] * 1ll * t[o << 1 | 1] + t1[o << 1 | 1]) % mod;
}pii merge(pii a, pii b) {return {a.first * 1ll * b.first % mod, (a.second * 1ll * b.first + b.second) % mod};
}pii query(int o, int l, int r, int ql, int qr) {if (ql <= l && r <= qr) return {t[o], t1[o]};int mid = (l + r) >> 1;if (qr <= mid) return query(o << 1, l, mid, ql, qr);if (ql > mid) return query(o << 1 | 1, mid + 1, r, ql, qr);return merge(query(o << 1, l, mid, ql, qr), query(o << 1 | 1, mid + 1, r, ql, qr));
}int main() {scanf("%d%d", &n, &m);int op, x, y, z;for (int i = 1; i <= n; ++i) scanf("%d", k + i);for (int i = 1; i <= n; ++i) {scanf("%d", &x);modify(1, 1, n, i, k[i], x);}while (m--) {scanf("%d%d%d", &op, &x, &y);if (op == 2) {pii ans = query(1, 1, n, x, y);printf("%d\n", (ans.first + ans.second) % mod);} else scanf("%d", &z), modify(1, 1, n, x, y, z);}return 0;
}

【2020牛客寒假基础算法训练营】第二场总结相关推荐

  1. C numi和弓道 双指针(2020牛客寒假基础训练营1 )

    链接:https://ac.nowcoder.com/acm/contest/3002/C 来源:牛客网 题意: umi对弓道非常痴迷. 有一天,她在研究一个射箭问题: 在一个无限大的平面中,她站在 ...

  2. 2020牛客暑期多校训练营(第九场)E题 Groundhog Chasing Death

    题意 计算 ∏ i = a b ∏ j = c d g c d ( x i , y j ) \prod_{i=a}^{b}\prod_{j=c}^{d}gcd(x^i,y^j) i=a∏b​j=c∏d ...

  3. 2020牛客寒假算法基础集训营1

    2020牛客寒假算法基础集训营1 honoka和格点三角形 题目描述 输入描述 输出描述 示例 解题思路 代码 kotori和bangdream 题目描述 输入描述 输出描述 示例 解题思路 代码 u ...

  4. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II

    2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...

  5. 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解

    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II B 牛牛的DRB迷宫II 输入: 25 输出: 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB 题解 由图求方案数,我们 ...

  6. 2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I

    2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I 题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示 ...

  7. 2020牛客暑期多校训练营(第二场)

    2020牛客暑期多校训练营(第二场) 最烦英语题 文章目录 A All with Pairs B Boundary C Cover the Tree D Duration E Exclusive OR ...

  8. 2020牛客暑期多校训练营(第五场)——E Bogo Sort

    2020牛客暑期多校训练营(第五场)--E Bogo Sort 题目描述 Today Tonnnny the monkey learned a new algorithm called Bogo So ...

  9. 2020牛客暑期多校训练营(第六场)

    2020牛客暑期多校训练营(第六场) 额,睡了一下午,直接错过了比赛... 文章目录 A African Sort 题意: 题解: 代码: B Binary Vector C Combination ...

  10. 2020牛客暑期多校训练营(第四场)

    2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录 A Ancient Distance B Basic Gcd Problem 题目 代码: C Count New String D ...

最新文章

  1. step3 . day8数据结构之算法
  2. 零食嘴----美食领域的美丽说
  3. 文件断点续传原理与实现
  4. 游侠怎么设置java路径_Java获取当前路径的代码
  5. 你真的懂语音特征吗?
  6. mysql中datediff跨年的用法_Mysql 函数使用记录(一)——DATEDIFF、CONCAT
  7. git ssh密钥生成与配置
  8. AAMAS 2021 强化学习论文70篇(自整理)
  9. .NET方面的框架的整理和总结
  10. Peeking inside LuaJIT(窥探LuaJIT)
  11. sharepoint 服务器错误: http://go.microsoft.com/fwlink?LinkID=96177
  12. Nodejs手把手教程
  13. 举个栗子!Tableau 技巧(2):参数的应用
  14. PHP-SDK实现支付宝 付款码支付、刷脸支付
  15. w ndows无法完成格式化,windows无法完成格式化,小编教你解决windows无法完成格式化U盘...
  16. JAVA 实现《布谷鸟闯关-简单版》游戏
  17. 安卓的NFC开发,简单入门
  18. 计算机组成原理肖铁军第二版答案,计算机组成原理(肖铁军编)第二章习题及答案...
  19. java诺基亚nba,NBA“神器”大比拼 詹皇如三星邓肯似诺基亚
  20. python批量下载邮件附件

热门文章

  1. centos5.5 64位yum安装extmail
  2. api 文件长度_上传下载API
  3. java 既不是内部命令也不是外部命令的解决办法
  4. tensorflow-gpu_TensorFlow GPU单机多卡训练amp;reloadamp;predict
  5. linux服务器备份,Linux服务器上如何备份
  6. 【转】echarts x轴标签文字过多导致显示不全
  7. 【转载】C#反射 获取程序集信息和通过类名创建类实例(转载)
  8. 曾用一个肾买的iPhone4s,现在能换两个不锈钢脸盆
  9. sign签名算法一致算法-.net、java、golang
  10. css background背景拉伸