Codeforces Round #341 (Div. 2)(B)数学
来源:互联网 发布:淘宝商品详情图做法 编辑:程序博客网 时间:2024/05/29 02:14
题意:给你一些坐标,问在这些坐标的对角线上有多少可以攻击的对手,只能从上向下的攻击
题解:观察可以发现,一条对角线上的和其实就是一个等差数列,那么只要把每条对角线上的点统计一下,根据公式求和就好了,这里可以使用循环扫描一遍求得点的个数,也可以使用一种神奇而又简单的数学规律:
在每一条对角线上的值,他的x+y,x-y都是固定且唯一的值。其实这个原理很好证明,由斜截式 y = kx+b可知,显然x-y(或y-x)是一个常数,那么我们只需要开2个一维数组就可以表示所有的线段了,注意x-y可能是负数,所以数组开为最大和的2倍在加上一个最大和防止负数就好了。
其实我是想吐槽这一题真的有毒呀
#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define N 5000int line1[N],line2[N];int half=N/2;int f(int x){return ((x-1)*x)/2;}int main(){memset(line1,0,sizeof(line1));memset(line2,0,sizeof(line2));int n,x,y;scanf("%d",&n);while(n--){scanf("%d%d",&x,&y);line1[x+y]++;line2[x-y+half]++;}int ans=0;for(int i=0;i<N;i++){ans+=f(line1[i]);ans+=f(line2[i]);}printf("%d\n",ans);return 0;}
0 0
- Codeforces Round #341 (Div. 2)(B)数学
- Codeforces Round #282 (Div. 2) B.(数学)
- Codeforces Round #340 (Div. 2)(B) 数学
- Codeforces Round #246 (Div. 2)(B)数学
- Codeforces Round #353 (Div. 2)-B. Restoring Painting(数学)
- Codeforces Round #196 (Div. 2) / 337B Routine Problem(数学)
- Codeforces Round #224 (Div. 2) B 数学推理
- Codeforces Round #319 (Div. 2)B. Modulo Sum(数学,DP)
- Codeforces Round #384 (Div. 2)(数学)
- Codeforces Round #256 (Div. 2)(B)
- Codeforces Round #350 (Div. 2)(B)
- Codeforces Round #379 (Div. 2)B
- Codeforces Round #328 (Div. 2) B. The Monster and the Squirrel(数学规律)
- Codeforces Round #340 (Div. 2)-B. Chocolate(组合数学的乘法计数)
- Codeforces Round #278 (Div. 2) B. Candy Boxes (模拟,数学)
- Codeforces Round #260 (Div. 2) B. Fedya and Maths (数学规律)
- Codeforces Round #364 (Div. 2) B Cells Not Under Attack(数学)
- Codeforces Round #142 (Div. 2) B. T-primes (数学、O(n)筛素数)
- Androidx学习笔记(49)--- Activity的跳转
- Codeforces Round #341 (Div. 2)(A)模拟
- hdu3081 Marriage Match II
- sdk不能更新
- 程序员必知的一些快捷键!
- Codeforces Round #341 (Div. 2)(B)数学
- JQury中设置元素滑动(slideUp/slideDown/slideToggle)方法
- SPDY与HTTP2.0
- 《笨办法学Python》 第32课手记
- 【组合数学】[HNOI2008][HYSBZ/BZOJ1008]越狱
- 前端开发遇到的一些小问题
- yraniBddA.67
- 闭包的循环引用
- BitmapFactory.Options详解