HDU 2841 Visible Trees(容斥原理+解释)

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024) 本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。 阅读详情

Visible Trees

 There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see.

If two trees and Sherlock are in one line, Farmer Sherlock can only see the tree nearest to him. 

Input
The first line contains one integer t, represents the number of test cases. Then there are multiple test cases. For each test case there is one line containing two integers m and n(1 ≤ m, n ≤ 100000)
Output
For each test case output one line represents the number of trees Farmer Sherlock can see.
Sample Input

2
1 1
2 3

Sample Output

1
5
题意:

大概就是有个m*n个点的矩形从(1,1)到(m,n),问从(0,0)出发直线看过去最多能看到几个点。

分析:

如果(0,0)−>(x,y)和(0,0)−>(x′,y′)(0,0)−>(x,y)和(0,0)−>(x′,y′)两个向量共线,即(0,0),(x,y),(x′,y′)(0,0),(x,y),(x′,y′)三点共线,那后面的那个点就看不到了。
如果三点共线,那么向量(x′,y′)(x′,y′)一定可以表示成(kx,ky)(kx,ky),因此对于一个数对x,y如果他们存在公因数,那么一定可以化简成最简,即互质的形式,那么这个互质的数对构成的向量应该是和原向量共线的,因此我们只能看到最前面那个互质的数对构成的点

因此题目转变成求区间[1,m],[1,n][1,m],[1,n]之间互质的对数

1)选取一个区间(为了优化选取小区间)比如说选取[1,n][1,n],枚举n里面的数i,然后对于每个数i我们看它在[1,m][1,m]区间内能找到多少互质的数

2)对于枚举的每个i,我们可以使用容斥原理。我们可以把i进行质因数分解,得到cnt个互不相同的素因子,我们设性质AjAj代表可以被i的素因子pjpj或pjpj的幂次整除
那么我们完全可以先求出|A1⋃A2⋃A3⋯⋃Acnt||A1⋃A2⋃A3⋯⋃Acnt|然后用总的个数m减这个数即对|A1⋃A2⋃A3⋯⋃Acnt¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯||A1⋃A2⋃A3⋯⋃Acnt¯|,就得到了|A¯¯¯¯1⋂A¯¯¯¯2⋯⋂A¯¯¯¯cnt||A¯1⋂A¯2⋯⋂A¯cnt|即为所求

|A1⋃A2⋃A3⋯⋃Aj|=∑|Aj|−∑|Aj⋂Ak|+⋯+(−1)cnt+1|A1⋂A2⋂A3⋯⋂Acnt||A1⋃A2⋃A3⋯⋃Aj|=∑|Aj|−∑|Aj⋂Ak|+⋯+(−1)cnt+1|A1⋂A2⋂A3⋯⋂Acnt|

|A1⋃A2⋃A3⋯⋃Acnt¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|=|A¯¯¯¯1⋂A¯¯¯¯2⋯⋂A¯¯¯¯cnt|=|S|−|A1⋃A2⋃A3⋯⋃Aj||A1⋃A2⋃A3⋯⋃Acnt¯|=|A¯1⋂A¯2⋯⋂A¯cnt|=|S|−|A1⋃A2⋃A3⋯⋃Aj|

code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+5;
int prime[maxn],cnt;
void divide(int n){//分解质因子
    cnt = 0;
    for(int i = 2; i * i <= n; i++){
        if(n % i == 0){
            prime[cnt++] = i;
            while(n % i == 0) n /= i;
        }
    }
    if(n != 1) prime[cnt++] = n;
}
int solve(int S){
    int ans = 0;
    for(int i = 1; i < (1<<cnt); i++){//共有2^cnt中可能组合因为cnt不大可以枚举
        int tmp = 1,num = 0;
        for(int j = 0; j < cnt; j++){
            if(i & (1<<j)){
                tmp *= prime[j];//得到质因子的组合
                num++;
            }
        }
        if(num & 1) ans += S / tmp;//得到m内包含这几个质因子的数有多少,可以有倍数每个质因子个数可以不一定,类似求阶乘中因子
        else ans -= S / tmp;
    }
    return S - ans;
}
int main(){
    int t,n,m;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&m,&n);
        if(n > m) swap(m,n);
        ll ans = 0;
        for(int i = 1; i <= n; i++){
            divide(i);
            ans += solve(m);
        }
        printf("%lld\n",ans);
    }
    return 0;
}
uniapp中使用canvas生成海报,并下载保存到手机相册 如下图,是在H5中,canvas生成后的效果,首先说明,H5不支持返回图片的临时路径,不能用于保存,APP端生成成功后,会返回图片的临时路径用来保存到相册。本地测试,用的网络图片,没有出现跨域的问题,APP端也正常显示。 完整代码:可以将整个代码复制到你得uniapp项目中直接运行。代码中做了详细的注册,关于API的用法,这里只标注的简单的提示,具体还是参考 官方链接uniapp-canvas吧 <template> <view class="demo"> <c. 阅读详情

相关推荐

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

HDU--2841(容斥原理)

2015-05-1420:54:08 题目:题意是一个人站在 (0,0),有一片 m×n 的树林,每个格点上有树,问这个人能看到多少棵树(后面的树会被前面的树挡住) 思路:注意到对于某一列 a,它有 (a,1) , (a,2) .... (a,n),注意到如果 gcd(a,k) = g (g!= 1),那么必定存在位置为 (a/g,k/g) 的数将其挡住。   那么问题就转化成了...

dingdi3021的博客 227

Keil C51里用printf打印数据,为啥总出乱码?手把手教你%bd、%hd、%ld的正确用法

本文深入解析Keil C51中printf打印数据出现乱码的根本原因,并提供格式符%bd、%hd、%ld的正确用法指南。通过详细的调试技巧和实战案例,帮助开发者解决串口输出问题,提升单片机开发效率。

weixin_26854829的博客 281

hdu 2841 Visible Trees(可见的树)

Problem - 2841 参考: 求1~n中与m互质的数的个数(容斥原理)_Stormjing的博客-优快云博客 hdu 2841 树围成矩阵,人在(0,0)点,最多可看到几棵树_maqinyao5566的博客-优快云博客 题目大意:农民在(0,0)的位置看一个m*n的矩阵,与农民在同一条直线的树只能看见第一棵。 分析:在同一条直线上的树的坐标都可以表示为(x*k,y*k)(x,y,k>0)所以(x,y)(x y互质)就是第一棵,问题就转化为求xy互质(1<=x<=n,1

weixin_53746961的博客 260

rockchip rk3566 android11 网口log报错: DMA engine initialization failed

问题描述:上电初始化前将网口插入,然后上电初始化网口能够正常使用,且能够找到PHY,ifconfig 查看能够有eth0 产生,网口正常使用且能够热插拔,但上电初始化时,不插入网口,就会报DMA engine initialization failed 错误,DMA 初始化的时候出错了。 分析:一般产生这个问题可以认为是GMAC 的工作时钟出问题了。先测量时钟引脚是否有时钟,时钟频率以及幅度等指标是否正常,主要确认以下几个方面: 1.IOMUX 出错,检查时钟脚寄存器值是否正确。 2.时钟方向以及配置

qq_48709036的博客 2万+

决策大模型与生成式大模型有何不同?一文拆解技术框架与落地路径

大模型技术正从内容生成走向复杂场景的智能决策。与生成式大模型拟合概率分布不同,决策大模型以序列决策为核心,融合强化学习机制,在动态环境中感知反馈、持续修正行动路径。其技术框架涵盖语义理解、规划推理与闭环决策,并通过世界模型进行低成本仿真推演,显著提升供应链调度、物流排程等场景的应对效率。实际落地时需结合传统优化算法与人工兜底,构建“语义先导+数值寻优”的分层架构,才能平衡精度与稳定性。这篇内容拆解决策大模型的技术组成、落地路径与常见误区,为企业智能化转型提供可参考的实践框架。

weixin_29057163的博客 188

hdu 2841(容斥原理+欧拉函数)

题意: 给出一个矩阵问在点(0,0)的人最多能看得到多少点。不难发现,gcd(x,y)=1的时候就是满足的点,其实可以容斥直接秒了,但是我写的时候觉得1e7有点虚,就先用欧拉函数算了正方形的地方,剩下的再用容斥写,确实跑的比裸的容斥要快,就是求在1~n内和 2 ~m互质的有多少个,正难则反,质因数分解后用容斥算出不互质的,减去即可,其实欧拉函数、莫比乌斯等函数都是用容斥证明出来的 所以答案就是ans=1+∑phi[i] i=(2~min(n,m))+(min(n,m)+1 ~max(m,n))的地方容斥 #

weixin_45539557的博客 328

Unity内存优化:从崩溃到流畅的终极指南

Emscripten 为 WebAssembly 设定的内存布局(Static、Stack 和 Heap)为开发者提供了一个清晰的内存管理框架。理解这些内存区域的特性和用途,有助于开发者在 WebGL 项目中更有效地管理内存,优化性能,减少内存使用峰值。在 Unity WebGL 中,Dynamic Memory 是 UnityHeap 的主要组成部分,负责存储游戏运行时所需的各种数据。Dynamic Memory 主要分为两类:Managed Memory 和 Native Memory。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 358

HDU - 2841 (Visible Trees)

题意:有一个农民站在(0,0)点,从(1,1)点到(m,n)点每个点上有棵树,问这个农民能看到多少棵树。树被挡就看不到; 分析:对于一个坐标(x,y),当 x 与 y 互质时农民就可以看到,否则不行,所以这题相当于求 ...

Joker & Liar的博客 351

【本地部署实战】LM Studio深度使用指南:从环境搭建到模型调优

LM Studio通过极简的操作流程和强大的生态兼容性,让本地部署大模型成为可能。随着M4芯片的发布和CUDA 12.0的优化,未来本地化AI开发将迎来新的爆发点。建议开发者关注官方Discord社区(https://discord.gg/lmstudio)获取最新模型支持信息。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 8749

标题:Stata17安装后遇到Java安装问题解决方法

设置JAVA_HOME环境变量:在Windows上,您需要设置JAVA_HOME环境变量以告诉Stata Java的安装路径。d. 输入变量名为JAVA_HOME,变量值为Java安装路径。注意:请确保您的Java版本与Stata兼容,并使用正确的Java安装路径。设置Stata的Java安装路径:现在,您需要告诉Stata Java的安装路径。如果您看到Java版本信息,则表示Java已成功安装。如果没有安装,请先下载并安装Java。确认Java已安装:首先,请确保您的计算机上已经正确安装了Java。

CyberSparkZ的博客 2867

Visible Trees 【容斥】

There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two trees and Sherlock are in one line, Farme

lzs_lazy 449

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU 2841 Visible Trees (容斥原理+素因子分解)

HDU 2841 Visible Trees (容斥原理+素因子分解):http://acm.hdu.edu.cn/showproblem.php?pid=2841 题面: Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2380

而濡木染 964

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU 2841:Visible Trees ← 容斥原理

在计数时,必须注意无一重复,无一遗漏。为了使重叠部分不被重复计算,人们研究出一种计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。

hnjzsyjyj的专栏 1257

IEM模型,地表粗糙度模拟

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

hdu2841 Visible Trees(容斥原理)

http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意:有一个n*m的格点矩形,除坐标轴上都有格点,求原点可以看见的格点个数。 思路:刚开始以为是法雷级数,咋一看不是正方形。这题和hdu1695有异曲同工之妙,主要说下自己理解的欧拉与容斥的区别: 计算集合之间互质的数对时,欧拉是1~n-1型,容斥是区间型。 打个比方,两个集合[1,b

Iguodala的博客 741

HDU 2841 Visible Trees (数论,容斥原理)

转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove 题目:N*M的格点上有树,从0,0点可以看到多少棵树。 发现如果A1/B1=A2/B2那么就有一棵树看不到,所以就是找出Ai/Bi有多少种。 再可以发现A/B中,如果A,B有大于1的公约数,则A=A'*D B=B'*D,那么

窝不是爱酱,喵~~~~ 2912

HDU - 2841 Visible Trees (思维 + 容斥原理)

HDU - 2841 Visible Trees (思维 + 容斥原理) There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two tre...

weixin_43179892的博客 223

HDU-2841-Visible Trees(容斥)

HDU-2841-Visible Trees 传送门 这道题是莫比乌斯反演~ 先开始是在容斥的知识点看到写的=-=后来卡了许久,还是在莫比乌斯反演上面作文章了。。 题目大意:农夫夏洛克站在坐标为(0,0)的位置,他去看一个每个网格点都种了树的m*n的网格。问可以看到多少棵树,其中如果有两颗以上的树与夏洛克在同一条直线上,那么夏洛克只能看到一棵树。 本题思路:这道题转换过来其实就是让我们求在区间[1...

qq_44624316的博客 235

HDU-2841 Visible Trees

题意:就是给定一个坐标(n,m),求(1,1)到(n,m)区间内x与y互质的坐标数。 思路:利用容斥从2到n,遍历与m互质的个数。 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 View Code 1 #include <iostream> 2 #include <cstdio> ...

bancaidun1539的博客 132

HDU 2841 Visible Trees (容斥原理好题)

Visible Trees  Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description There are many trees forming a m * n grid, the grid starts from

但求心安的博客 532

【HDU】2841 - Visible Trees(容斥原理)

点击打开题目 Visible Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2664    Accepted Submission(s): 1157 Problem Description

wyg1997 974

HDU2841 Visible Trees(容斥原理)

题意 这道题题意就是给出第一象限的n*m个点,求出站在原点可以看见多少个点 (1<=n,m<=1^5) 题解 这个题很仪仗队差不多,不过仪仗队是正方形。 这个是长方形。。。 这题其实就是求互质的数对的对数。 我们,一个一个的枚举i,然后就是求跟i互质的数的个数。 然后这个求跟i互质的数的个数可以用容斥原理求。(我居然才知道) 其实就是求不能整除i的所有质因子...

Aaronliu17008的博客 174

HDU 2841 Visible Trees (容斥原理)

There are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two trees and Sherlock are in one line, Farm...

weixin_43841060的博客 307

hdu 4135 Co-prime +hdu 2841 Visible Trees(容斥原理)

Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2263    Accepted Submission(s): 847 Problem Description Given a number N,

hahahaha 855

C - Visible Trees HDU - 2841 -莫比乌斯函数-容斥

C - Visible Trees HDU - 2841 思路 :被挡住的那些点(x , y)肯定是 x 与 y不互质。能够由其他坐标的倍数表示,所以就转化成了求那些点 x,y互质 也就是在 1 - m 1 - n 中找互质的对数,容斥 求一下即可 #include<bits/stdc++.h> using namespace std; #de...

weixin_34060299的博客 177

hdu2841Visible Trees 容斥原理

//给定一个n*m的方格,农场主从(0 , 0 )开始看 , 只能看到 //一条直线上的第一个格子,问农场主能看到几个格子 //对于任意的坐标(x,y) ,与其在同一条直线上的坐标有(k*x , k*y) //故而可以枚举所有的x,找其在(1,m)有多少个互质的数 #include #include #include #include using namespace std ;

ijbuhv的专栏 863
上一篇: Round Numbers POJ - 3252(数位dp)
下一篇: GCD Again HDU 1787(欧拉函数水题)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值