首页 > 其他分享 >Codeforces Round 961

Codeforces Round 961

时间:2024-07-26 22:39:45浏览次数:16  
标签:961 字母 Codeforces ge cnt2 x2 x1 Round B1

省流:运气好没有掉分)

B2 Bonquet(Hard Vertion) (CF1995B2)

事实上B1都写挂了(尖叫)

处理花瓣数相差不超过1的花,可以用map存储每种花的数量,顺序遍历即可(其实是不想排序统计,好麻烦);那么如何计算最终答案呢。。。此处省略我赛时乱七八糟的一堆复杂做法,比较简单的写法是先找到一个可行的解:设两种花的价格分别为 $x1,x2, $ 总量为 \(c1,c2,\)(可行)购买数量为 \(cnt1,cnt2,\) 有 \(cnt1=m/x1,cnt2=(m\% x1)/x2\) ;设此时剩余钱数为 \(y\),考虑将尽量多的 \(x1\) 替换为 \(x2\) ,使剩余钱数尽可能小,有 \(ans=m-y+max(y,min(y,c2-cnt2))\) ,最后取 \(max\) 即为最终答案。代码高亮莫名其妙寄了所以没有代码

B1就更简单了,除了这个正解,应该还有一些暴力乱搞能过,只是我没过而已)

C Squaring (CF1995C)

B1 WA之后并不抱太多希望地打开了C,然后发现好像会写?

要求通过最少次数的平方操作使序列单调不降,很明显从头到尾顺序操作即可,但多次平方可能导致数太大、无法直接操作,于是尝试把式子简化一下。设 \(a[i]\) 被操作了 \(x\) 次,即 \(a'[i]=a[i]^{2^x}\),此时若 \(a[i+1]\) 在操作 \(y\) 次后刚好不小于 \(a[i]\) ,则 \(a[i+1]^{2^x}\ge a[i]^{2^y}\) ,化简得 \(a[i+1]^{2^{x-y}}\ge a[i]\) 或 \(a[i+1]\ge a[i]^{2^{y-x}}\),依据原数组中 \(a[i]\) 与 \(a[i+1]\) 大小关系、分类讨论即可。开始打算二分答案做,接着就发现二分答案过程中仍然有超出long long范围的风险,而直接从 \(2^0 = 1\) 开始枚举,时间复杂度足够,且在题目数据范围内 \(a[i]\) 最多算到 \(2\times 10^6\) 就会跳出循环,非常的安全。赛时过了这题就没掉分了,好评()

D Cases (CF1995D)

由 \(c\le 18\) 想到状压,但这题的状态设计(至少对我这种菜鸡而言)挺抽象的,官方题解给了好些个hint,有一种解谜游戏的美,喜欢()

首先每个单词的类别(?)(暂且这么翻译吧,总比cf better翻译的“大小写”好点)只由最后一个字母决定,且每 \(k\) 个连续字母中必有一个为结尾,故题目可转化为“求一个字符集合,使每 \(k\) 个连续字母内必有该字符集合中的元素”。看上去还是很拗口,但已经初具状压dp的雏形了。

对于每个连续子串中字母的存在情况,可用前缀和预处理,复杂度为 \(O(cn)\) ,用bool数组记录与每个连续子串没有交集的最大集合(即 \(((1 << c)-1)\oplus s\)),该集合及其任意子集为不合法情况;使用状压dp倒序枚举状态,可 \(O(n)\) 求出所有不合法情况,注意特判 \(s[n]\) 位置的字符必须为结尾字符,因此不包括该字符的集合也不合法。最后遍历所有集合,合法集合中 \(__builtin_popcount(s)\) 的最小值即答案。

标签:961,字母,Codeforces,ge,cnt2,x2,x1,Round,B1
From: https://www.cnblogs.com/meowqwq/p/18326291

相关文章

  • Codeforces 913 div3 A-G
    A题意分析把给定的坐标的那一行和那一列的其他所有坐标都输出来C++代码#include<iostream>usingnamespacestd;intmain(){ intt; cin>>t; while(t--){ strings; cin>>s; for(inti=1;i<=8;i++){ if(i+'0'!=s[1])cout<<s[0]<<i<<end......
  • CodeForces 1883A Morning
    题目链接:CodeForces1883A【Morning】思路    模拟,特判当密码中的某个元素为0时,用10减去当前光标的位置,并修改光标的位置为当前元素,再操作依次显示当前元素。对于其他情况则直接使用光标的位置减去目标位置,修改光标位置为当前元素,然后再操作一次显示当前元素。代码#......
  • CodeForces 1883B Chemistry
    题目链接:CodeForces1883B【Chemistry】思路    判断最多删去k个字符后剩下的部分为回文字符串,所以优先删除将个数为奇数个的相同字符删为偶数,当最后留下的字符串中,奇数个数的相同字符种类小于等于1时才会是回文字符串,如:aaabbbccc,此时个数为奇数的相同字符种类有三种,分......
  • SMU Summer 2024 Contest Round 7
    BuyanInteger1.这题是二分答案,而不是公式拿来整除,以为是整除找了半天自己的错误,其实二分答案一发就能过。#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;typedefpair<int,int>pii;#definexfirst#defineysecond#defineall......
  • SMU Summer 2024 Contest Round 7
    1.GameonRanges原题链接:http://162.14.124.219/contest/1011/problem/B看懂英文后进行排序,按照区间长度从短到长,起始数字从小到大来排序,再依次标记赋值,模拟这个过程即可查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inta[1000000],b[100......
  • 题解:Codeforces Round 961 (Div. 2) C
    C.Squaringtimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputikrpprppfoundanarray\(a\)consistingofintegers.Helikesjustice,sohewantstomake\(a\)fair —thatis,makeitnon......
  • SMU Summer 2024 Contest Round 7
    AMakeEqualWithMod思路:首先x>=2,那么对于出现1的时候就没有办法处理,所以需要把所有数都变为1,从最大的数开始,每个数mod这个数减一后得到1,只有当出现两个数的差为1时没有办法把全部树变为1当没有出现1时,所有数都可以通过mod自己后得到0voidsolve(){intn;......
  • Codeforces Round 958 (Div. 2)
    A.*900水。B.*900发现可以用操作把一串0缩成一个0,1同理。都缩完之后会变成一个01交替的串。比较0和1的个数即可。C.*1300,贪心猜结论。记\(n\)的二进制下有\(x\)个1,\(k\)即为\(x+1\),可以证明这是最长的。从小到大把每一位1去掉后输出剩下的数即可......
  • CodeForces - 1842H
    *3000,大牛题。分析题目的转化首先题目中\(x_i+x_j\le1\)和\(x_i+x_j\ge1\)不好处理,我们不妨将\(x_i\)都减去\(0.5\),结果不变,那么原题则转化成了\(x_i+x_j\leor\ge0\),发现现在只在乎\(x_i\)之间的绝对值大小关系与正负,这样就可以求出总方案数和合法的方案数,所以......
  • 题解:Codeforces Round 961 (Div. 2) B1&B2
    本题含有B1和B2两个难度版本。由于关系相近,我把他们放在同一篇博客中,可自行选择观看B1.Bouquet(EasyVersion)timelimitpertest:1.5secondsmemorylimitpertest:512megabytesinput:standardinputoutput:standardoutputThisistheeasyversionoftheprobl......