码迷,mamicode.com
首页 > 其他好文 > 详细

CF1030D Vasya and Triangle 计算几何、构造

时间:2018-12-09 12:13:51      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:三角形   its   targe   code   ceil   初中   std   int   def   

传送门


 

这题竟然只有1700……

我们考虑使用初中学过的割补法求三角形的面积

也就是把一个三角形补成下面这样

技术分享图片

那么三角形的面积$S=XY-\frac{(X-X_1)(Y-Y_1)}{2}-\frac{XY_1}{2}-\frac{X_1Y}{2}=\frac{XY-X_1Y_1}{2}$

又因为$X,Y,X_1,Y_1$都是整数,所以三角形的面积里分母的位置只能是$1$或者$2$。我们可以通过$gcd(NM,K)$是否为$K$或$\frac{K}{2}$来判断无解。

当我们知道有解了之后,考虑构造方案。

我们令$Y1=1$,$X=N$,那么$S=\frac{NY-X_1}{2}=\frac{NM}{K}$,也就是说$NY-X_1=\frac{2NM}{K}$,那么$Y=\lceil\frac{2M}{K}\rceil$,$X_1=NY-\frac{2NM}{K}$。

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long N , M , K;
    cin >> N >> M >> K;
    if(N * M % K && (K % 2 || N * M % (K / 2))){
        puts("NO");
        return 0;
    }
    puts("YES");
    K = 2 * N * M / K;
    long long L = K / N + (K % N ? 1 : 0) , R = L * N - K;
    cout << "0 0\n" << N << " 1\n" << R <<   << L;
    return 0;
}

CF1030D Vasya and Triangle 计算几何、构造

标签:三角形   its   targe   code   ceil   初中   std   int   def   

原文地址:https://www.cnblogs.com/Itst/p/10090434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!