【GDOI2019模拟2019.2.23】签到

GDOI2019 游记 第四年省选了,但是没有这么紧张过,毕竟,已经是高中生了。 Day -? 从北京集训回来,在家睡了几天滚回学校。 跟dcx出了套模拟赛大受好评(雾)。 出完比赛又回家睡觉了。 Day -1 晚上紧张的不得了,跟妈妈去商场走了一会。听听歌,感觉放松了一点。冷鸟的歌声真好听。 很难想开,现在的政策扑朔迷离,要是今年省选挂了,一年的努力就白费了。 Day 0 今年省选在石门,离家很近。 傍晚到了酒店,见到... 阅读详情

题目:

在这里插入图片描述
在这里插入图片描述

题解:

设是a[i]的倍数的限制为a,是b的倍数限制为b,f=1的限制为c。

相当于求:
a|b|c
=a+b+c-a&b-a&c-b&c+a&b&c

发现我们求a并不好求,考虑把所有的a改成!a

=(n-!a)+b+c-(b-!a&b)-(c-!a&c)-(b&c)+(b&c-!a&b&c)
=n-!a+!a&b+!a&c-!a&b&c

由于a[i]都是质数,所以可以看做一个积性函数,f(pq)=[p∉a]f(p^q)=[p∉a]f(pq)=[p∈/​a],然后可以min_25筛。
!a&b同理。

!a&c也是差不多的。

!a&b&c的话,如果f(b)=0,要把b补成合法的,然后也是差不多的。

代码较繁琐。

Code:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
#define pp printf
#define ll long long
#define fo(i, x, y) for(int i = x, B = y; i <= B; i ++)
using namespace std;

const int N = 2e5 + 5;

ll n, b, a[N];
int a0, r[61];
int f[N * 10], bz[N * 10];
ll u[20]; int v[20], u0;
int p[N];
ll g[N], h[N], w[N], sp[N];
int i1[N], i2[N];
ll ans; int m, sqr;
int t[N], c[N];

void sieve(int n) {
	fo(i, 1, n) bz[i] = 0; p[0] = 0;
    fo(i, 2, n) {
        if(!bz[i]) {
			p[++ p[0]] = i;
			sp[p[0]] = sp[p[0] - 1] + !t[i];
		}
        for(int j = 1; i * p[j] <= n; j ++) {
            bz[i * p[j]] = 1;
            if(i % p[j] == 0) break;
        }
    }
}

ll dg(ll x, int y) {
    if(x <= 1 || p[y] > x) return 0;
    int k = x <= sqr ? i1[x] : i2[n / x];
    ll s = g[k] - sp[y - 1];
    for(int i = y; i <= p[0] && (ll) p[i] * p[i] <= x; i ++) {
        ll p1 = p[i], p2 = (ll) p[i] * p[i]; 
        if(!t[p1])
        	for(int e = 1; p2 <= x; e ++, p1 = p2, p2 *= p[i])
            	s = s + dg(x / p1, i + 1) + 1;
    }
    return s;
}

ll dd(ll x, int y) {
    if(x <= 1 || p[y] > x) return 0;
    int k = x <= sqr ? i1[x] : i2[n / x];
    ll s = h[k] - (r[1] ? sp[y - 1] : 0);
    for(int i = y; i <= p[0] && (ll) p[i] * p[i] <= x; i ++) {
        ll p1 = p[i], p2 = (ll) p[i] * p[i]; 
        if(!t[p1])
        	for(int e = 1; p2 <= x; e ++, p1 = p2, p2 *= p[i])
            	s = s + dd(x / p1, i + 1) * r[e] + r[e + 1];
    }
    return s;
}

void g1(ll n) {
	int m = 0;
    sqr = sqrt(n); sieve(sqr);
    for(ll i = 1, j; i <= n; i = j + 1) {
        j = n / (n / i); w[++ m] = n / i;
        if(w[m] <= sqr) i1[w[m]] = m; else i2[n / w[m]] = m;
        g[m] = w[m] - 1;
    }
    fo(j, 1, p[0]) for(int i = 1; i <= m && (ll) p[j] * p[j] <= w[i]; i ++) {
        int k = (w[i] / p[j] <= sqr) ? i1[w[i] / p[j]] : i2[n / (w[i] / p[j])];
        g[i] = g[i] - (g[k] - (j - 1));
    }
    int x = a0;
    fo(i, 1, m) {
		while(a[x] > w[i] && x > 0) x --;
		g[i] -= x;
		if(r[1]) h[i] = g[i]; else h[i] = 0;
	}
	ans += n - (dg(n, 1) + 1);
	ans += dd(n, 1) + 1;
}

int ky = 1;

void g3(ll n) {
	int m = 0;
    sqr = sqrt(n); sieve(sqr);
    for(ll i = 1, j; i <= n; i = j + 1) {
        j = n / (n / i); w[++ m] = n / i;
        if(w[m] <= sqr) i1[w[m]] = m; else i2[n / w[m]] = m;
        g[m] = w[m] - 1;
    }
    fo(j, 1, p[0]) for(int i = 1; i <= m && (ll) p[j] * p[j] <= w[i]; i ++) {
        int k = (w[i] / p[j] <= sqr) ? i1[w[i] / p[j]] : i2[n / (w[i] / p[j])];
        g[i] = g[i] - (g[k] - (j - 1));
    }
    int x = a0;
    fo(i, 1, m) {
		while(a[x] > w[i] && x > 0) x --;
		g[i] -= x;
	}
	ans += dg(n, 1) + 1;
}

void sieve2(int n) {
	fo(i, 1, n) bz[i] = 0; p[0] = 0;
    fo(i, 2, n) {
        if(!bz[i]) {
			p[++ p[0]] = i;
			sp[p[0]] = sp[p[0] - 1] + (c[i] ? r[1 + c[i]] : (t[i] ? 0 : r[1]));
		}
        for(int j = 1; i * p[j] <= n; j ++) {
            bz[i * p[j]] = 1;
            if(i % p[j] == 0) break;
        }
    }
}

ll dg2(ll x, int y) {
    if(x <= 1 || p[y] > x) return 0;
    int k = x <= sqr ? i1[x] : i2[n / x];
    ll s = g[k] - sp[y - 1];
    for(int i = y; i <= p[0] && (ll) p[i] * p[i] <= x; i ++) {
    	if(t[p[i]]) continue;
        ll p1 = p[i], p2 = (ll) p[i] * p[i];
        int e = 1; if(c[p1]) e += c[p1];
        for(; p2 <= x; e ++, p1 = p2, p2 *= p[i])
            s = s + (ll) dg2(x / p1, i + 1) * r[e] + r[e + 1];
    }
    return s;
}

void g2(ll n) {
	int m = 0;
    sqr = sqrt(n); sieve2(sqr);
    for(ll i = 1, j; i <= n; i = j + 1) {
        j = n / (n / i); w[++ m] = n / i;
        if(w[m] <= sqr) i1[w[m]] = m; else i2[n / w[m]] = m;
        g[m] = w[m] - 1;
    }
    fo(j, 1, p[0]) for(int i = 1; i <= m && (ll) p[j] * p[j] <= w[i]; i ++) {
        int k = (w[i] / p[j] <= sqr) ? i1[w[i] / p[j]] : i2[n / (w[i] / p[j])];
        g[i] = (g[i] - g[k] + (j - 1));
    }
    int x = a0;
    fo(i, 1, m) {
		while(a[x] > w[i] && x > 0) x --;
		if(!r[1]) g[i] = 0;
		fo(j, 1, u0) if(u[j] <= w[i])
			g[i] += r[v[j] + 1] - r[1];
		g[i] -= x * r[1];
	}
    ans -= dg2(n, 1) + 1;
}

ll n0;

int main() {
	freopen("qiandao.in", "r", stdin);
	freopen("qiandao.out", "w", stdout);
	scanf("%lld %d %lld", &n, &a0, &b);
	fo(i, 1, a0) scanf("%lld", &a[i]);
	fo(i, 1, 60) scanf("%d", &r[i]);
	sort(a + 1, a + a0 + 1); a0 = unique(a + 1, a + a0 + 1) - (a + 1);
	fo(i, 1, a0) if(a[i] <= 1e5) t[a[i]] = 1;
	g1(n); n0 = n;
	fo(i, 1, a0) if(b % a[i] == 0) ky = 0;
	if(ky && n >= b) {
		n /= b;
		g3(n);
		n = n0;
		{
			ll x = b;
			fo(i, 2, 2e5) if(x % i == 0) {
				u[++ u0] = i;
				while(x % i == 0) x /= i, v[u0] ++;
			}
			if(x > 1) u[++ u0] = x, v[u0] = 1;
		}
		fo(i, 1, u0) if(!r[v[i]]) {
			while(!r[v[i]] && b <= n) v[i] ++, b *= u[i];
		}
		fo(i, 1, u0) if(u[i] <= 1e5) c[u[i]] = v[i];
		if(n >= b) {
			n /= b, g2(n);
		}
	}
	pp("%lld", n0 - ans);
}
【python】模拟登录并签到 在运行脚本时需要下载一个chromedriver.exe,下载地址为(注意根据自己的谷歌浏览器的版本来下载):http://npm.taobao.org/mirrors/chromedriver/小白学了python后,天天逛BBS,看着BBS签到,就依葫芦画起瓢来了,试着写了个自动签到的脚本,大神勿喷。首先还是下载它selenium,在命令行安装它。1、网页元素定位很重要,定位错了,就跑不起了。博主,按下面这篇文章方法进行定位。脚本运行成功后,没有退出,下次再优化吧。2、时间延时要把握好。 阅读详情

相关推荐

【GDOI2016模拟4.5】刺客 题解

【GDOI2016模拟4.5】刺客 Description SillyHook是一个著名的刺客,虽然他比较Silly,但他精通打洞,善于深入敌方内部刺杀敌人。 现在SillyHook接到了若干个消灭敌人的任务,每次任务中他都会装备一把耐久度为m 的钩刃,并打洞潜入敌方内部。有n 个待消灭的敌人SillyHook消灭第i 个敌人需要消耗钩刃Ai 点耐久度(如果有其他武器则可以选择用其他武器消灭这个敌人,且不消耗钩刃耐久度),之后便得到他的武器,可以用来消灭任意Bi 个敌人。但SillyHook太Silly了

CMC_YXY的博客 413

GDOI2019赛前复习 & 赛后总结

去年的flag 赛前复习 回文树 感觉自己并没有学过一样… 第一次知道回文树的根应该建成一个环。 无论是1做奇数根还是0做奇数根都没有关系。 记得除了偶数根,不应该有其他fail等于奇数根就行。 记得先求新点的fail再给last的转移赋值,这样不需要特判。 1做奇数根: struct pam{ int c[N][26],fail[N],len[N]; char s[N]; int sz; ...

一位蒟蒻的小博客 796

2019年省选day1

2019 全国青少年信息学奥林匹克竞赛

【GDOI2019模拟2019.4.13】数据结构

Description: 1<=n,m<=1e5 时限:-O2,1s 空限:128MB 题解: 把询问区间的左端点视为x,右端点视为y。 转换模型后不难发现就是对二维平面上一些东西做一个东西。 设s表示一段时间内这个区间和的增量,v表示和的增量的历史版本最小值(v>=0)。 这个玩意显然是可以合并的,即有两个相邻的时间段的s和v,就可以合并出新的。 那么用二维线段树去维护这个吗...

Cold_Chair的博客 466

VLA、世界模型与端到端在智驾中的本质关系与工程落地

世界模型并非3D重建,而是对环境状态转移函数的可微分建模;VLA不是视觉+语言+动作的简单拼接,核心在于跨模态语义对齐。二者共同支撑具身智能系统实现从感知到行动的闭环推演,其技术价值体现在长尾场景泛化能力提升与决策延迟降低。在自动驾驶领域,真实量产方案均采用VLA架构作为多模态感知基础,嵌入轻量级世界模型以支持反事实轨迹推演,并通过WA硬件封装保障实时性,最终由端到端控制层完成像素到扭矩的语义贯通。这种混合架构已成L2+/L3智驾系统的工程共识。

weixin_34163553的博客 365

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置)

本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。

weixin_30642561的博客 347

【GDOI2019Day1模拟2019.4.28】盗梦空间(虚树+树形dp+树链剖分)

Description: 1<=n,sum(k)<=1e5 题解: 首先建出虚树。 然后考虑把所有的点分为三类: 1.虚树上的点 2.虚树上边(不包括虚树点)的点和伸出去的子树 3.不属于1、2类的点 对于虚树上的点,使用树形dp求出每一个点所有子树中第1长的和第2长的。 不属于1、2类点,可以对每个点所有伸出的子树预处理深度排序后的结果,或者用multiset动态维护 最难的在于第...

Cold_Chair的博客 785

扫码器USB键盘报告描述符数据格式解析

Byte0用于判断Shift是否按下,当按下时Byte0的Bit1会置1,即0x02,若未按下,Bit为0,即0x00。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>未按下Shift。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>按下Shift。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出A。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出a。

m0_65548585的博客 1142

jzoj6027. 【GDOI2019模拟2019.2.23】签到

题目描述 Description Input Output Sample Input 20 1 4 3 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Sample Output 9 Data Cons...

某司机的黑车 394

手把手教你用NE555+LM324搭建红外倒车雷达(附Multisim仿真文件)

本文详细介绍了如何使用NE555定时器和LM324运算放大器搭建一个红外倒车雷达系统。内容涵盖从核心原理拆解、模块电路设计(包括红外发射、接收放大、检波与电压比较)到实战焊接调试的全过程,并提供了Multisim仿真验证思路,帮助电子爱好者与初学者将模拟电路理论转化为可工作的实用项目。

echo99的专栏 676

扫地机器人自动回充技术大揭秘:红外、蓝牙、雷达哪种更适合你家?

本文深入解析扫地机器人自动回充技术的三种主流方案:红外、蓝牙和雷达/LiDAR,详细比较它们的原理、优缺点及适用场景。红外技术成本低但易受干扰,蓝牙穿透性好但精度随距离降低,雷达精度最高适合复杂环境。根据户型大小和家居环境,提供选购建议,帮助用户选择最适合自己家庭的自动回充方案。

weixin_29070721的博客 503

【JZOJ 6028】【GDOI2019模拟2019.2.23】字符串

Description Solution 先考虑对一个串的子串求不同子串的个数怎么做, 先对询问离线, 考虑不断右移右端点,同时维护左端点为1~i的答案, 显然对于一种相同的子串,只计算最右边的, 在SAM中,一个节点代表了一些子串,而这些子串Right的最大值,也就是Fail树上这个点的所有儿子的Right最大值, 所以每次加入一个点,相当于更改一条链上点的Right最大值, 我发现这个就是L...

459

30、电力生产系统中的效率测量

本文探讨了如何使用数据包络分析(DEA)模型来评估电力生产系统的效率。文章详细介绍了电力生产系统的三个主要环节——发电、输电和配电,并通过多种DEA模型,如输入导向模型、输出导向模型以及基于松弛的SBM模型,展示了效率测量的方法和技术。同时,结合实际案例分析,说明了DEA模型在识别效率低下环节及提出改进建议方面的应用价值。

rgv2345678的博客 116

【GDOI2019模拟2019.2.23】字符串

Description: 题解: 首先思考一个经典的问题怎么做? 就是求一个串的子串的不同子串数,这玩意儿冬令营上《字符串前沿算法》讲过。 考虑在把整个串的SAM建出来,注意建的时候记录每个结尾点。 然后一个一个把结尾点激活,之所以要先建出来的原因是树的形态就稳固了。 假设要查询[l…r]的不同子串数,先把r以前的结尾点激活。 如果知道每个点的rmax,这个点的深度代表的是[x…y],那么就给...

Cold_Chair的博客 426

第8章-认知工程:构建Agent的认知飞轮与自进化《万物皆映射》

认知架构(Cognitive Architecture)是一个系统组织和运行其认知过程的整体设计。对人类而言,认知架构是大脑的结构和功能组织方式;对 AI Agent 而言,认知架构是它处理信息、做出决策、学习经验的系统设计。固定映射 vs 进化映射维度固定映射 Agent进化映射 Agent知识静态(训练时确定)动态(持续积累)策略固定(设计时确定)自适应(经验驱动)工具预定义自主发现/创建错误处理硬编码规则从错误中学习能力边界固定持续扩展在认知工程中,技能。

AI天才研究院 105

使用 MATLAB/Simulink 对风光互补发电系统进行建模

随着全球对清洁能源的需求日益增长,风力发电和光伏发电作为两种主要的可再生能源形式,在电力供应中的占比越来越高。然而,由于风电和光伏的间歇性和不确定性,单独依赖其中任何一种能源都会给电网带来挑战。因此,风光互补发电系统(Wind-PV Hybrid System)应运而生,通过合理配置风力发电机和光伏电池板的数量,可以有效提高系统的稳定性和可靠性。此外,为了确保整个电力系统的安全稳定运行,还需要研究风光互补发电系统与主网之间的协调调度策略。本教程将详细介绍如何使用。

amy_mhd的博客 118

【JZOJ 6026】【GDOI2019模拟2019.2.23】飞行棋

Description Solution 原题只要保留6位小数, 记录每个人走j步到达终点的概率,当j足够大时就可以满足进精度要求, 证明一下为什么这样可行: 我们走很多步依旧没有到达终点的概率很小,而走这么多步还依旧赢的概率更小,所以对答案的影响很小, Code #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;io...

492

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JZOJ 6080】【GDOI2019模拟2019.3.23】IOer

Description m种物品,第i种物品的权值为(ui+v)(ui+v)(ui+v),每种物品有无数个,一种取法的代价为所取物品权值乘积, 问取n个物品的所有不同取法的代价和, 两个取法不同当且仅当存在一种物品在两个方案中取得数量不同, n≤1018,m≤2∗105,mo=109+7n\leq10^{18},m\leq 2*10^5,mo=10^9+7n≤1018,m≤2∗105,mo=109...

1486

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

GDOI2016赛前模拟4.23总结

这次比赛炸了,炸了,炸了。 不爽,303机房的c++和键盘。 这可是GDOI赛前最后一场模拟赛了,竟然炸了?! 发现要到303做题,各种不情愿。 c++编译器乱搞了15min,加上我本来就晚到了,结果心态就变得非常糟糕。8:30看题,T1…… 什么?!好像要Floyd,但500的3次方不会炸吗? 再说,带点权的还要拆点(蒟蒻呀!) 算了,先去看T2 !@#¥%…… 根本没思路,懵逼

时光真疯狂, 我一路执迷于匆忙. 727

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JZOJ 6079】【GDOI2019模拟2019.3.23】染色问题

Description m≤n+5,k,n≤105m\leq n+5,k,n\leq10^5m≤n+5,k,n≤105 Solution 1 这个图只有5条返祖边所以才能做, 先把所有有返祖边的点拿出来,(姑且叫做返祖点) 自然地,考虑容斥,枚举一条返祖边的两个点是否同色,以及返祖边点之间的染色情况, 枚举后DP计算,设fx,if_{x,i}fx,i​表示点x染颜色i时的方案数,注意颜色0表示其...

670

GDOI 2025 游记

NGOI挂到队线了,感觉NGOI省队概率已经极小了,能否冲个A5?

pyx寄居地 859

[JZOJ6028]【GDOI2019模拟2019.2.23】字符串【SAM】【LCT】【线段树】

Description Solution 不妨先考虑subtask 2 即给出一个字符串S,动态询问[l,r]内本质不同的子串数。 有一个非常套路的做法(来自laofu的2018集训队论文): 考虑离线。先将这个字符串S的SAM建出来 对于SAM上的一个节点,贡献就是它在[l…r]出现的最后一次被l所截的长度。 我们将所有询问按右端点排序,从左到右扫r。 那么每次相当于在parent树上将一个...

Never give in. 490

JZOJ6026. 【GDOI2019模拟2019.2.23】飞行棋

Description Data Constraint Solution 由于数据的特殊性以及精度的局限性,我们可以考虑暴力枚举轮数,然后计算答案,这样的轮数是在可以接受的范围内的。 设状态f[i][j]表示第i轮,从j出发到达终点的概率,这个十分好转移O(6n)。 对于第i轮,棋子x获胜的概率,是前i-1轮没有结束游戏,且前x-1个棋子也没有到达终点时,自己到达了终点。 设b[i]表示棋子...

Deep_Thinking的博客 475

[JZOJ6081]【GDOI2019模拟2019.3.23】Deadline【最小割】

Description 有n个0/1类型的任务,现在有m天来完成这些任务。 每个任务可以在若干天被完成,这些完成关系可以用数对(u,v)来表示,意思是任务u能在第v天被完成,但每天只能完成一种任务。 在做这些任务之前,需要先确定每一天完成0类还是1类任务,显然这样的确定方案有2m2^m2m种,然后你会在满足要求的情况下尽可能的多做。 现在问对于所有确定的限制方案,做的任务数的最小值。 n,m≤20...

Never give in. 381

GDOI2016第一次模拟总结 4.21 ~ 4.23

GDOI2016第一次模拟总结 4.21 ~ 4.23

YxuanwKeith的博客 1000

JZOJ6079. 【GDOI2019模拟2019.3.23】染色问题

Description n<=100000,m<=n+5,k<=100000 Solution 由于这题有m<=n+5这个极为特殊的条件,又因为每个端点的影响只跟相邻的点有关,所以我们可以考虑缩小图的规模。 我们假设每条边有两个边权,一个是两端点相同颜色时的权s,初始为1,一个是两端点不同时的权t,初始为0,那么一个图的答案就是每条边的边权用对应的权相乘. 如果一个点的...

Deep_Thinking的博客 475
上一篇: CodeForces 1110 F Nearest Leaf
下一篇: 【GDOI2019模拟2019.2.23】字符串
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值