H. Bang Bang Keli Ba

题目大意

给定数组 \(a\) ,构造递增序列 \(b\) 和递减序列 \(c\) 且 \(a_i=b_i+c_i\) 。

题解

下面证明解的存在性,存在性证明后,解也就出来了。

对于序列 \(b,c\) ,一个递增,一个递减就意味这 \(b\) 的差分数组 \(b'\) 每个元素都大于等于 \(0\) ,\(c\) 的差分数组 \(c'\) 每个元素都小于等于 \(0\) 。对于 \(a\) 的差分数组 \(a'\) ,我们同样有 \(a'_i=b'_i+c'_i\) ,于是对于 \(a'_i\) ,我们把它拆成一个非负数和一个非整数的和即可,显然是存在无数多的解的。

同时也有其他很多解法,在此不介绍了。

AC代码

  1. #include <bits/stdc++.h>
  2. #define rep(i,a,b) for(int i=a;i<b;i++)
  3. using namespace std;
  4. using ll = long long;
  5. constexpr int N = 1e5+5, P = 1e9+7;
  6. int a[N], b[N], c[N];
  7. int main() {
  8. int n; cin>>n;
  9. rep(i,1,n+1)cin>>a[i];
  10. rep(i,1,n+1){
  11. int x = a[i] - a[i-1];
  12. if (x < 0) c[i] = x;
  13. else b[i] = x;
  14. b[i] += b[i-1];
  15. c[i] += c[i-1];
  16. }
  17. rep(i,1,n+1)cout<<b[i]<<" \n"[i==n];
  18. rep(i,1,n+1)cout<<c[i]<<" \n"[i==n];
  19. return 0;
  20. }

J. No Idea

题目大意

从 \(n\) 个数中选至少 \(2\) 个数,使这几个数的 \(\gcd\) 为 \(1\) ,问方案数。

题解

考虑容斥。定义函数 \(f(x)\) 为 \(\gcd\) 为 \(x\) 的方案数,那么答案就是 \(f(1)\) 。另外再定义一个函数 \(g(x)\) ,表示 \(\gcd\) 为 \(x\) 的倍数的方案数。根据定义,我们有

\[g(x)=f(x)+f(2x)+f(3x)+...
\]

移项得

\[f(x)=g(x)-f(2x)-f(3x)-...
\]

于是我们就可以想出这么一种解法:从大到小开始算,假设现在算到了 \(x\),我们先算出 \(g(x)\) ,那么

\(f(x)\) 就可以由上式解出。下面考虑如何计算 \(g(x)\) .

考虑这么一个组合问题:从 \(n\) 个不同的球里选不少于 \(2\) 个球的方案数。答案即为

\[\binom{n}{2}+\binom{n}{3}+...+\binom{n}{n}=2^n-\binom{n}{0}-\binom{n}{1}=2^n-1-n
\]

具体的实现方法为,用一个数组记录每个数字出现了多少次(因为数的大小最多只有 \(2\times 10^5\)),然后从 \(2\times 10^5\) 遍历到 \(1\) ,设当前遍历到了 \(i\) ,于是记录有多少个 \(i\) 的倍数,然后套上上述的组合问题即可得到 \(g(i)\) 。再减去其倍数的 \(f\) 函数值,即可得到 \(f(i)\) 。扫到 \(1\) 即可得到答案。

AC代码

  1. #include <bits/stdc++.h>
  2. #define rep(i,a,b) for(int i=a;i<b;i++)
  3. using namespace std;
  4. using ll = long long;
  5. constexpr int N = 2e5 + 5, P = 998244353;
  6. int v[N], f[N], pw[N];
  7. void precompute() {
  8. pw[0] = 1;
  9. rep(i,1,N)pw[i]=pw[i-1]*2%P;
  10. }
  11. int main() {
  12. precompute();
  13. int n; cin>>n;
  14. rep(i,0,n){
  15. int x; cin>>x;
  16. v[x] ++;
  17. }
  18. for(int i=N-1;i;i--){
  19. int cnt = 0;
  20. for (int j=i;j<N;j+=i)cnt+=v[j];
  21. f[i]=(pw[cnt]-1-cnt+P)%P;
  22. for (int j=i+i;j<N;j+=i)f[i]=(f[i]-f[j]+P)%P;
  23. }
  24. cout<<f[1];
  25. return 0;
  26. }

成都信息工程大学第八届校赛 H J 题解的更多相关文章

  1. CCCC 成都信息工程大学游记

    晚上刷智障25人本,刷到深夜四点,然后迷迷糊糊8点钟起床上车睡觉,然后就到了信息工程大学. 然后开始抢衣服,抢完衣服就开始拍照. 对了,这个学校看了下地图,好小呀,不过妹子好多呀. 然后就被老师带进机 ...

  2. PKU2018校赛 H题 Safe Upper Bound

    http://poj.openjudge.cn/practice/C18H 题目 算平均数用到公式\[\bar{x}=\frac{x_1+x_2+x_3+\cdots+x_n}{n}\] 但如果用in ...

  3. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  4. BNU校赛总决赛J 小白兔小灰兔 相交计算几何模板

    J 小白兔小灰兔 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld 题目描述 ...

  5. ACM学习历程—广东工业大学2016校赛决赛-网络赛E 积木积水(最值问题 || 动态规划)

    题目链接:http://gdutcode.sinaapp.com/problem.php?cid=1031&pid=4 这个题目自然会考虑到去讨论最长或者最短的板子. 笔上大概模拟一下的话,就 ...

  6. 2019湘潭校赛 H(dp)

    题目传送 dp是常规的:\(m^2\)的预处理:把位置存进vector然后\(O(1)\)算出想要的:WA点:要注意特意设置一下val[i][v.size()]=0,即全天都放鸽子则花费时间为0. # ...

  7. 广东工业大学2016校赛决赛-网络赛 1169 Problem A: Krito的讨伐 优先队列

    Problem A: Krito的讨伐 Description Krito终于干掉了99层的boss,来到了第100层.第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点 ...

  8. 南理第八届校赛同步赛-C count_prime//容斥原理

    大致思路就是先求出n的质因数假设是a1-an,然后在1-a的区间里面查找至少能整除{a1,a2...an}中一个元素的数有多少个,对1-b也做相同的处理,而找出来的元素肯定是与n不互质的,那么把区间的 ...

  9. 广州工业大学2016校赛 F 我是好人4 dfs+容斥

    Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...

  10. 北邮校赛 H. Black-white Tree (猜的)

    H. Black-white Tree 2017- BUPT Collegiate Programming Contest - sync 时间限制 1000 ms 内存限制 65536 KB 题目描述 ...

随机推荐

  1. 0基础搭建基于OpenAI的ChatGPT钉钉聊天机器人

    前言:以下文章来源于我去年写的个人公众号.最近chatgpt又开始流行,顺便把原文内容发到博客园上遛一遛. 注意事项和指引: 注册openai账号,需要有梯子进行访问,最好是欧美国家的IP,亚洲国家容 ...

  2. java数据库连接池笔记

    (课程笔记来源于跟着老师敲,老师是黑马程序b站白嫖课程~) #数据库连接池: 1.概念:就是一个容器(集合),存放数据连接的容器   当容器初始化好后,容器会被创建,容器中会申请一些连接对象,当用户来 ...

  3. 基于jib-maven-plugin快速构建微服务docker镜像

    一.说明 本文介绍基于 Maven 插件 jib-maven-plugin 实现快速构建 Spring Boot 程序镜像,并推送到远程仓库中,且 无需安装 Docker 环境 . Jib 是 Goo ...

  4. MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值

    MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值 EULAR2015; PresentID: OP0043 PREDICTORS OF SUSTAINED REMISSION O ...

  5. CSS3移动动画

    transition: .3s all ease; .tmall .tmall-tabbodys { width: 100%; position: absolute; left: 0px; trans ...

  6. PostgreSQL TOAST技术解析

    一.TOAST是什么? TOAST是"The Oversized-Attribute Storage Technique"(超尺寸字段存储技术)的缩写,主要用于存储一个大字段的值. ...

  7. “堆内存持续占用高 且 ygc回收效果不佳” 排查处理实践

    作者:京东零售 王江波 说明:部分素材来源于网络,数据分析全为真实数据. 一. 问题背景 自建的两套工具,运行一段时间后均出现 内存占用高触发报警,频繁young gc且效果不佳.曾经尝试多次解决,因 ...

  8. LeetCode-382 链表随机结点

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/linked-list-random-node 题目描述 给你一个单链表,随机选择链表的一个节点, ...

  9. MySQL联合索引的创建规则

    1.索引应该按照最常用于查询的列的顺序创建.这样可以最大程度地提高查询性能. 2.如果查询中包含的列与索引中的列顺序不一致,则无法使用索引.因此,如果您有多个查询,每个查询都包含不同的列,那么最好为每 ...

  10. Electron 应用图标修改

    1,首先给窗口添加图标: 1) 窗口图标是图片jpg或者png格式,如果没有图标去[https://www.aigei.com/icon/?wd=icon%E7%BD%91&bd_vid=10 ...