【hrbust】2298 Diamond 【数学+暴力】
来源:互联网 发布:黑客网站攻击软件 编辑:程序博客网 时间:2024/06/04 23:18
题目链接: 【hrbust】2298 Diamond
枚举斜率算贡献。
PS:一开始写了
#include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 1005 ;int n , m ;int cnt[MAXN][MAXN] ;LL sum1[MAXN][MAXN] , sum2[MAXN][MAXN] ;int R[MAXN][MAXN] , C[MAXN][MAXN] ;LL odd[MAXN] , even[MAXN] ; void solve () { if ( n > m ) swap ( n , m ) ; LL ans = 1LL * ( n * m + n + m ) * sum1[n][m] + sum2[n][m] ; ans -= 1LL * n * R[n][m] + 1LL * m * C[n][m] ; if ( n % 2 ) { if ( m % 2 ) ans += even[n - 1] * even[m - 1] ; else ans += even[n - 1] * odd[m - 1] ; } else { if ( m % 2 ) ans += odd[n - 1] * even[m - 1] ; else ans += odd[n - 1] * odd[m - 1] ; } ans += 1LL * n * ( n * m + n + m ) ; ans -= 1LL * ( n + m ) * ( 1 + n ) * n / 2 ; ans += 1LL * ( n - 1 ) * n * ( 2 * n - 1 ) / 6 ; printf ( "%lld\n" , ans ) ;}int main () { for ( int i = 1 ; i < MAXN ; ++ i ) { for ( int j = 1 ; j < MAXN ; ++ j ) { int g = __gcd ( i , j ) ; for ( int k = 1 ; ; ++ k ) { int x = k * j / g , y = k * i / g ; if ( x >= MAXN || y >= MAXN ) break ; if ( i == j && x == i ) continue ; if ( x % 2 == i % 2 && y % 2 == j % 2 ) { cnt[max ( x , i )][max ( y , j )] ++ ; } } } } for ( int i = 1 ; i < MAXN ; ++ i ) { for ( int j = 1 ; j < MAXN ; ++ j ) { C[i][j] = C[i - 1][j] + cnt[i][j] * i ; R[i][j] = R[i][j - 1] + cnt[i][j] * j ; sum1[i][j] = sum1[i][j - 1] + cnt[i][j] ; sum2[i][j] = sum2[i][j - 1] + 1LL * cnt[i][j] * ( i - 1 ) * ( j - 1 ) ; } } for ( int i = 1 ; i < MAXN ; ++ i ) { for ( int j = 1 ; j < MAXN ; ++ j ) { R[i][j] += R[i - 1][j] ; C[i][j] += C[i][j - 1] ; sum1[i][j] += sum1[i - 1][j] ; sum2[i][j] += sum2[i - 1][j] ; } } for ( int i = 1 ; i < MAXN ; ++ i ) { odd[i] = odd[i - 1] ; even[i] = even[i - 1] ; if ( i % 2 ) odd[i] += i ; else even[i] += i ; } while ( ~scanf ( "%d%d" , &n , &m ) ) solve () ; return 0 ;}
0 0
- 【hrbust】2298 Diamond 【数学+暴力】
- hrbust 1996 数学等式
- hrbust 1055 Single【暴力预处理】
- Hrbust 2178 线段【暴力】水题
- hrbust 1957 干掉坏人【Dfs+暴力枚举】
- hrbust 1241 Blocks【暴力枚举+简单优化】
- Hrbust 1789 通信道路【思维+暴力枚举】
- Diamond
- Diamond
- diamond
- diamond
- Separating Pebbles数学,暴力
- gym101138F(数学,暴力)
- hdu6127-(数学+暴力)
- hrbust 1854幼稚园的数学Ⅱ
- hrbust 1328 相等的最小公倍数【暴力打表找规律】
- Hrbust 2325 Astonishing Combinatorial Number【前缀和+暴力】
- HRBUST OJ 1660 素数矩阵(素数打表,暴力)
- FTP使用
- value toDF is not a member of org.apache.spark.rdd.RDD[People]
- 从java 反射看延迟加载(代理模式)(七)——jdkproxy实现原理
- POJ2376——Cleaning Shifts(贪心)
- 灰度测试,灰度发布
- 【hrbust】2298 Diamond 【数学+暴力】
- 问答与思考--迷茫?
- 数据结构——二叉树
- 实现下拉列表,点击其他位置自动隐藏效果的三种方式比较
- 怎样制作FL Studio步进音序器中的节奏
- 物联卡
- Android Studio添加第三方库(.jar && .so)
- windows核心编程-获取进程中堆的分配情况
- Android Studio修改包名不成功怎么办