首页 > 其他分享 >「AGC019B」 Reverse and Compare

「AGC019B」 Reverse and Compare

时间:2024-03-12 20:56:15浏览次数:27  
标签:字符 Compare le AGC019B Reverse ll 字符串 翻转

题意

给定一个长度为 \(n\) 小写英文字母组成的字符串 \(s\)。可以任意选定 \(1\le x\le y\le n\),把 \(s_x\) 到 \(s_y\) 之间的字符翻转。 求最终不同字符串的方案数。

分析

我们先考虑所有字符都不同的情况。

小学奥数的加法原理告诉我们,每一位都不同的字符串,对于第 \(i\) 位,可以增加 \(i-1\) 种翻转方案。

再考虑加入相同的情况。

如 \(s=abcad\),若翻转 \([1,4]\),和翻转 \([2,3]\) 等效。同理,每一组相同字符都要给答案减一。

用一个桶记录每种字母出现次数,总时间复杂度 \(O(|s|)\)。

Code

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline ll read(){ll x=0,f=1;char c=getchar();while(c<48||c>57){if(c==45)f=0;c=getchar();}while(c>47&&c<58)x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?x:-x;}
string s;
ll n,sum[200],ans=1;
signed main(){
    cin>>s;
    n=s.size();
    for(ll i=0;i<n;++i){
        ++sum[s[i]];
        ans+=i+1-sum[s[i]];
    }
    printf("%lld",ans);
}

标签:字符,Compare,le,AGC019B,Reverse,ll,字符串,翻转
From: https://www.cnblogs.com/run-away/p/18069255

相关文章

  • drf源码剖析----版本、reverse
    点击查看代码classAPIView(View):defdispatch(self,request,*args,**kwargs):self.args=argsself.kwargs=kwargsrequest=self.initialize_request(request,*args,**kwargs)self.request=requestself.headers......
  • [转]Golang atomic.CompareAndSwapInt64()实例讲解
     原文: http://www.manongjc.com/detail/30-anadyrrwgsoebxp.html-------------- 在Go语言中,原子包提供lower-level原子内存,这对实现同步算法很有帮助。Go语言中的CompareAndSwapInt64()函数用于对int64值执行比较和交换操作。此函数在原子包下定义。在这里,您需要导入“syn......
  • FRP(Fast Reverse Proxy)网络映射工具部署
    FastReverseProxy(FRP)是一款由fatedier开发的高性能的反向代理工具,用于穿透防火墙、NAT等网络障碍,将内网服务映射到公网上github地址https://github.com/fatedier/frp 下载https://github.com/fatedier/frp/releases根据操作系统找到对应版本,客户端服务端共用一个包。 ......
  • Shrink-Reverse
    题目传送门有趣的字符串题!抢在官方题解之前写一篇题解。思路因为需要使字符串代表的整数最小化,所以我们显然要删除前导零后的最终序列长度尽可能小。我们发现为了达成这个目的,可以把所有的\(1\)都聚集到一个区间内,不妨设这个区间是\([l,r]\)。那么\(1\dotsl-1\)和\(r......
  • NewStarCTF 2023 WEEK2|REVERSE SMC 使用IDApython静态解决SMC
    先来一篇IDApyhotn的指令教程https://www.cnblogs.com/zydt10/p/17676018.html*自己编的这题对应的expa=[0x11,0x22,0x33,0x44]foriinrange(38):result=a[i&3]ida_bytes.patch_byte(0x403040+i,get_wide_byte(0x403040+i)^result)在IDA中运行完exp之后,......
  • BUUCTF Reverse reverse2 wp
    与上一题相同。分析代码得将字符串中的“i”“r”替换成“1”即为flag值。......
  • CF1401F Reverse and Swap 题解
    解题思路巧妙的数据结构题,非常巧妙的利用的线段树的奇妙性质。操作逐条维护:Replace:直接线段树上单点修改;Sum:线段树查询区间和;Reverse:考虑线段树的形态。线段树第\(i\)层(除最后一层)有\(2^{i-1}\)个节点,那么将所有\(i\ge1\)的区间\([(i-1)\times2^k,i\times2^k]\)......
  • BUUCTF Reverse reverse1 wp
    分析代码由代码①得:用户需要输入字符串Str1,如果与Str2比较相同,则会提示flag正确。说明Str2中存储的字符串就是flag。点击代码中Str2,跳转至对应存储内容。代码②上方代码不影响字符判断,所以可不用分析。由代码②得:在for循序中遍历字符串Str2,(按R键,将数值转换为对应的ASCII码字......
  • [ARC154E] Reverse and Inversion 题解
    题目链接点击打开链接题目解法\(\sumj-i\)是不好维护的,考虑把\(j-i\)拆成之和\(i,j\)相关的项可以得到:\(\sum\limits_{i<j}[p_i>p_j](j-i)=\sum\limits_{i=1}^ni(\sum\limits_{j=1}^{i-1}[p_j>p_i]-\sum\limits_{j=i+1}^n[p_j<p_i])=\sum\limits_{i=1}^ni(i-1-\sum\......
  • IEqualityComparer接口实现对象去重
    //Licensedtothe.NETFoundationunderoneormoreagreements.//The.NETFoundationlicensesthisfiletoyouundertheMITlicense.//SeetheLICENSEfileintheprojectrootformoreinformation.usingSystem;usingSystem.Collections;usingSyste......