2.梅花桩

  (blossom.pas/c/cpp)

【问题描述】

小x在练习一门轻功,这门轻功是在梅花桩上跳来跳去,这门轻功是严格按照直线从一个梅花桩直接跳到另外一个梅花桩上。因为小x有恐高症,所以除了开始和结束的两个梅花桩,这条直线上不能有其他梅花桩,否则小x会真气中断,直接掉下来。

小x的梅花桩有W+1行,H+1列,每个梅花桩之间距离都是1米,严格按照上下左右排列,小x的轻功最少能跳L1米,最多能跳L2米。

作为一位爱思考的数学青年,小x想到了一个问题:有多少对梅花桩对小x来说是安全的,或者说有多少对梅花桩能保证小x练习这门轻功。

例如如下的地图:

W = 2  H = 1

**

**

**

而小x跳跃的长度为2和3之间。

这个梅花桩共有 (2+1) * (1+1) = 6个点以及有15 种配对方法

(0,0)-(0,1)   (0,0)-(2,1)   (0,1)-(2,1)   (1,1)-(2,0)

(0,0)-(1,0)   (0,1)-(1,0)   (1,0)-(1,1)   (1,1)-(2,1)

(0,0)-(1,1)   (0,1)-(1,1)   (1,0)-(2,0)   (2,0)-(2,1)

(0,0)-(2,0)   (0,1)-(2,0)   (1,0)-(2,1)

在这之中,只有四种是可以满足小x跳跃长度的

始位  末位 长度          始位  末位 长度

(0,0)-(2,0) 2.00             (0,1)-(2,0) 2.24

(0,0)-(2,1) 2.24             (0,1)-(2,1) 2.00

但在这四种之中,(0,0)-(2,0)和(0,1)-(2,1)都不符合直线上没有其他梅花桩的要求,所以这个样例中只有2种结果。

【输入】

一行,4个整数W, H, L1, 和 L2

【输出】

一行。可能的方案数。

【输入输出样例】

blossom.in

blossom.out

2 1 2 3

2

【数据范围】

50%数据 0<w,h,L1,L2<=100

100% 数据  1 <= L1 <= L2 <= 1,500  1 <= W <= 1,000; 1 <= H <= 1,000

思路:

50%的分很好拿(四重循环)。

但是如何拿满分?(这个问题好)HOW

首先,如果L1<=1时,所有相邻为一的点都满足要求。

if(l1<=)
ans=ans+w*(h+)+h*(w+);

显然,当w=3,h=3时有(w+1)*h+h*(w+1);

然后,就枚举(x,y)到(0,0)的距离。如果小于L2,大于L1则算出有多少那样的矩形*2.

ans+=(w+1-x)*(h+1-y)

cpp:

 #include<iostream>
#include<string>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<iomanip>
using namespace std;
const int maxn=;
int w,h,l1,l2;
long long ans=;
int gcd(int a,int b)
{
return b==?a:gcd(b,a%b);
} int main()
{
freopen("blossom.in","r",stdin);
freopen("blossom.out","w",stdout);
ios::sync_with_stdio(false);
cin>>w>>h>>l1>>l2;
if(l1<=)
ans=ans+w*(h+)+h*(w+);
for(int i=;i<=w;i++)
{
for(int j=;j<=h;j++)
{
int x=i*i+j*j;
if(x>=l1*l1&&x<=l2*l2)
{
x=gcd(i,j);
if(x==)
{
ans=ans+(w-i+)*(h-j+)*;
}
}
}
}
cout<<ans<<endl;
return ;
}

11.12模拟考T2(GCD)的更多相关文章

  1. 11.12模拟考T1(可持续优化)PS:神奇的东西

    1.数列操作   (array.pas/c/cpp) [问题描述] 现在有一个数列,最初包含0个数.现在要对数列操作n次,操作有3类. 1) a k,在数列的最后插入一个整数k 2) s 将最近插入的 ...

  2. 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数

    最小公倍数(lcm.c/.cpp/.pas) 题目描述 给定两个正整数,求他们的最小公倍数. 样例输入 28 12 样例输出 84 数据范围 对于40%数据:1<=a,b<=10^9 对于 ...

  3. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  4. NOIp 11.11/12

    最后一场比较正式的NOIp模拟赛,写一发小总结.题目没什么好说的,大部分很简单,先贴一下代码. 1111 T1 //string //by Cydiater //2016.11.11 #include ...

  5. 【2018.06.26NOIP模拟】T2号码bachelor 【数位DP】*

    [2018.06.26NOIP模拟]T2号码bachelor 题目描述 Mike 正在在忙碌地发着各种各样的的短信.旁边的同学 Tom 注意到,Mike 发出短信的接收方手机号码似乎都满足着特别的性质 ...

  6. [第一波模拟\day1\T2]{分班}(divide.cpp)

    [题目描述] 小N,小A,小T又大了一岁了. 现在,他们已经是高二年级的学生了.众所周知,高二的小朋友是要进行文理科分班考试的,这样子的话,三个好朋友说不定就会不分在一个班. 于是三个人决定,都考平均 ...

  7. 18/9/22NOIP模拟考

    18/9/22NOIP模拟考 其实本来是有多组数据的,出题人忘记在题面上加了   斜眼笑 期望得分:100:实际得分:100 由于种种原因,拿到题的时候已经过去了0.5h+... 然后因为这道题数据范 ...

  8. 9.11 myl模拟赛

    9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...

  9. JZOJ2020年8月11日提高组T2 宝石

    JZOJ2020年8月11日提高组T2 宝石 题目 Description 见上帝动了恻隐之心,天后也想显示一下慈悲之怀,随即从口袋中取出一块魔术方巾,让身边的美神维纳斯拿到后堂的屏风上去试试,屏风是 ...

随机推荐

  1. python中if __name__ == '__main__': 的解析

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ ==  '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一 ...

  2. 【转】silverlight telerik RadGridView 列头显示其他控件

    <telerik:GridViewDataColumn DataMemberBinding="{Binding target_id}" IsFilterable=" ...

  3. freeCAD定制界面

    由于freecad接口是基于现代Qt工具包,它非常先进.窗口,菜单,工具栏和其他工具都可以修改,移动工作台,共享,键盘快捷键都可以设置.修改,以及宏,它可以录制和播放.定制界面是访问Tools -&g ...

  4. C#中Invoke的用法(转)

    在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界 ...

  5. Reverse Linked List II 单向链表逆序(部分逆序)

    0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...

  6. 【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合 ...

  7. OpenSuse Caffe CNN库 配置

    参考官方文档:http://caffe.berkeleyvision.org/installation.html 1. 安装CUDA 参考 http://www.cnblogs.com/sunshy/ ...

  8. 查出重复的数据---------oracle

    select chcod, count(1) from a group by chcod having count(1) > 1

  9. SqlServer性能优化 通过压缩与计算列提高性能(十一)

    压缩: 1.压缩的对象 1.表   2.索引(非聚集索引手工做)   3.备份(手工做) 2.对性能影响 1.提高IO性能     2.降低CPU性能 行压缩: 1.对null值不占用空间 2.对Nu ...

  10. 瀑布流布局(jq实现)

    参考刘晓帆大神的瀑布流效果 自己也写了个 希望能给打算写这个效果的朋友一点点思路,也希望朋友们批评指正! html代码: <!DOCTYPE html> <html> < ...