hdu5885 XM Reserves FFT

2015广东工业大学新生赛 总结+部分题解 1.心态很重要。不能以OJ垃圾来推脱比赛。大家在同一个垃圾平台,比赛仍然是公平的。但行好事莫问前程。 2.多在纸上写多推导。 B题: A 和 B 的最小公倍数 为 C*K 已知 A C 求B的个数。(A能整除C) 起初以为K是当作变量来做,但是很明显,如果K当作变量那么显然B的个数是无数个。 因为任意C*K,B都可以等于C*K. 所以,显然K要当作常量,那么K是多少其实是无所谓 阅读详情

感觉是难度一般的FFT题,比赛时没看这个题。。。
把原来二维坐标映射到一维上,即(x,y)->(x*m+y)

这样整个地图就可以用一个多项式表示,系数是格子上初始的值,下标(即指数)是格子编号。
再用一个多项式表示转移,半径r内的点,系数是1/(dis+1),半径外的点是0,下标(即指数)是格子编号。
两个多项式卷积就能求得答案

#include<bits/stdc++.h>
using namespace std;
template <class T1, class T2>inline void gmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void gmin(T1 &a, T2 b) { if (b<a)a = b; }
#define MS(x,y) memset(x,y,sizeof(x))
typedef long long LL;
const int N = 661000,Z = 1e9+7,INF = 0x3f3f3f3f;

const double pi = acos ( -1.0 ) ;
struct Complex
{
    double r , i ;
    Complex ( double r=0 , double i=0 ) : r ( r ) , i ( i ) {}
    Complex operator + ( const Complex& p ) const
    {return Complex ( r + p.r , i + p.i ) ;}
    Complex operator - ( const Complex& p ) const
    {return Complex ( r - p.r , i - p.i ) ;}
    Complex operator * ( const Complex& p ) const
    {return Complex ( r * p.r - i * p.i , r * p.i + i * p.r ) ;}
}x1[2100000] , x2[2100000];
double A[N],B[N];
void FFT(Complex a[],int n,int t)
{
    for(int i = 1,j = 0; i < n-1; ++i)
    {
        for(int s = n; j^=s>>=1, ~j&s;);
        if(i<j) swap(a[i],a[j]);
    }
    for(int d = 0; (1<<d)<n; ++d)
    {
        int m=1<<d,m2=m<<1;
        double o = pi/m*t; Complex _w(cos(o),sin(o));
        for(int i = 0; i < n; i+=m2)
        {
            Complex w(1,0);
            for(int j = 0; j <     m; ++j)
            {
                Complex &A = a[i+j+m],&B = a[i+j],t=w*A;
                A=B-t; B=B+t; w=w*_w;
            }
        }
    }
    if(t==-1)for(int i = 0; i < n; ++i)
        a[i].r /= n;
}
int multi(int l1,int r1,double *a,double *la,int l2,int r2,double *b,double *lb)
{
    int len1 = r1-l1+1, len2 = r2-l2+1, len = 1,s1,s2;
    if(la > a) s1 = 1;else s1 = -1;
    if(lb > b) s2 = 1;else s2 = -1;
    while(len < len1+len2-1) len<<=1;
    for(int i = l1;i <= r1;i++) x1[i-l1] = Complex((*a),0),a+=s1;
    for(int i = len1;i < len;i++) x1[i] = Complex(0,0);
    for(int i = l2;i <= r2;i++) x2[i-l2] = Complex((*b),0),b+=s2;
    for(int i = len2;i < len;i++) x2[i] = Complex(0,0);
    FFT(x1,len,1);FFT(x2,len,1);
    for(int i = 0;i < len;i++) x1[i] = x1[i]*x2[i];
    FFT(x1,len,-1);
    return -l1-l2;
}

int n,m,R,M;
double r;
void solve()
{
    R = (r+1); M = m+2*R;
    MS(A,0); MS(B,0);
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
            scanf("%lf",&A[i*M+j+R]);//make A

    double dis;
    int rem = R*(m+2*R);
    for(int i = -R; i <= R; ++i)//make B
        for(int j = -R; j <= R; ++j)
        {
            if( (dis = i*i + j*j) >= r*r) continue;
            dis = sqrt(dis);
            B[rem+i*M+j] = 1/(dis+1);
        }

    rem = multi(0,n*M-1, A, A+n*M-1,  -R*M, R*M, B, B+2*R*M);
    double ans = 0;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
            gmax(ans, x1[rem + i*M+j+R].r);
    printf("%.3f\n",ans);
}
int main()
{
    while(~scanf("%d%d%lf",&n,&m,&r)) solve();
    return 0;
}
九余数定理及证明 hdu 1163 九余数定理: 一个数对九取余后的结果称为九余数。 一个数的各位数字之和想加后得到的 证明借鉴了网络上的证明,加以修改: 首先证明前有两个基本需要知道的规律  1.和的模 等于 模的和再取模 如:(15+7)%3 = (15%3+7%3)%3 逆运算亦可 2.积的模 等于 模的积再取模 如:(15*7)%3 = (15%3 * 7%3) %3 逆运算亦可 阅读详情

相关推荐

01串出现奇数个1的方案数 2016四川省赛 Odd Discount

题目链接:https://acm.bnu.edu.cn/v3/problem_show.php?pid=52300先证明结论,后说题目; 结论1:长度为n的01序列出现奇数个1的方案为总方案的1/2(即出现奇数个1和出现偶数个1的方案数相等) 证明:(数学归纳法) n=1的情况,显然成立; 如果n=i成立:那么再额外增加1个1,奇数个1和偶数个1的方案会对调;再额外增加1个0,奇数个1和偶数

QZQ 2265

hdu 5885 XM Reserves(FFT)

目录问题分析代码 问题 hdu 5885 XM Reserves - https://acm.hdu.edu.cn/showproblem.php?pid=5885 分析 二维数组地址线性化 一个格点对周边格点的产生影响,被影响的格点的地址从线性地址角度看,可以用多项式乘积的幂来表达 对值的影响,可以用多项式的系数来表达 代码 #include<bits/stdc++.h> using namespace std; typedef complex<double> cd; cons

jpphy0的博客 247

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 407

HDU5885 XM Reserves(FFT建模)

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HDU - 588

846

5分钟搞定微服务架构图:手把手教你用Draw.io画出专业级设计

本文详细介绍了如何使用Draw.io快速绘制专业级微服务架构图。通过5分钟入门教程,掌握核心组件拖拽、连接线优化等技巧,提升系统设计可视化效率。特别适合需要快速呈现分布式系统架构的开发团队,利用内置微服务元素和分层展示功能,轻松创建清晰易懂的技术文档。

pz890123的博客 1238

如何在 VMware Workstation 虚拟机中利用 Nvidia 显卡的硬件加速功能

本文详细介绍了在VMware Workstation虚拟机中配置Nvidia显卡硬件加速的完整流程。重点包括:检查硬件兼容性、安装显卡驱动、编辑VMware配置文件启用PCI直通功能(需修改config.ini文件参数)、为虚拟机分配PCI设备等关键步骤。文章特别强调了配置注意事项,如系统资源需求、BIOS设置要求、驱动兼容性等问题,并建议操作前备份数据。通过此方法可实现虚拟机对Nvidia显卡的直接调用,适用于需要GPU加速的计算场景。

qq_39777550的博客 6699

hdu 5885 FFT

XM Reserves Time Limit: 10000/10000 MS (Java/Others)Memory Limit: 102400/102400 K (Java/Others)Total Submission(s): 99Accepted Submission(s): 45 Problem Description As an eligible Ingr...

diaocuiguo2493的博客 176

基于Dify1.9知识库流水线模板的思考——图像和表格数据处理

本文探讨了Dify1.9知识库流水线中LLM节点对文档图像/表格增强处理的优化方案。针对当前仅在内容后追加说明的简单做法,提出了结构化标注的改进方法:通过唯一ID和注释块标记图像/表格及其描述,确保内容可精准对齐。文章详细阐述了该方案的解析处理流程、数据结构化表示方法,以及在RAG检索和文档还原中的具体应用。关键经验包括:必须结构化标注非文本内容、LLM增强的必要性、语义向量化处理等。该方案解决了原始方法在内容重排、相似元素区分和检索精度等方面的问题。

roseey的专栏 1436

hdu5885

题意: 给出一个n*m的网格,每个格点有一个权值p(i,j),每个格点可以对周围距离严格小于r的格点贡献权值除以欧几里得距离+1,问最后所有点中价值最大的是多少 solution: 每个格点可以贡献的范围显然是一个圆,令R = ceil(r),将原网格扩充为N = n + 2*R,M = m + 2*R,那么,贡献的转移就像是二维空间上的卷积一样,将二维上的点和转移方式转换成一维,F

CRZbulabula的博客 861

【分享】获取微信通讯录python代码形式实现

微信号”, “昵称”, “地区”, “备注”, “标签”, “签名”, “来源”5. 找到最后一个空格所在的位置(后一个就是真正的联系人了)当前微信号与上一个相同的时候,说明到底部了,可以跳出循环。3. 滚动鼠标到最顶部(防止已经滚动了一部分了)7.记录下上一个联系人的微信号。7. 无限循环按键盘下箭头。获取详情中的以下元素内容。6. 点击第一个联系人。4. 获取联系人列表。

程序员老狼专注开发aigc或客服系统应用 2892

字符串替换—牛客网(C++实现)

一.题目描述 请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。 给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。 测试样例: “A%sC%sE”,7,[‘...

qq_38358582的博客 1522

【HDU 5885】XM Reserves

1.题目链接。题目大意:一个n*md的矩阵,每个格点有一个p[i[j],让你选取一个位置,对于所有在以这个点为中心,半径为r的圆内的点的Σp(i,j)/(d+1)最大, d为点到圆心的距离. 2.我们可以对于每个点统计它能对那些格点造成的贡献,然后我们遍历每一个格点就能找到答案了我们从坐标变换的角度来思考,假如一个点的坐标为(x,y),圆心跟它的坐标差为(dx,dy)那么圆心的坐标就是(x+dx...

YG爱木木 282

导航系统 | 全球四大卫星导航系统(2025)核心能力对比分析

北斗系统通过GEO卫星(80°E、110.5°E、140°E)实现区域增强,其IGSO卫星在亚太地区形成"8"字形轨迹,使该区域可见卫星数量比GPS多4-6颗,显著提升复杂环境下的定位可用性[13]。北斗短报文功能在2025年云南地震救援中发挥关键作用,被困人员通过北斗终端发送120字求救信息,实现"位置+状态"一体化上报,救援响应时间缩短40%[15]。北斗通过三频信号(B1C/B2a/B3)消除电离层延迟误差,在城市峡谷环境下定位连续性达99.98%,优于GPS的99.95%[5]。

尘世冰封的专栏 2613

hdu 5885 XM Reserves (FFT建模)

Problem Description As an eligible Ingress Resistance Agent you should know your power source, the Exotic Matter.We call it XM, which is the driving force behind all of our actions in Ingress.XM...

dddddd12345456的博客 145

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【 HDU - 5885 】 H - XM Reserves (fft构造)

As an eligible Ingress Resistance Agent you should know your power source, the Exotic Matter. We call it XM, which is the driving force behind all of our actions in Ingress. XM allows us to con...

weixin_30907523的博客 120

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2016 ACM/ICPC 青岛赛区网络赛 XM Reserves

HDU5885 Problem Description As an eligible Ingress Resistance Agent you should know your power source, the Exotic Matter. We call it XM, which is the driving force behind all of our actions in

不激不随 474

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

青岛网赛1005 HDU5882 Balanced Game

水水水! #include #include #include using namespace std; #define LL long long const int maxn=2016; int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); i

PrimeXuan 525

hdu 5882

讨论水题,对于每种情况,如果能将这些节点划分为若干个强联通的三角形,那就是可以,否则就不行,再具体一点,从多边形里任选3个点,连有向边,如果到构成完全图为止都不会出现需要双向边的情况就是可以,再具体一点,只要节点是偶数个就不行,奇数个就可以题解状态0MS,1412K,406B,G++题解代码#include<cstdio> #include<cstring> #include<algorithm>

[CHN]liurui 688

最大团 极大团 Bron–Kerbosch算法 poj 2989

昨日老刘开了最大团专题后,起初以为挺简单,后来发现有点麻烦。能用的资料又很少。分享一下学习的东西 以poj 2989为例,题意是求 不同极大团的数量 要用Bron–Kerbosch算法 首先是最朴素的伪代码,没有任何剪枝(来自维基百科)https://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm Bro

QZQ 9355

Educational Codeforces Round 8 D - Magic Numbers 数位DP

题意很简单,偶数位为d,奇数位不为d,且能被m整除的数,叫d-magic,给定d,m,a,b,求在[a,b]上d-magic的个数。 注意 1 既是 0-magic 又是 2/3/4/5/6/7/8/9-magic  还有值得注意的是,给定的a,b 数位相同。 一开始没用到这个条件,写得挺麻烦~ #include #include #include #include #include #in

QZQ 8373

二分图 最小覆盖数 = 最大匹配数、最大独立集 = 总数-最小覆盖集 证明 hdu 1068

二分图有两个定理:最小覆盖数=最大匹配数、最大独立集=总数-最小覆盖集 。 这里来给出证明(如果还不懂匈牙利算法,请先看之前写的一篇)匈牙利算法链接 几个基本定义: 最小覆盖:即在所有顶点中选择最少的顶点来覆盖所有的边。 最大匹配:二分图左右两个点集中,选择有边相连的两个匹配成一对(每个点只能匹配一次),所能达到的最大匹配数。 最大独立集:集合中的任何两个点都不直接相连。 最小覆盖数=

QZQ 5814

hdu 5304 基尔霍夫矩阵

关于基尔霍夫矩阵: *算法引入: *给定一个无向图G,求它生成树的个数t(G); * *算法思想: *(1)G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数; *(2)G的邻接矩阵A[G]是一个n*n的矩阵,并且满足:如果vi,vj之间有边直接相连,则aij=1,否则为0; *定义图G的Kirchhoff矩阵C[G

QZQ 2593

hdu 2089 数位DP初探

数位DP 优秀的 教学 :http://wenku.baidu.com/link?url=o3ER_gVCyB0qcKthM-Y8vPtAGZ_u5bzOu_gUCUhPcXC6YfaSDgtBSXNEEvvGvSzyuDE9TULcPNsDrRd9IUtQVHeKUVrnPUjyfWjCly_J7Xq #include #include #include #include #defin

QZQ 2314
上一篇: bzoj 3112 从 线性规划 到 网络流 浙江oi2013 战线防守
下一篇: hdu 4796 Winter's Coming 插头DP
QZQmmmm
博客等级 码龄11年 77粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值