HDU--2841(容斥原理)

2015-05-14 20:54:08

题目:题意是一个人站在 (0,0),有一片 m×n 的树林,每个格点上有树,问这个人能看到多少棵树(后面的树会被前面的树挡住)

思路:注意到对于某一列 a,它有 (a,1) , (a,2) .... (a,n),注意到如果 gcd(a,k) = g (g!= 1),那么必定存在位置为 (a/g,k/g) 的数将其挡住。

  那么问题就转化成了,对于每一列 a,求 n 以内与 a 互质的数的个数。那么就是转化成和 hdu 1796 一样的经典容斥问题了。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

#define getmid(l,r) ((l) + ((r) - (l)) / 2)
#define MP(a,b) make_pair(a,b)
#define PB(a) push_back(a)

typedef long long ll;
typedef pair<int,int> pii;
const double eps = 1e-8;
const int INF = (1 << 30) - 1;
const int MAXN = 100;

int n,m;
int fact[MAXN],dcnt;
ll res;

void Dfs(int p,int v,int cnt){
    if(p > dcnt){
        if(cnt == 0) return;
        //printf("v,cnt : %d %d\n",v,cnt);
        if(cnt & 1) res += n / v;
        else res -= n / v;
        return;
    }
    Dfs(p + 1,v,cnt);
    Dfs(p + 1,v * fact[p],cnt + 1);
}

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&m,&n);
        ll ans = 0;
        for(int i = 1; i <= m; ++i){
            dcnt = 0;
            int t = i;
            for(int j = 2; j * j <= i; ++j) if(t % j == 0){
                while(t % j == 0) t /= j;
                fact[++dcnt] = j;
            }
            if(t != 1) fact[++dcnt] = t;
            res = 0;
            Dfs(1,1,0);
            ans += n - res;
        }
        printf("%I64d\n",ans);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/naturepengchen/articles/4504396.html

GPU 资源池化云平台解决方案​ 定义与特点Kubernetes是一个开源的容器编排和管理平台,通过提供自动化和声明式的方式来部署、扩展、维护和运行应用程序。它支持跨多个主机和集群部署容器,确保应用程序的高可用性和可扩展性。Kubernetes提供了丰富的功能和插件,允许用户根据自己的需求进行定制和扩展。架构与组件控制平面(Control Plane):负责集群的决策(如调度)和集群状态的检测与响应。 阅读详情

相关推荐

别再对着数据手册发愁了!用HFSS 2023 R2搞定ESP32-C3板载天线的阻抗匹配

本文详细介绍了如何利用HFSS 2023 R2进行ESP32-C3板载天线的阻抗匹配优化,解决实际PCB设计中常见的性能偏差问题。通过智能模型导入、科学参数扫描和量化优化流程,显著提升天线性能,适用于WIFI和蓝牙应用场景。

weixin_42523543的博客 447

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

Cocos Creator 3D音频定位实战:从原理到沉浸感实现

3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案,

weixin_30972263的博客 291

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

五子棋AI算法第一篇-我对谷歌Alphago的看法

最近Google宣布他们的围棋AI以5:0的战绩打败欧洲围棋三冠王。我一直对人工智能比较感兴趣,正好趁年前空闲的几天用JS写了一个五子棋的AI。其实很久以前就用自创的算法写过一个JAVA版的五子棋AI,不过棋力很不理想。这次用的是JS写的,所以无论任何平台上只要能打开网页的都可以玩。google爆出这个新闻之后,很多人觉得这是不是意味着电脑智商已经在人类之上了,围棋已经没有意义了之类的。甚至觉得这是

言川的博客 2万+

STM32F4与LAN8720硬件连接避坑指南:从原理图到RMII信号完整性的实战解析

本文深入解析了STM32F4与LAN8720以太网连接的硬件设计要点与常见陷阱。重点剖析了电源上电时序、复位电路设计、RMII接口配置等关键环节,并提供了从原理图设计到PCB布局、信号完整性调试的完整实战指南,帮助硬件工程师规避设计风险,确保以太网通信的长期稳定运行。

weixin_29189003的博客 211

HDU-2841-Visible Trees(容斥)

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

qq_44624316的博客 235

Pointnet++环境配置+复现

深度学习点云经典网络Pointnet++

weixin_58663121的博客 8075

HDU - 2841 (Visible Trees)

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

Joker & Liar的博客 351

Vue+OpenLayers7入门到实战目录,OpenLayers7中文文档,OpenLayers7中文手册,OpenLayers7中文教程,OpenLayers7文档pdf

本篇作为《Vue+OpenLayers7入门到实战》所有文章的二合一汇总目录,方便查找。本专栏源码是由OpenLayers7.x版本结合Vue框架编写。本专栏从Vue搭建脚手架到如何引入OpenLayers7依赖的每一步详细新手教程,再到通过各种入门案例和综合性的实战案例,带领大家快速上手Vue+OpenLayers7开发。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 3971

如何修改网页中的文本内容改成自己希望的数值?

本篇文章主要讲解,通过浏览器命令和浏览器自带的F12开发者工具,进行修改网页内容的方法教程 日期:2021年12月5日 作者:任聪聪 一、通过F12开发者工具进行修改 进入方式汇总: 1.右击鼠标,显示菜单找到审查 2.通过快捷键F12进入,笔记本需要先关闭fnlk功能键。 开发者工具介绍 说明: 1.表示选择元素,点击后可以选择文本的元素所在地 2.表示显示方式,手机还是电脑 3.表示div元素,点击后可以展开,对div内的html和文本进行编辑。 双击文本,即可进行修改成自己想要的,但是刷新后.

任聪聪的博客 2万+

hdu 2841(容斥原理)

/*     hdu 2841     题意大概是     你站在(0,0)点     给你一个以(11,1)为顶点n*m的方格     每个交点处都有一棵树     问你能看到几棵树     假设有两棵树     他们的坐标分别为(x1,y1)(x2,y2)(x1>x2 y1>y2)     若(0,0)->(x1,y1)和(0,0)->(x2,y2)两个向量平行     那

a892573486的博客 309

lammps案例:Cu三点弯曲模拟

大家好,我是小马老师。 本文分享一个Cu弯曲的案例。 本案例参考三点弯曲实验,三点弯曲试验是将试样放在弯曲装置上,在试样上加载进行弯曲试验,直到达到规定的弯曲程度或发生断裂。 模拟原理是在z方向固定两侧端点,在x和y方向不固定,模拟左右两个支撑点,中间压块向下运动实现弯曲。 初始结构: 运行结果为: 模拟的重点是使用fix setforce命令压住左右两端,使其不能沿z轴上下移动,但是又不能在xy方向限制其移动。 压块的运动方式比较简单,给其一个下压的速度即可。 为防止压块变形,使用setforce命

lammps_jiayou的博客 2279

hdu2841 Visible Trees(容斥原理)

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

Iguodala的博客 741

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Visible Trees HDU - 2841 (容斥原理)

Visible Trees HDU - 2841 题意: N*M的格点上有树(从1开始),从0,0点可以看到多少棵树。 gcd(x,y)!=1的格子看不到。 对每一列分别去求那些行的格子可以看到。 先预处理出1到m的素因子,然后利用容斥原理,对于行数是(偶数个素因子的积)的倍数的行,加上,否则减去。 1 #include <bits/stdc++.h> ...

weixin_30307921的博客 159

HDU2841 Visible Trees (容斥原理)

主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意: 一个人在(0,0)点,然后前面有一个m*n的格子 ,每一个格子的节点上有一棵树。问这个人站在原地能看到多少棵树 假设两棵树在一条直线上那么仅仅能看到最前面的一棵树。 分析: 假设一个数的坐标为(a,b)。那么坐标为(a*k,b*k)的都不能看见。假设a,b有...

weixin_30267785的博客 80

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

转载请注明出处,谢谢 http://blog.youkuaiyun.com/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(容斥原理)

http://acm.hdu.edu.cn/showproblem.php?pid=2841 有一个n*m的方格,从(1,1)開始,每一个点有一棵树,一个人站在(0,0)点,问他能看到几棵树。当(0,0)和另外的点在一条直线上时他仅仅能看到近期的一棵。 题目意在求在m*n的方格中有多少种y/x,由于两个y/x相等的点仅仅能看到一个。有多少种y/x也就是有多少 ...

weixin_38166931的博客 72

HDU2841 Visible Trees【容斥原理】

题目大意: 给一个含有N*M个点的矩阵,左下角的点为(1,1),右上角的点为(N,M),一个人站在 (1,1)点看这些点,在一条直线上,他只能看到最前边的点,后边的点都被挡住看不到了。 那么问题来了:这个人总共能看到多少个点? 思路: 发现一条线上的点,斜率都是一样的,后边的点都是最前边能看到点的倍数,能被看到的点 都是横纵坐标公约数为1的点,即gcd(x,y) = 1,如果有一个点(x,y),有一个公约数d,即 gcd(x,y) = d,那么,它就被前边(x/d,y/d)的点挡住了。问题就变求N*M个点

程序员充电站(itcharge) 1511

HDU 2841:Visible Trees ← 容斥原理

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

hnjzsyjyj的专栏 1257

hdu2841 (容斥原理递归版)

题意:给整数m,n;(m,n 解法:先线性筛素数法筛出100000之内每个数的质因子,然后容斥求1-n中有多少个数和i互质。           dfs(int i,int tool,int rem)表示的意思是:1-tool中含有rem位置之后的i的质因子的数的个数。 代码:/****************************************************

xiefubao的专栏 1206

hdu2841(容斥原理)

http://acm.hdu.edu.cn/showproblem.php?pid=2841 参考:http://www.cnblogs.com/kane0526/archive/2013/03/14/2795446.html #include #include #include #include #include #include #include using namesp

Paige's Blog 621

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

HDU-2841-Visible Trees 这道题题意就是给出第一象限的n*m个点,求出站在原点可以看见多少个点 将题意稍微转化一下就变成了,求(a,b)(1&lt;=a&lt;=n,1&lt;=b&lt;=m,gcd(a,b)=1)(a,b)(1&lt;=a&lt;=n,1&lt;=b&lt;=m,gcd(a,b)=1)(a,b)(1...

lajiyuan的博客 209
上一篇: HDU--2204(容斥原理 / 数学)
下一篇: HDU--4312(坐标变换,切比雪夫距离)
dingdi3021
博客等级 码龄11年 1粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值