首页 > 其他分享 >2022CCPC Guilin Site E. Draw a triangle

2022CCPC Guilin Site E. Draw a triangle

时间:2023-05-03 19:45:17浏览次数:49  
标签:Draw Y2 triangle int Guilin vec Y1 X1 define

Draw a triangle


题意:

给定两点,求第三个整数点满足三点构成的非退化三角形面积最小

分析:

一开始看成了图论题,以为一直在卡精度(doge
设 \(A(x_1, y_1), B(x_2, y_2), C(x, y)\),则三角形面积由向量叉积求:\(2S = \vec{AB} × \vec{AC}\)

  • \(\vec{AB}\)表示为\((x_2 - x_1, y_2 - y_1)\),即(a, b);
  • \(\vec{AC}\)表示为\((x - x_1, y - y_1)\),即(X, Y);

此时\(2S = (a, b) × (X, Y) = aY - bX\)
即要求出使得 S 最小的(X, Y),由扩展欧几里得求解不定二元一次方程组,第一组特解即满足条件
向量的点乘与叉乘

实现:

#include <bits/stdc++.h>
using namespace std;
#define mst(x, y) memset(x, y, sizeof x)
#define endl '\n'
#define INF LONG_LONG_MAX
#define int long long
#define Lson u << 1, l, mid
#define Rson u << 1 | 1, mid + 1, r
#define FAST ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
const int N = 2000010, MOD = 1e9 + 7;
const double EPS = 1e-6;
typedef pair<int, int> PII;
int T;
int a, b, X1, X2, Y1, Y2;
int x, y;
int exgcd(int a, int b, int &x, int &y)
{
    if (!b)
    {
        x = 1, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}
void solve()
{
    cin >> X1 >> Y1 >> X2 >> Y2;
    a = X2 - X1, b = Y2 - Y1;
    exgcd(-b, a, x, y);
    x += X1, y += Y1;
    
    cout << x << " " << y << endl;
}
signed main()
{
    FAST;
    T = 1;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

标签:Draw,Y2,triangle,int,Guilin,vec,Y1,X1,define
From: https://www.cnblogs.com/Aidan347/p/17369571.html

相关文章

  • u8g2 ssd1306 长条OLED的高清大logo绘制程序drawLogo
    这段代码有什么用?一般来讲,移植后只要能显示任何指定的字符就行了打点画线都可以我一般选择显示U8G2的logo如图  代码voiddrawLogo12832(u8g2_t*u8g2){u8g2_SetFontMode(u8g2,1);/*字体模式选择*/u8g2_SetFontDirection(u8g2,0);/*字体方向选择*/......
  • 把任意Drawable转换成基于progress填充的drawable
    把任意Drawable转换成基于progress填充的drawable。progress可以是四个方向:from_left,from_top,from_right,from_bottom。FillDrawable的背后是PorterDuffColorFilter//obtainaDrawableobjectfinalDrawabledrawable=getDrawable(...);//initializeboundsdraw......
  • LayerDrawable层叠样式layer-list
    layer-list可以将多个图片按照顺序层叠起来。语法:在drawalbe/drawable-layer.xml中<layer-listxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:drawable="@android:color/white"/><itemand......
  • 关于Drawable转Bitmap的错误,为0的处理办法
    这个问题困惑我许久,主要是在于给的报错信息误导了我,报错信息如下:后来,我跟飞哥探讨(请教)了一番,得知可能返回的不是0,于是乎我就打印了一个log,来测试一下,发现并不是0,而是-1!!!!如此,我便寻得缘由,点进去方法,看到了这样一个方法:恍然大悟!!!感谢飞哥。......
  • rectangle(), drawpoly()
    #include<graphics.h>#include<stdio.h>intmain(){inti;intpoints[8]={320,0,0,240,640,240,320,0};intgraphdriver=DETECT;intgraphmod......
  • MFC-DrawText在指定的矩形里写入格式化的文本
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;HFONThfont=::CreateFontIndirect(&lf);HFONTholdfont=(HFONT)SelectObject(hdc,hfon......
  • DrawerLayout的简单使用
    本节给大家带来基础UI控件部分的最后一个控件:DrawerLayout,官方给我们提供的一个侧滑菜单控件,和上一节的ViewPager一样,3.0以后引入,低版本使用它,需要v4兼容包,说到侧滑,相信很多人都用过github上的SlidingMenu,不过好像有两个版本,一个是单独的,另一个需要依赖另一个开源项目:ActionBarSher......
  • 05 Rasterization (Triangles)
    1.ScreenPixel(RGB0-255)ScreenSpaceViewportTransform将屏幕进行缩放,然后将重心平移到原点,得到视口变换矩阵:2.Triangles最基础的多边形,任意多边形可以拆成三角形,三角形一定是平面图形,三角形内外定义清晰并可用叉积辨别(像素中心点),三角形内部属性可用三个点的属性由......
  • Android动态设置drawableRight
    DrawablerightDrawable=getResources().getDrawable(R.drawable.icon);//调用setCompoundDrawables时,必须调用Drawable.setBounds()方法,否则图片不显示rightDrawable.setBounds(0,0,rightDrawable.getMinimumWidth(),rightDrawable.getMinimumHeight());//left,top,r......
  • UVa 10112 Myacm Triangles (枚举&计算几何)
    10112-MyacmTrianglesTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=101&page=show_problem&problem=1053TherehasbeenconsiderablearcheologicalworkontheancientMyacmculture......