AtCoder Beginner Contest 197(练习)

Posted 佐鼬Jun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AtCoder Beginner Contest 197(练习)相关的知识,希望对你有一定的参考价值。

C - ORXOR

在这里插入图片描述在这里插入图片描述在这里插入图片描述
题意: 给n个数,把n个数分成任意组,对每个组的数进行OR运算(或运算),对每个组的结果进行XOR运算(异或运算),最后输出最小的异或值。
思路: 数据范围很小,可以状态压缩来枚举所有分组的情况,分组就代表着再哪个地方放上一个隔板,隔板之间的组XOR,隔板之内的数OR运算。总共有2n放隔板的方案(因为包含可以不放),利用二进制,哪一位有1,那个地方就放隔板。最后取最小值。
关键: 把230种情况,利用二进制来枚举
注意: 一开始存答案的值取2147483647,不能取0x3f3f3f3f,因为数据里面最大的数就是int范围最大值。

#include <bits/stdc++.h>
using namespace std;
const int N = 100;
#define ll long long
#define inf 0x3f3f3f3f
int n;
int a[N];

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }
    int ans = 2*inf;
    for (int i = 0; i < (1 << n); i++) {
        int OR = 0, XOR = 0;
        for (int j = 1; j <= n; j++) {
            OR |= a[j];
            if ((i & (1 << j))) {
                XOR ^= OR;
                OR = 0;
            }
        }
        XOR ^= OR;
        ans = min(ans, XOR);
    }
    printf("%d\\n", ans);
    return 0;
}

D - Opposite

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题意: 在二维平面x-y坐标轴上,给一个n正多边形,它有n个点(b保证是偶数),n个点的坐标是呈现逆时针排布, p 0 p_0 p0 p 1 p_1 p1 p 2 p_2 p2 p n − 1 p_{n-1} pn1,现在给 p 0 p_0 p0 p n / 2 p_{n/2} pn/2的坐标,让你输出 p 1 p_1 p1的坐标
思路: 就是个计算几何题
下面是博主的思路,也是借鉴了CSDN其他大佬的思路
(画图比较难看,还有写错的字,太菜了)

在这里插入图片描述
也算是对这个公式记个笔记
关键就是绕点旋转公式:
x=( x 0 x_0 x0- x m x_m xm) c o s α cosα cosα-( y 0 y_0 y0- y m y_m ym) s i n α sinα sinα+ x m x_m xm
y=( x 0 x_0 x0- x m x_m xm) s i n α sinα sinα+( y 0 y_0 y0- y m y_m ym) c o s α cosα cosα+ y m y_m ym

#include<bits/stdc++.h>
using namespace std;
const double PI=acos(-1.0);

int main() {
    double n,x0,y0,xm,ym,x,y,a;
    cin>>n>>x0>>y0>>xm>>ym;
    a=2*PI/n;
    x=(x0+xm)/2;
    y=(y0+ym)/2;
    double x1=(x0-x)*cos(a)-(y0-y)*sin(a)+x;
    double y1=(x0-x)*sin(a)+(y0-y)*cos(a)+y;
    printf("%.10lf %.10lf\\n",x1,y1);
    return 0;
}

To be continued
如果你有任何建议或者批评和补充,请留言指出,不胜感激

以上是关于AtCoder Beginner Contest 197(练习)的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder Beginner Contest 234

AtCoder Beginner Contest 115 题解

AtCoder Beginner Contest 154 题解

AtCoder Beginner Contest 103

AtCoder Beginner Contest 228

AtCoder Beginner Contest 242