Codeforces Round #498 (Div. 3)

D. Two Strings Swaps


容易发现,a[i], a[n-i+1], b[i], b[n-i+1] 可以互相交换,且不会受其他地方影响,关键在于对于这4个字符怎们计算最小的操作数,讨论到死。。。看了别人的代码,用不同的字符对数表示字符的组成,就比较容易判断了。还不太清楚是如何想到的。。。只会写暴力枚举本质不同的这种正方形。。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
typedef long long ll;
const int N = 2e5 + 7;
using namespace std;
int n,ans,num[366];
char s1[N],s2[N];
int cal(string s1,string s2) {if(s1==s2)return 0;if(s1[0]==s1[1]&&s2[0]==s2[1]) return 0;string t=s1; t+=s2;int d=0;for(int i=0;i<4;++i)for(int j=0;j<i;++j) if(t[i]!=t[j])++d;int ans=0;if(d==3) ++ans;else if(d==5&&s1[0]==s1[1]) ans+=2;else if(d==5&&s1[0]!=s1[1]) ans++;else if(d==6) ans+=2;return ans;
}
//int id[111],M[N];
//int ck(int a,int b,int c,int d) {
//    memset(id,0,sizeof(id));
//    int cc=0;
//    if(!id[a])id[a] = ++cc;
//    if(!id[b])id[b] = ++cc;
//    if(!id[c])id[c] = ++cc;
//    if(!id[d])id[d] = ++cc;
//    int t = id[a]*10000 + id[b]*1000 + id[c]*100 + id[d];
//    return !M[t];
//}
//void biao(int a,int b,int c,int d) {
//    memset(id,0,sizeof(id));
//    int cc=0;
//    if(!id[a])id[a] = ++cc;
//    if(!id[b])id[b] = ++cc;
//    if(!id[c])id[c] = ++cc;
//    if(!id[d])id[d] = ++cc;
//
//    int t = id[a]*10000 + id[b]*1000 + id[c]*100 + id[d];
//    M[t] = 1;
//}
int main() {
//    for(int i=0;i<4;++i)
//    for(int i1=0;i1<4;++i1)
//    for(int i2=0;i2<4;++i2)
//    for(int i3=0;i3<4;++i3) {
//        if(ck(i,i1,i2,i3)){
//            printf("%d %d\n",i,i1);
//            printf("%d %d\n\n",i2,i3);
//            biao(i,i1,i2,i3);
//        }
//    }scanf("%d",&n);scanf(" %s",s1+1);scanf(" %s",s2+1);if(n%2==0) {for(int i=1;i<=n/2;++i) {int p = n - i + 1;string t1,t2;t1+=s1[i];t1+=s1[p];t2+=s2[i];t2+=s2[p];sort(t1.begin(),t1.end());sort(t2.begin(),t2.end());ans += cal(t1,t2);}}else {for(int i=1;i<=n/2;++i) {int p = n - i + 1;string t1,t2;t1+=s1[i];t1+=s1[p];t2+=s2[i];t2+=s2[p];sort(t1.begin(),t1.end());sort(t2.begin(),t2.end());ans += cal(t1,t2);}if(s1[n/2+1]!=s2[n/2+1])++ans;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9321287.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用HttpClientFactory来实现简单的熔断降级

前言在2.1之后&#xff0c;有不少新东西&#xff0c;其中HttpClientFactory算是一个。HttpClientFactory涉及的东西也不算少&#xff0c;三四种clients , 请求中间件&#xff0c;与Polly的结合&#xff0c;生命周期等。Steeltoe的组件升级到2.1后&#xff0c;不少示例代码已经使…

【前缀和】【DP】登机(jzoj 5535)

登机 jzoj 5535 题目大意&#xff1a; 有一架飞机&#xff0c;有n个人要登机&#xff0c;每个人的不满值为登机时当前机舱在他所在行前方的人数总和&#xff0c;现在可以把飞机分为k个机舱&#xff0c;使不满值总和最小 原题&#xff1a; 题目描述 小H是机场登机的执行经…

后缀数组学习笔记

后缀数组学习笔记 说在前边 学习了《后缀数组——处理字符串的有力工具》终于感觉入门了&#xff0c;就总结一下&#xff0c;主要是应用原理讲解学习了 大佬Blog一些性质 height数组&#xff1a;定义height[i]suffix(sa[i-1])和suffix(sa[i])的最长公共前缀&#xff0c;也就是排…

CF140C-New Year Snowmen【优先队列】

正题 题目链接:https://www.luogu.com.cn/problem/CF140C 题目大意 nnn个雪球&#xff0c;一个雪人需要用333个不同大小的雪球堆起&#xff0c;求最多雪人。 解题思路 我们每次拿相同雪球中最多的三个来堆即可&#xff0c;用优先队列维护。 时间复杂度O(nlog⁡n)O(n\log n)O…

基于.net standard 的动态编译实现

在前文[基于.net core 微服务的另类实现]结尾处&#xff0c;提到了如何方便自动的生成微服务的客户端代理&#xff0c;使对于调用方透明&#xff0c;同时将枯燥的东西使用框架集成&#xff0c;以提高使用便捷性。在尝试了基于 Emit 中间语言后&#xff0c;最终决定使用生成代码…

线段树动态开点区间加区间求和

线段树动态开点区间加区间求和 题目来源&#xff1a; 陕西师范大学第七届程序设计竞赛网络同步赛 H. 万恶的柯怡 思想&#xff1a; 保证叶子节点被完整的覆盖&#xff0c;需要开节点&#xff0c;就把左右儿子都开出来&#xff0c;其余和普通线段树一样。 tips&#xff1a; 用结…

初一模拟赛总结(6.6 my brother高考前一天,加油!(。・`ω´・。))

成绩&#xff1a; 注&#xff1a;rankrankrank是有算其他$dalao的 T1T1T1好像因为精度问题被卡了 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111hkyhkyhky180180180100100100000808080000222whdwhdwhd130130130100100100000202020101010222lyflyflyf13…

P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】

正题 题目链接:https://www.luogu.com.cn/problem/P1337 题目大意 nnn个点有重量wiw_iwi​&#xff0c;求重心。 解题思路 模拟退火随机找一个重心然后不断接近即可。 codecodecode #include<cstdio> #include<cstring> #include<algorithm> #include<…

基于阿里云 DNS API 实现的 DDNS 工具

0.简要介绍0.1 思路说明AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具&#xff0c;借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能。工具核心就是调用了阿里云 DNS 的两个 API &#xff0c;一个 API 获取指定域名的所有解析记录&#xff0c;然后通过比对与当前…

【拓扑排序】【DP】奖金(ssl 1325)

奖金 ssl 1325 题目大意&#xff1a; 有n个人&#xff0c;某个人要比另外一个人的工资高&#xff08;工资最低为100&#xff0c;最少多1元&#xff09;&#xff0c;问最少发多少工资 原题&#xff1a; 题目描述 由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出&#x…

网络流24题

网络流24题 说在前边 一直没有完整的刷过这套题&#xff0c;打算最近一点点刷掉通过《最小割模型在信息学竞赛中的应用》及《浅析一类最小割问题》学习常规建图技巧飞行员配对方案问题 二分图最大匹配 #include <bits/stdc.h> typedef long long ll; const int inf 0x3f…

P3959-宝藏【模拟退火】

正题 题目链接:https://www.luogu.com.cn/problem/P3959 题目大意 nnn个点&#xff0c;mmm条边&#xff0c;求一棵有根生成树权值最小。对于一条边(fa,x,w)(fa,x,w)(fa,x,w)会产生权值depfa∗wdep_{fa}*wdepfa​∗w。 解题思路 我们模拟退火每次随机一个序列&#xff0c;然后…

ASP.NET Core Web API 集成测试中使用 Bearer Token

在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, 例如里面去掉了用户身份验证相关的中间件.但是有些被测试的行为里面需要用到身份/授权信息.所以本文就介绍一下在API集成…

桐桐的雷达

桐桐的雷达 题目大意&#xff1a; 有一堆数字&#xff0c;并给出一个范围&#xff0c;判断不在范围内的数字是否多过10%&#xff0c;若不多过&#xff0c;那输出范围内数字的平均值 原题&#xff1a; 题目描述 桐桐在去广州的路上&#xff0c;对高速公路上的测速雷达产生了…

Codeforces Round #497 (Div. 1)

Codeforces Round #497 (Div. 1) A. Reorder the Array 先满足数值较小的位置&#xff0c;每次找恰好大于这个值的一个值即可。 #include <bits/stdc.h> #define rep(i,a,b) for(int ia;i<b;i) #define pb push_back typedef long long ll; const int N 100200; usin…

jzoj6824-[2020.10.17提高组模拟]英雄联盟【期望】

正题 题目大意 开始暴击率为xxx&#xff0c;每次失败后都会增加xxx&#xff0c;成功后重置&#xff0c;然后求攻击1010610^{10^6}10106次后的暴击次数除以1010610^{10^6}10106 解题思路 定义ansansans为期望攻击多少次后暴击&#xff0c;然后答案为1ans\frac{1}{ans}ans1​。…

【模拟】桐桐的游戏

桐桐的游戏 题目大意&#xff1a; 有一个用数组成的环要从1跳到z&#xff08;有些点不能跳&#xff09;&#xff0c;每次跳的步数最少有多少步 原题&#xff1a; 题目描述 桐桐最近在玩一个跳棋游戏&#xff0c;规则是&#xff1a;有个圆圈&#xff0c;分成N等分&#xff…

ASP.NET Core 应用发布与部署指南

一、前言本篇主要包含哪些内容&#xff1f;将项目发布到本地目录将项目传输到服务器并配置启动&开机自动启动将Nginx作为访问入口&#xff0c;配置反向代理本篇环境信息开发环境&#xff1a;用途工具&版本操作系统Windows 10开发工具Visual Studio 2017&#xff08;15.…

jzoj6826-[2020.10.17提高组模拟]隔膜【博弈论】

正题 题目大意 n∗nn*nn∗n的矩形&#xff0c;每一个人操作时如果棋盘上有一个k∗kk*kk∗k的矩形空地就可以选择一个点堵上。如果没有就失败了&#xff0c;求必胜方。 解题思路 如果场地上有一个位置堵上后即可堵上所有k∗kk*kk∗k的矩形那么这个点被堵住后就赢了&#xff0c;…

牛客网暑期ACM多校训练营(第一场)

牛客网暑期ACM多校训练营&#xff08;第一场&#xff09; A. Monotonic Matrix 考虑0和1的分界线&#xff0c;1和2的分界线&#xff0c;发现问题可以转化为两条不互相穿过的路径的方案数&#xff08;可重叠&#xff09;&#xff0c;题解的做法就是把一条路径斜着平移&#xff0…