TopCoder SRM500 Div1 500 分治
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-500.html
SRM500 Div1 500
没想到 double 的精度居然没有爆……
考虑以一个点为根的分形所涉及的区域是可以用一个矩形表示的。例如整个分形的区域就是 \(x\in [-27,27],y\in [0,81]\) 。
如果一个分形被要求的范围全部包含,那么是可以直接推公式求的。
如果一个分形代表的区域与询问区域无交,那么对答案无贡献。
否则就分治 3 个小矩形。
与询问矩形有交的分形区域比较少。所以时间复杂度是对的。
然后 double 居然没有被卡精度?
static const int N=505;
double ans,t;
void solve(double px,double py,int k,double x1,double y1,double x2,double y2){
if (k>30)
return;
double pmy=py+pow(t,k)/3*2;
double puy=py+pow(t,k);
double xL=px-pow(t,k+1);
double xR=px+pow(t,k+1);
if (x1<=xL&&xR<=x2&&y1<=py&&puy<=y2)
return (void)(ans+=(t*2*(500-k)+1.0/3.0)*pow(t,k));
if (xL>x2||xR<x1||py>y2||puy<y1)
return;
if (x1<=px&&px<=x2)
ans+=max(0.0,min(y2,pmy)-max(y1,py));
solve(px,pmy,k+1,x1,y1,x2,y2);
solve(pmy,-px,k+1,y1,-x2,y2,-x1);
solve(-pmy,px,k+1,-y2,x1,-y1,x2);
}
double getLength(int x1, int y1, int x2, int y2){
ans=0,t=1.0/3.0;
solve(0,0,0,x1*1.0/81.0-1e-15,y1*1.0/81.0-1e-15,x2*1.0/81.0+1e-15,y2*1.0/81.0+1e-15);
return ans*81.0;
}
TopCoder SRM500 Div1 500 分治的更多相关文章
- TopCoder SRM500 Div1 250 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-250.html SRM500 Div1 250 题意 (看题用了半个小时--) 有 n 个人(编号 ...
- TopCoder SRM500 Div1 1000 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-1000.html SRM500 Div1 1000 设 \(v_1,v_2,\cdots ,v_9 ...
- TopCoder SRM502 Div1 500 贪心 01背包
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级, ...
- Topcoder SRM 563 Div1 500 SpellCards
题意 [题目链接]这怎么发链接啊..... 有\(n\)张符卡排成一个队列,每张符卡有两个属性,等级\(li\)和伤害\(di\). 你可以做任意次操作,每次操作为以下二者之一: 把队首的符卡移动到队 ...
- SRM 618 DIV1 500
非常棒的组合问题,看了好一会,无想法.... 有很多做法,我发现不考虑顺序的最好理解,也最好写. 结果一定是两种形式 A....A dp[n-1] A...A...A sgma(dp[j]*dp[ ...
- SRM 615 DIV1 500
TC 都615了...时间过的真快啊. 第一次做出500分,心情还是很激动的,虽然看了很久的题解,TC官网上的题解,很详细,但是英语的...我搜了搜,发现一份日语的...好吧,我还是看看英语的吧... ...
- TopCoder 649 div1 & div2
最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实 ...
- TopCoder SRM502 Div1 1000 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-1000.html SRM502 Div1 1000 题意 从 [0,n-1] 中选择 k 个不同的 ...
- topcoder SRM712 Div1 LR
题目: Problem Statement We have a cyclic array A of length n. For each valid i, element i-1 the l ...
随机推荐
- Win7开机卡在Windows Update 35%的解决办法
一台Win7老机器,多年未清理,用DISM++清理后,开机重启一直卡在Windows Update 35%转圈圈数小时,无法进入系统. 强制按关机键,F8进入安全模式依然同样现象. 查阅MSDN后,有 ...
- ebs 12.1.1升级到12.1.3
升级过程参考 Oracle电子商务套件版本12.1.3自述文件 (文档 ID 1534411.1) 应用启动到维护模式 adadmin 打以下patch 9239089 9239090 92390 ...
- Navicat系列产品激活教程
准备 本教程可破解12.x版本,如果教程失效请联系我 # 19.1.11 破解暂时失效,请勿更新 (如已更新请卸载重新安装老版本,数据不会丢失 http://download.navicat.com/ ...
- Go 开源博客平台 Pipe 1.0.0 发布!
这是 Pipe 博客平台的第一个正式版,欢迎大家使用和反馈建议! 简介 Pipe 是一款小而美的开源博客平台,通过黑客派账号登录即可使用. 动机 产品层面: 市面上缺乏支持多独立博客的平台级系统 实现 ...
- vue 树状图数据的循环 递归循环
在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环
- select下拉框可以直接取list里的内容 不用非得转map (不得不承认我是个ZZ,这么简单的问题才反应过来,--^--)
需求描述:select下拉框的填充项,从后台传来的list中获取 自黑一下:之前有篇随笔,写的是通过map传到前台,在前台的select中的value属性取值 用map的key,而select的tex ...
- tensorflow(1) 基础: 神经网络基本框架
1.tensorflow 的计算得到的是计算图graph import tensorflow as tf a=tf.constant([1.0,2.0]) b=tf.constant([3.0,4.0 ...
- cf1114D 区间dp基础
最简单的那类区间dp,昨天晚上心态不对,不知道在打什么.. /* dp[l][r]表示区间[l,r]都涂成同色的代价 dp[l][r]可以由dp[l][r-1],dp[l+1][r],dp[l+1][ ...
- mysql 文件导入
load data infile 文件路径 into table 表 fields terminated by ',' lines terminated '\n'
- 2018.8.1 状压 CF482C 题解
noip2016考了一道状压dp,一道期望dp 然而这题是状压期望dp... 所以难度是什么,省选noi吗... 怎么办... 题目大意: 给定n个字符串,甲从中任选出一个串(即选出每个串的概率相同为 ...