首页 > 其他分享 >gym-101667F Philosopher's Walk

gym-101667F Philosopher's Walk

时间:2022-08-30 16:24:47浏览次数:86  
标签:pii return gym Philosopher Walk 101667F include ll

Philosopher's Walk

递归分治

判断一下当前走的位置是属于 \(4\) 个块中的第几个块,然后递归计算一下在边长变小一倍后,他应该所处的位置,然后再对原位置进行旋转或平移的操作

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
#define pii pair<int, int>

pii solve(ll n, ll m)
{
    if(n == 2)
    {
        if(m == 1) return {1, 1};
        if(m == 2) return {1, 2};
        if(m == 3) return {2, 2};
        return {2, 1};
    }
    ll temp = n * n / 4;
    pii ans = {0, 0};
    if(m <= temp)
    {
        ans = solve(n / 2, m);
        swap(ans.first, ans.second);
    }
    else if(m <= temp * 2)
    {
        ans = solve(n / 2, m - temp);
        ans.second += n / 2;
    }
    else if(m <= temp * 3)
    {
        ans = solve(n / 2, m - temp * 2);
        ans.first += n / 2;
        ans.second += n / 2;
    }
    else
    {
        ans = solve(n / 2, m - temp * 3);
        ans.first = n / 2 - ans.first + 1;
        ans.second = n / 2 - ans.second + 1;
        swap(ans.first, ans.second);
        ans.first += n / 2;
    }
    return ans;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll n, m;
    cin >> n >> m;
    auto [x, y] = solve(n, m);
    cout << x << " " << y << endl;
    return 0;
}

标签:pii,return,gym,Philosopher,Walk,101667F,include,ll
From: https://www.cnblogs.com/dgsvygd/p/16639813.html

相关文章

  • Gym 101775J Straight Master(差分数组)
    题意:给你n个高度,再给你1n每种高度的数量,已知高度连续的35个能消去,问你所给的情况能否全部消去;例:n=4,给出序列1221表示高度1的1个,高度2的2个,高度3的2个,高度4的1个。那......
  • gym-103708E Erudite of words
    Eruditeofwords组合数学+容斥定义\(F_i\):表示由\(i\)个字母组成的长度为\(n\)的单词数(每个字母必须在单词中出现)显然答案就是\(F_k*C_{m}^{k}\)关于\(F_i......
  • gym-103708D Different Pass a Ports
    DifferentPassaPorts矩阵快速幂模板图的邻接矩阵的\(k\)次幂就是从图上所有点走\(k\)步的方案数#include<iostream>#include<cstdio>usingnamespacestd;......
  • gym-103708F Froginald the frog
    Froginaldthefrog矩阵快速幂如果没有分隔的话,这就是一个矩阵快速幂求斐波那契的问题因为有分隔,因此考虑他们分成若干个块,每个块的方案数之积就是答案,显然分隔的长度如......
  • gym-103708B Building 5G antennas
    Building5Gantennasdfs剪枝要字典序最小,显然第一个点就是\(1\),后面考虑走\(k\)步后能到达的点集中选一个字典序最小的,重复该过程考虑\(set[i][j]\)表示第\(i\)......
  • 8.27训练赛(2018-2019, ICPC, Asia Yokohama Regional Contest 2018,gym102082)
    B一开始开题的时候想假了,以为用map存差的结果贪心就行了,实际上是一个比较妙的dp,用到了一个结论:两项就唯一确定一个等差数列。设\(f[i,j]\)表示最后两个数选了\(a_i\),\(a......
  • gym中的action_repeat
    Specifically,weaverageperformanceover10randomseeds,andreducethenumberoftrainingobservationsinverseproportionallytotheactionrepeatvalue.—......
  • [Codeforces_gym_102136] I.Permutations again
    传送门DescriptionGivenasequence\(A_i\)consistingof\(N\)integers.Findthenumberofpairs\((L,R)\)forwhichthesubsegment\({A_L,A_{L + 1},......
  • Gym102798 CCPC2020威海E加强版 题解
    原题link把\(m\)和\(a_i\)的上界改成\(200\),其他不变.基本思路:枚举\(S\),求出\(p(S)\)表示集合\(S\)中的怪兽被打死的概率,答案就是\(\sum_{S}|S|p(S)\).而这......
  • L6U6-Choosing a gym
    L6U6Choosingagym2022.08.14Sunday15:40-16:30thisclassstarted?==>Isthislessonstarted?Howmanygradesofyourcollege?Freshmansophomoreyearjun......