首页 > 其他分享 >暑假集训七[One, 砖块,数字,甜圈]

暑假集训七[One, 砖块,数字,甜圈]

时间:2022-08-21 22:25:11浏览次数:55  
标签:1024 old int long 集训 砖块 id 甜圈 define

暑假集训七

和迪哥推了一个多小时,终于被贯通

  • 方法一
here
#include <bits/stdc++.h>
#define LL long long
#define Re register int
#define LD long double
#define mes(x, y) memset(x, y, sizeof(x))
#define cpt(x, y) memcpy(x, y, sizeof(x))
#define fuc(x, y) inline x y
#define fr(x, y, z)for(long long x = y; x <= z; x ++)
#define fp(x, y, z)for(long long x = y; x >= z; x --)
#define frein(x) freopen(#x ".in", "r", stdin)
#define freout(x) freopen(#x ".out", "w", stdout)
#define ki putchar('\n')
#define fk putchar(' ')
#define WMX aiaiaiai~~
#define pr pair<long long, long long>
#define mk(x, y) make_pair(x, y)
using namespace std;
namespace kiritokazuto{
    auto read = [](){
        LL x = 0;
        int f = 1;
        char c;
        while (!isdigit(c = getchar())){ if (c == '-')f = -1; }
        do{ x = (x << 1) + (x << 3) + (c ^ 48); } while (isdigit(c = getchar()));
        return x * f;
    };
    template <typename T> fuc(void, write)(T x){
        if (x < 0)putchar('-'), x = -x;
        if (x > 9)write(x / 10); putchar(x % 10 | '0');
    }
}

using namespace kiritokazuto;

bool Mbg = false;
const int maxn = 1e7 + 1000, Mod = 998244353;
const int Inf = 2147483647;
bool Med = true;
//先打个暴力,等会用来拍把
int per[maxn];
int pos;
int turn;
int t, n;
int vis[maxn];
int cnt;
int main(){
    // frein(data);
    // freout(A);
    t = read();
    int x = 0;
    while (t--){
        n = read();
        x = 0;
        fr(i, 2, n) x = (n - i + 1 + x) % i;
        write(x + 1);
        ki;
    }

    // if (1.0 * (&Mbg - &Med) / 1024 / 1024 > 0.1) fprintf(stderr, "memo: %lf MB\n", 1.0 * (&Mbg - &Med) / 1024 / 1024);
    // else fprintf(stderr, "memo: %lf KB\n", 1.0 * (&Mbg - &Med) / 1024);
    // fprintf(stderr, "time: %lf s\n", 1.0 * (clock() - _tme) / CLOCKS_PER_SEC);
}
  • 解释一下那个柿子
    • 假设我上一把死的人的位置在\(x\),即它上一把的编号为\(x\),那么我序列总共还剩下两种数字
      • \(id > x\)
      • \(id < x\)
    • 考虑他们在新序列里边的编号
      • \(id > x\) \(id_{new} = id - x\)
      • \(id < x\) \(id_{new} = id - n_{old} + x\)
    • 手摸一下很显然
    • 然后我们就可以考虑将两个柿子合并,
      因为\(id > x\)的\(id - x\)一定大于\(0\),所以它加一个\(n_{old}\)再模一个\(n_{old}\)值是不变的,所以两个柿子可以都合并为

\[ id_{new} = (id - n_{old} + x)\ \% \ n_{old} \]

标签:1024,old,int,long,集训,砖块,id,甜圈,define
From: https://www.cnblogs.com/kiritokazuto/p/16611199.html

相关文章

  • 暑假集训七[One,砖块,数字,甜圈]
    暑假集训七您总算更新当天的东西了啊。A.One典型的约瑟夫问题,\(t<10,n\leq1e7\)数据范围需要我们用线性算法。考虑每次去掉一个人后都重新编号,把编号改为\([0,n)\)......
  • 暑期集训7
    130rank39T1:T2:暴力模拟T3T4:【甜圈】线段树(hash区间加乘或者直接维护区间信息)T4:给你n个盒子,初始为空,支持t个操作,每次(l,r,xi),表示在[l,r]区间编号的盒子有序放上x......
  • 暑假集训7(建议等我改完再点开)
    A.One用vector把out的及时删掉,然后就可以直接加位置了,STL真好用,不过它T了……#include<bits/stdc++.h>usingnamespacestd;intT,n;vector<int>a;inline......
  • 集训3/4总结
    这几次考试题难度和在家集训五天的难度差不多,但是考试状态好了很多,故成绩还看得过去。感觉基本集训几天第一次学的算法都没太学懂,还需要自己去复习。上新课的速度没我想的......
  • 集训总结
    集训总结收获学习了一些从未接触的数据结构:线段树,树状数组,单调栈,单调队列可以实现一些基本操作,但与灵活运用还有一定距离,也无法与其他算法相结合使用提升了图......
  • A层邀请赛6 && 暑假集训加试1
    A.菜暴力做法:2^n枚举哪些人是正向上菜的,然后记录答案。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmaxn=20;constin......
  • 2022暑假集训总结
    经过简介7月20日到达内江天立学校,在小学部的机房上课。这里没什么人,比较安静,也没有那么热,学习环境挺好的。开始是老姚给我们上的课,主要讲了tarjan,然后由几位学长讲课。期......
  • 状压DP-1815. 得到新鲜甜甜圈的最多组数
    问题描述有一个甜甜圈商店,每批次都烤 batchSize 个甜甜圈。这个店铺有个规则,就是在烤一批新的甜甜圈时,之前所有 甜甜圈都必须已经全部销售完毕。给你一个整数batchSi......
  • 2022暑假集训总结
    2022暑假集训总结收获做了██道题跟着多校联训学的时候,主要收获是学会了一些基本的暴力算法和一些以前不知道的算法概念后来高烧休息了几天回来以后主要的收获是考试......
  • 暑假集训6
    前两题只会打暴力,本来以为又要垫底了,结果还可以?A.接力比赛确实是背包,排序后每次跑上界为\(\sumw_i\),然后刚刚好卡过??随机数据跑的还是挺快的code#include<cstring>......