成都信息工程大学第八届校赛 H J 题解
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代码
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
using namespace std;
using ll = long long;
constexpr int N = 1e5+5, P = 1e9+7;
int a[N], b[N], c[N];
int main() {
int n; cin>>n;
rep(i,1,n+1)cin>>a[i];
rep(i,1,n+1){
int x = a[i] - a[i-1];
if (x < 0) c[i] = x;
else b[i] = x;
b[i] += b[i-1];
c[i] += c[i-1];
}
rep(i,1,n+1)cout<<b[i]<<" \n"[i==n];
rep(i,1,n+1)cout<<c[i]<<" \n"[i==n];
return 0;
}
J. No Idea
题目大意
从 \(n\) 个数中选至少 \(2\) 个数,使这几个数的 \(\gcd\) 为 \(1\) ,问方案数。
题解
考虑容斥。定义函数 \(f(x)\) 为 \(\gcd\) 为 \(x\) 的方案数,那么答案就是 \(f(1)\) 。另外再定义一个函数 \(g(x)\) ,表示 \(\gcd\) 为 \(x\) 的倍数的方案数。根据定义,我们有
\]
移项得
\]
于是我们就可以想出这么一种解法:从大到小开始算,假设现在算到了 \(x\),我们先算出 \(g(x)\) ,那么
\(f(x)\) 就可以由上式解出。下面考虑如何计算 \(g(x)\) .
考虑这么一个组合问题:从 \(n\) 个不同的球里选不少于 \(2\) 个球的方案数。答案即为
\]
具体的实现方法为,用一个数组记录每个数字出现了多少次(因为数的大小最多只有 \(2\times 10^5\)),然后从 \(2\times 10^5\) 遍历到 \(1\) ,设当前遍历到了 \(i\) ,于是记录有多少个 \(i\) 的倍数,然后套上上述的组合问题即可得到 \(g(i)\) 。再减去其倍数的 \(f\) 函数值,即可得到 \(f(i)\) 。扫到 \(1\) 即可得到答案。
AC代码
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
using namespace std;
using ll = long long;
constexpr int N = 2e5 + 5, P = 998244353;
int v[N], f[N], pw[N];
void precompute() {
pw[0] = 1;
rep(i,1,N)pw[i]=pw[i-1]*2%P;
}
int main() {
precompute();
int n; cin>>n;
rep(i,0,n){
int x; cin>>x;
v[x] ++;
}
for(int i=N-1;i;i--){
int cnt = 0;
for (int j=i;j<N;j+=i)cnt+=v[j];
f[i]=(pw[cnt]-1-cnt+P)%P;
for (int j=i+i;j<N;j+=i)f[i]=(f[i]-f[j]+P)%P;
}
cout<<f[1];
return 0;
}
成都信息工程大学第八届校赛 H J 题解的更多相关文章
- CCCC 成都信息工程大学游记
晚上刷智障25人本,刷到深夜四点,然后迷迷糊糊8点钟起床上车睡觉,然后就到了信息工程大学. 然后开始抢衣服,抢完衣服就开始拍照. 对了,这个学校看了下地图,好小呀,不过妹子好多呀. 然后就被老师带进机 ...
- 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 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- BNU校赛总决赛J 小白兔小灰兔 相交计算几何模板
J 小白兔小灰兔 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld 题目描述 ...
- ACM学习历程—广东工业大学2016校赛决赛-网络赛E 积木积水(最值问题 || 动态规划)
题目链接:http://gdutcode.sinaapp.com/problem.php?cid=1031&pid=4 这个题目自然会考虑到去讨论最长或者最短的板子. 笔上大概模拟一下的话,就 ...
- 2019湘潭校赛 H(dp)
题目传送 dp是常规的:\(m^2\)的预处理:把位置存进vector然后\(O(1)\)算出想要的:WA点:要注意特意设置一下val[i][v.size()]=0,即全天都放鸽子则花费时间为0. # ...
- 广东工业大学2016校赛决赛-网络赛 1169 Problem A: Krito的讨伐 优先队列
Problem A: Krito的讨伐 Description Krito终于干掉了99层的boss,来到了第100层.第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点 ...
- 南理第八届校赛同步赛-C count_prime//容斥原理
大致思路就是先求出n的质因数假设是a1-an,然后在1-a的区间里面查找至少能整除{a1,a2...an}中一个元素的数有多少个,对1-b也做相同的处理,而找出来的元素肯定是与n不互质的,那么把区间的 ...
- 广州工业大学2016校赛 F 我是好人4 dfs+容斥
Problem F: 我是好人4 Description 众所周知,我是好人!所以不会出太难的题,题意很简单 给你n个数,问你1000000000(含1e9)以内有多少个正整数不是这n个数任意一个的倍 ...
- 北邮校赛 H. Black-white Tree (猜的)
H. Black-white Tree 2017- BUPT Collegiate Programming Contest - sync 时间限制 1000 ms 内存限制 65536 KB 题目描述 ...
随机推荐
- 五、pycharm的安装与基本使用
目录 一.pycharm的安装 1.软件介绍 2.正版安装 1.下载软件 2.安装软件 3.其他方法安装(需要先下载相关资源) ①无限试用法 ②傻瓜式激活法 ③淘宝购买 二.pycharm软件的使用 ...
- 822. 走方格(acwing)
题目: 先讲变量 n:右下角的x值 m:右下角的y值 ans:答案(有几种可能) a数组:用来存储向下和向右的动作. x:所在的位置的x值 y:所在位置的y值 x1:下一步可以走到位置的x值 y1:下 ...
- 解决Linux上tomcat解析war包中文文件乱码
解决Linux上tomcat解析war包中文文件乱码 第一步 编辑tomcat/conf server.xml vim /usr/local/src/tomcat/conf/server.xml us ...
- 基于FLink实现的实时安全检测(一段时间内连续登录失败20次后,下一次登录成功场景)
研发背景 公司安全部目前针对内部系统的网络访问日志的安全审计,大部分都是T+1时效,每日当天,启动Python编写的定时任务,完成昨日的日志审计和检测,定时任务运行完成后,统一进行企业微信告警推送.这 ...
- JZOJ 4289.Mancity
\(Mancity\) \(Description\) \(Input\) \(Output\) \(Sample Input\) 8 3 6 1 2 1 1 3 2 4 2 5 1 6 1 6 2 ...
- 【译】.NET 7 中的性能改进(五)
原文 | Stephen Toub 翻译 | 郑子铭 循环提升和克隆 (Loop Hoisting and Cloning) 我们之前看到PGO是如何与循环提升和克隆互动的,这些优化也有其他改进. 从 ...
- 四川九联代工M301H hi3798 mv300 mt7668魔百和 强刷和TTL线刷(救砖)经验分享
以下都是本次自己操作后的一些经验,不是技术分享,也是看来很多水教程后总结的精华. 四川九联代工M301H hi3798 mv300 mt7668魔百和 一.强刷 1.强刷的教程网上有很多,自己百度. ...
- Linux:find 指令的选项 +n、-n、n
描述 find 指令查找文件时可以通过时间来锁定或缩小搜查范围.其中需要利用到文件的三个时间?:Access Time(atime).Modify Time(mtime) 和 Change Time( ...
- 空间数据库中ST_开头的来由
1. 引言 在使用空间数据库(如,PostGIS)时,我们经常使用的空间函数(如,ST_Distance(geometry, geometry).ST_Area(geometry)等)都是以ST_开头 ...
- PostgreSQL 绑定变量浅析
今天我们要探讨的是 custom执行计划和通用执行计划.这一技术在 Oracle中被称为绑定变量窥视.但 Postgresql中并没有这样的定义,更严格地说,Postgresql叫做custom执行计 ...