首页 > 其他分享 >Feb

Feb

时间:2023-05-14 11:55:28浏览次数:25  
标签:字符 Feb ... 贡献 一种 取值 等差数列

P9183 [USACO23OPEN] FEB

一道规律题$.....$

说在前面的

写这一道题,首先要知道一个东西:
如果$A$的取值为($1,3,5$)中的一种,$B$的取值为($0,2,4$)中的一种,
则$A+B$的取值为($1,3,5,7,9$)中的一种.
如果$A$的取值为($1,2,3$)中的一种,$B$的取值为($0,2,4$)中的一种,
则$A+B$的取值为($1,2,3,4,5,6,7$)中的一种.
那么:如果$A$的取值为一个等差数列$l_a-r_a$(公差为$k_a$)中的一种,$B$的取值为等差数列$l_b-r_b$(公差为$k_b$)中的一种,
则$A+B$的取值为等差数列$(l_a+l_b)-(r_a+r_b)$(公差为$\min(k_a,k_b))$中的一种.

Solution

题意再次并不赘述,总答案为已知的字符所产生的贡献$+$字符$F$所产生的贡献

由眼可得 仔细观察,可发现$F$在字符串中只有三种可能

  • 形如$...BFFFB...$或$...EFFFE...$ 即一段连续$F$的两头相连的已知字符相同。
  • 形如$...BFFFE...$或$...EFFFB...$ 即一段连续$F$的两头相连的已知字符不相同。
  • 形如$FFF...$或$...FFF$ 即一段连续的$F$在字符串的开头或结尾

这时,可以考虑找不同情况下$F$的贡献,然后将每一段$F$的贡献合并起来,加上已知字符的贡献,便是本题答案。

第一种情况时:

  • $...BFB...$ 的贡献为 $0,2$
  • $...BFFB...$ 的贡献为 $1,3$
  • $...BFFFB...$ 的贡献为 $0,2,4$
  • $...BFFFFB...$ 的贡献为 $1,3,5$
  • $......$

第二种情况时:

  • $...BFE...$ 的贡献为 $1$
  • $...BFFE...$ 的贡献为 $0,2$
  • $...BFFFE...$ 的贡献为 $1,3$
  • $...BFFFFE...$ 的贡献为 $0,2,4$
  • $......$

第三种情况时:

  • $F...$ 的贡献为 $0,1$
  • $FF...$ 的贡献为 $0,1,2$
  • $FFF...$ 的贡献为 $0,1,2,3$
  • $FFFF...$ 的贡献为 $0,1,2,3,4$
  • $......$

所以,不同情况下的$F$的贡献都是等差数列,判断$F$的种类,合并答案便可

标签:字符,Feb,...,贡献,一种,取值,等差数列
From: https://www.cnblogs.com/cutemush/p/17399000.html

相关文章

  • P1676 [USACO05FEB] Aggressive cows G 题解
    题目传送门解题思路最大值最小化问题,考虑二分答案。首先要排序,保证序列单调不降,然后求出两个隔间之间的距离。sort(a+1,a+1+n);for(rii=1;i<=n;i++) dis[i]=a[i+1]-a[i];二分出一个\(mid\),判断它是否合法:每次累加距离,如果距离和比\(mid\)大,说明当前可以分配牛,记录数量......
  • Hungry Cow(USACO23 FEB Bronze T1)
    题目: 来写周练了,这道题目开开胃,就只用遍历一遍b数组、d数组再加上一些特判即可程序:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;longlongn,t,d[N],b[N];intmain(){ios::sync_with_stdio(false);cin>>n>>t;for(inti=1;i<=n;i++)......
  • 题解 P9130 【[USACO23FEB] Hungry Cow P】
    赛时开始一眼线段树分治,交了几发都T了,就意识到事情不对。后来想了想发现势能分析不能带撤销。。。后来加了一些不能改变复杂度假了的优化,没过之后就自闭跑路了。。。赛后听别人说了个楼房重建就明白怎么做了。首先,我们离线下来把\(a\)排序,去重(这样方便一点,不然权值线段树上......
  • [USACO08FEB]Hotel G
    [USACO08FEB]HotelG线段树二分,最大字段和对于操作二,是很简单的区间赋值对于操作一,长度为\(len\)的,我们要找到最小的的\(x\)满足\([x,x+len-1]\)的房间为空在最大字段和的基础上,我们可以求出最长连续空房间的长度,对于要求长度为\(len\)的房间,可以按顺序判断:若左区......
  • P6146 [USACO20FEB]Help Yourself G 题解
    题目链接先按左端点从小到大排序。设\(f(i)\)表示前\(i\)条线段的所有子集的复杂度之和。考虑从\(f(i-1)\)转移到\(f(i)\),即考虑新加进来第\(i\)条线段的过程。第\(i\)条线段加进来所新产生的贡献分两种:设除了第\(i\)条线段选中的线段集合为\(S\),则若\(S\)......
  • [USACO08FEB]Hotel G 线段树区间合并|维护最长的连续1
    这个还是看代码,比讲的清楚#include<bits/stdc++.h>#definefastioios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)#definels(rt<<1)#definers(rt<<1|1......
  • USACO23FEB G【杂题】
    A.[USACO23FEB]EqualSumSubarraysG给定一个长为\(n\)的数组\(a\),满足所有子区间的和互不相同。对于所有\(1\leqi\le n\),求出最小代价使得对\(a_i\)进行一......
  • P9128 [USACO23FEB] Fertilizing Pastures G
    咋没人写题解/fn考虑行走的过程跟你dfs一棵树的过程是等价的,所以\(T=0\)时走的边数为\(2(n-1)\),\(T=1\)时,当遍历完最后一个点\(x\)时,不用再回溯到\(1\),因此少了......
  • P4824 [USACO15FEB] Censoring S
    希望在Str中删掉1个屏蔽词(一个屏蔽词可能出现多次)求最后的串 栈+hash #include<iostream>#include<cstring>usingnamespacestd;constintN=1e6+3;......
  • Jumps,cf1455b,VJ-HZNUFeb1
    (仅做为个人笔记,反思)题目意思:开始在原点,返回到达x位置的操作数操作:1.在第k轮时走到+k位置(y+k)2.走-1位置(y-1)思路:先一直选择操作1,直到y>=x。1.若等于......