首页 > 其他分享 >2023ICPC江西省赛补题(B,C)

2023ICPC江西省赛补题(B,C)

时间:2023-05-22 21:46:51浏览次数:52  
标签:江西省 int res rep cin 2023ICPC 补题 序列 SG

题目:B(规律)

题意:

给你长度为 k 的 a 序列,然后根据题目要求构造长度为 n 的 b 序列,求 b 序列中有多少个
\(b_i\)%m \(<=b_{i+1}\)%m (0 <= i < n)。

思路:

因为数据范围过大,很明显这题不能暴力求解。首先很明显我们可以将 a 序列全部 %m,这显然不会对答案造成影响,然后我们枚举样例就会发现每当 \(b_i+a_j\) > m 时,此时很明显\(b_{i-1} > b_i\)。

所以序列中 > 的个数就为 \(b_n\) / m。\(b_n\)为 b 序列的和。

则 <= 答案就为 n - \(b_n\) / m。

AC代码:

// -----------------
const int N = 1e6 + 10;
int a[N],s[N];
int k,n,m,x;

void solve()
{
    cin >> k;
    rep(i,1,k) cin >> a[i];
    cin >> n >> m >> x;
    rep(i,1,k) a[i] %= m;
    rep(i,1,k) s[i] = s[i-1] + a[i];
    int aa = s[k] % m;
    int cc = s[k] / m;
    int bb = n / k;
    int num = 0;
    num = bb * cc + (bb * aa + x % m) / m + s[n%k]/m;
    cout << n-num << endl;
}

题目:C(博弈)

题意:

给你 n 堆石子,每次操作只能取 p 的幂次方个棋子,若先手胜则输出GOOD,否则输出BAD

思路:

博弈只能找规律了,首先我们可以写个暴力SG打表从中找出规律(因为暴力SG会爆掉,所以我们可以尝试优化SG函数):
若 p 为奇数:

  • x 为奇 —— SG(x) = 1
  • x 为偶 —— SG(x) = 0

p为偶数:

  • x % (p + 1)
  • x = p —— SG(x) = 2
  • x 为奇数 —— SG(x) = 1
  • x 为偶 —— SG(x) = 0

然后根据规律优化SG函数即可。

AC代码:

// -----------------
int n,p;
 
int sg(int x)
{
    if(x == p) return 2;
    
    if(x & 1) return 1;
    else return 0;
}
 
void solve()
{
    cin >> n >> p;
    if(p & 1)
    {
        int res = 0;
        rep(i,1,n)
        {
            int x;
            cin >> x;
            if(x & 1) res ^= 1;
            else res ^= 0;
        }
        if(res) cout << "GOOD" << endl;
        else cout << "BAD" << endl;
        return;
    }
    int res = 0;
    rep(i,1,n)
    {
        int x;
        cin >> x;
        res ^= sg(x%(p+1));
    }
    if(res) cout << "GOOD" << endl;
    else cout << "BAD" << endl;
}

总结:

赛时5题结束,最后半个小时也没猜出C。唉,猜出就金了。可惜了。开始 B 的第一发因为没看清数据范围WA了一发,然后想了一下没那么简单就去看C了,同样因为数据范围暴力SG过不了又耗费了太多时间(完全被榜带歪了)。后面开完 J 后只剩半个小时了。想了想 B 可能因为边界问题半个小时可能调不出,就去疯狂交C了。早知道就应该去调 B 了。
银

标签:江西省,int,res,rep,cin,2023ICPC,补题,序列,SG
From: https://www.cnblogs.com/liqs2526/p/17421814.html

相关文章

  • AGC 补题笔记
    [AGC001]A.BBQEasy由于最大数肯定要和一个比自己小的数搭配保留该数,不如选择保留次大数,如此递归即解。因此将序列排序后输出序号为奇数的数即可。B.MysteriousLight观察样例,考虑重复因素,即将路径长度分割成若干个个等边三角形周长总和,可以注意到每次折射的过程实际上是将大......
  • 2023icpc省赛 1/12
    C题正常写的话就组合数搞一搞但是不取模,那么问题就有趣起来了众所周知,Σc(奇数,sum)=Σ(偶数,sum),是很对称的对于x的贡献,如果选x,就可以在儿子里任选奇数个或者偶数个,可以发现对答案的贡献是只选自己时的情况,+a[x]如果不选x,就必须选至少两个子树里的。大部分情况都是对称的。......
  • 2023江西省赛赛后总结
    大一acmer的第二场线下赛(第一场是天梯赛。去年省赛是线上赛,结果我还因为时间冲突没有去,最后只有我的两个队友去了),比赛前一天晚上睡不着,早上坐车去比赛的时候就一直很困,比赛开始后却立马精神了。最后只过了四题,拿了个三等奖,我好菜啊。。。。。。别人都是fake,只有我是真菜。。。......
  • 【补题】2023河南省赛
    题目链接https://codeforces.com/gym/104354A.小水獭游河南签到题。初看有点吓人,跟回文串有关,会不会是PAM啥的,然后是大水题。。。容易发现A串的约束非常强,没有重复字符,意味着A串的长度最大也就是26。我们枚举A串,同时看剩余的后缀是不是回文串就行了。时间复杂度\(\Theta(26......
  • 2023 PTA天梯赛补题(L1 & L2)
    2023天梯赛L1&L2补题L1L1-089最好的文档输入输出题#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"Goodcodeisitsownbestdocumentation.";return0;}L1-090什么是机器学习输入输出题#include<bits/stdc++.h>us......
  • Codeforces Round 854 补题总结
    CodeforcesRound854补题总结前言昨天做这套题很不顺,今天补完题大概总结一下。总结RecentActions按题意模拟即可,考虑到前\(n\)个数一定始终在后\(m\)个数的前面,所以说当当前队列中如果没有出现\(x\)而在第\(i\)轮放进了\(x\),那么当前在队首的编号小于\(n\)的数......
  • 2022CCPC威海站 铜牌题解 A C D E G I J 补题
    A//木桶效应#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=2e5+10;map<string,int>cham;pair<string,int>player[N];intcnt1[6];intcnt2[6];intn,m;intsum;signedmain(){cin>>n;f......
  • 2023年天梯赛补题(待补充)
    2023年天梯赛摆烂局,又卡dfs的图存储上,还是补题太少了,这么好的骗分比赛,一分都没骗着。好好训练,争取西安站学校能出线。恶补一下树和数学。多存点板子。L2-4寻宝图253516/35325(9.95%)题目给定一幅地图,其中有水域,有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏,这......
  • 小白月赛71 补题
    C结束发现这题数据很水直接假做也能过1:比赛想到了利用log,可以用log(2e19)粗略判断然后再暴力#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#defineLLlonglong#definephpush_back#defineINF0x3f3f3f3f#definePIIpair<int,int>constdouble......
  • 牛客小白月赛71 补题记录
    AB:略C:可以转化为比较对数,然后直接模拟即可(longdouble128位表示范围\(-1.2\times10^{-4932}~1.2\times10^{4932}\))代码如下:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;//------------------------intmain(void){ ios::sync_with_stdi......