HDU 5903 Square Distance (贪心+dp)

避开ns-3学习深坑:用sns3模块快速搭建GEO卫星通信仿真(附GitHub代码解读) 本文介绍了如何使用sns3模块快速搭建GEO卫星通信仿真环境,绕过复杂的ns-3底层细节。通过详细的Linux环境配置、sns3模块安装和示例代码解读,帮助开发者快速上手卫星通信仿真,并提供了常见问题的解决方案和性能优化技巧。 阅读详情

Square Distance

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 192    Accepted Submission(s): 61


Problem Description
A string is called a square string if it can be obtained by concatenating two copies of the same string. For example, "abab", "aa" are square strings, while "aaa", "abba" are not.

Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different.

Peter has a string s=s1s2...sn of even length. He wants to find a lexicographically smallest square string t=t1t2...tn that the hamming distance between s and t is exact m . In addition, both s and t should consist only of lowercase English letters.
 

Input
There are multiple test cases. The first line of input contains an integer T , indicating the number of test cases. For each test case:

The first contains two integers n and m (1≤n≤1000,0≤m≤n,n is even) -- the length of the string and the hamming distance. The second line contains the string s .
 

Output
For each test case, if there is no such square string, output "Impossible" (without the quotes). Otherwise, output the lexicographically smallest square string.
 

Sample Input
  
3 4 1 abcd 4 2 abcd 4 2 abab
 

Sample Output
  
Impossible abab aaaa
 

【题意】给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s,要求字典序最小的答案
【解题方法】参考: http://www.cnblogs.com/nicetomeetu/p/5905924.html
       把字符串折半,分成0 - n/2-1 和 n/2 - n-1

  dp[i][j] 表示 第i位及之后的总代价为j可不可行   

  从第 n/2-1 位推回第 0 位, 若dp[0][m] = 1,则存在   

  然后贪心对每一位从'a'试到'z',选取接下来存在解的字符

【AC 代码】

//
//Created by just_sort 2016/9/26 9:58
//Copyright (c) 2016 just_sort.All Rights Reserved
//

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1005;
int dp[maxn][maxn];//dp[i][j]表示第i位及之后的总代价为j是否可行
char s[maxn];
int main()
{
    int T,n,m;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        scanf("%s",s);
        //INIT
        memset(dp,0,sizeof(dp));
        dp[n/2][0] = 1;
        //change state
        for(int i=n/2; i>=0; i--){
            if(s[i] == s[i+n/2]){
                for(int j = 0; j <= m; j++)   dp[i][j] = dp[i+1][j]; //no change
                for(int j = 0; j <= m-2; j++) if(dp[i+1][j]) dp[i][j+2] = 1; //change two
            }else{
                for(int j = 0; j <= m-1; j++) if(dp[i+1][j]) dp[i][j+1] = 1; //change one
                for(int j = 0; j <= m-2; j++) if(dp[i+1][j]) dp[i][j+2] = 1; //change two
            }
        }
        //get ans
        if(!dp[0][m]){
            puts("Impossible");
            continue ;
        }
        int k = m;
        for(int i = 0; i < n/2; i++)
        {
            for(int j = 0; j < 26; j++){
                int p = 0;
                if(s[i] != j+'a') p++;
                if(s[i+n/2] != j+'a') p++;
                if(dp[i+1][k-p]){
                    s[i] = j + 'a';
                    s[i+n/2] = j + 'a';
                    k = k - p;
                    break;
                }
            }
        }
        puts(s);
    }
    return 0;
}



免费获取船舶轨迹数据?手把手教你用Python处理中国海洋卫星AIS数据 本文详细介绍了如何免费获取中国海洋卫星AIS数据,并使用Python进行船舶轨迹数据的处理与分析。从数据源评估到自动化处理流水线,再到高级分析与可视化技巧,手把手教你避开常见问题,实现高效数据处理。特别适合航运数据分析、物流优化和海上安全研究等领域的研究者和开发者。 阅读详情

相关推荐

华为/H3C/锐捷交换机配置命令对比表:一张图搞定VLAN划分与端口设置

本文详细对比了华为、H3C、锐捷三大品牌交换机在VLAN划分与端口设置中的配置命令差异,提供从基础配置到高级功能的横向对比表,帮助网络工程师快速掌握多品牌设备混用环境下的配置技巧,提升工作效率。

rust6ferris的博客 700

HDU 5903 Square Distance (DP)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5903 题目大意:给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s,要求字典序最小的答案。 解题思路:dp[i][j]表示i~n这段位置,花费j是否合法,然后接下里就是贪心一下就可以了。转移方程看代码。倒着DP是因为要求字典序最小,并且要构造出

blanKey的博客 397

模型检测--工具KeYmaera

论文:KeYmaera: A Hybrid Theorem Prover for Hybrid Systems 作者:Andre Platzer and JanKeYmaera摘要1 介绍2用于混合系统的KeYmaera验证工具3混合系统,混合自动机和混合程序 摘要 KeYmaera是一种用于混合系统的混合验证工具,它结合了演绎,实数代数和计算机代数证明者技术。它是自然的自动和交互式定理证明器 混合系统的规范和验证逻辑。 KeYmaera支持差分动态逻辑,它是用于混合程序的实值一阶动态逻辑,是混合自动机的程

ziigea的博客 1077

hdu 5903 - 模拟

题目链接:点击打开链接 题解思路:令len = n/2;题目要求我们操作次数正好m的最小字典序,那么就分两种情况1:str[i]==str[i+len],此时可以不操作,也可以操作两步,也就是使两个字母都变成另一个字母; 我们可以设一个左右边界l,r。你会发现当l==0时奇数项是取不到了,这是就是任意的str[i]==str[i+len]的情况,当然我们一开始肯定要保证l=l。2:当s

过路人丶的博客 284

使用python对创芯科技CANalyst-II分析仪进行二次开发(详细教程)

使用python对创芯科技CANalyst-II分析仪进行二次开发

ningqingzy的博客 1万+

深度学习模型设计的方法和技巧

设计神经网络模型是一个迭代的过程,需要不断试验和调整各个组成部分,以达到最佳性能。同时,遵循良好的工程实践,如模块化设计、版本控制、文档记录等,也是成功的关键。

xw555666的博客 4027

计算两个点云之间的欧式距离(square_distance);点云之间距离 pytorch

假设用 tensor 保存了两个点云,现在要求出点云中任意一对点的欧式距离,我们不必使用两个for循环进行这种遍历计算,我们可以使用tensor操作方便的计算出点云之间的距离。 用一句话概括就是: 将 计算(x-y)^2 变为 计算 x^2 + y^2 -2xy 代码中前面注释给出了参数的含义, 代码中每行有注释,也挺容易看懂的 def square_distance(src, dst, normalised = False): """ Calculate Euclid distance

qq_24884193的博客 3540

SAP MM ME21N保存前检查增强

想在ME21N保存前做一些数据检查, 可以做一个增强功能,  运行 CMOD 新增,   增强接口 输入 MM06E005  (  EXIT_SAPMM06E_012 ) ,在 NCLUDE ZXM06U43 .  里写代码功能。  例子如下: *&---------------------------------------------------------------------*

heng0757的专栏 1万+

卡方距离——Chi-square Distance

卡方距离定义

YuYuFlyLi的专栏 2万+

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 437

全能媒体工具深度测评(下篇一):AI图文生成+全能解压+图片去文字,一键搞定素材精修

解压50多种格式,文生图,图生图

cs821984831的博客 40

Pointnet++代码详解(二):square_distance函数

square_distance函数主要用来在ball query过程中确定每一个点距离采样点的距离。函数输入是两组点,N为第一组点的个数,M为第二组点的个数,C为输入点的通道数(如果是xyz时C=3),返回的是两组点之间两两的欧几里德距离,即N×M的矩阵。由于在训练中数据通常是以Mini-Batch的形式输入的,所以有一个Batch数量的维度为B。 def square_distance(sr...

weixin_42707080的博客 2452

军品研制过程-转阶段

介绍军品转阶段评审

Abel的博客 2万+

HDU 5903 - Square Distance (贪心+dp)

题意:      给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s,      要求字典序最小的答案      分析:      把字符串折半,分成0 - n/2-1 和 n/2 - n-1   dp[i][j] 表示 第i位及之后的总代价为j可不可行      从第 n/2-1 位推回第 0 位, 若dp[0][m] = 1,则存在   

Ezereal的博客 446

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hdoj 5903 Square Distance 【贪心 + 数学】

无聊写了一发,莫名1A掉了。不知道题解dpdp怎么个写法 (ˇˍˇ) 想~ hdoj 5903 Square Distance 题意:给定一个偶数长度的字符串strstr,让你构造一个字典序最小的字符串ss,使得两串中不同字符个数正好为mm个,要求ss串从中间截开后得到的两段字符串完全相同。 发现 若str[i]!=str[i+n/2]str[i] \,\,!= \,str[i+n/2],

世界很大 607

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu 5903 Square Distance

这题题解dp不懂 因为不知道它怎么记录dp的答案的 字符串那么长 我是贪心过得,当时还被四个人hack,都没成功,hhhhh 大意就是优先从头取字典序小的字母,担也要让后面不管怎么取都合法 #include<bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; const int M...

diankeng5481的博客 129

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu 5903 Square Distance(dp)

Problem Description A string is called a square string if it can be obtained by concatenating two copies of the same string. For example, "abab", "aa" are square strings, while "aaa", "abba" ...

awow80285的博客 161

HDU 5903 Square Distance

$dp$预处理,贪心。 因为$t$串前半部分和后半部分是一样的,所以只要构造前一半就可以了。 因为要求字典序最小,所以肯定是从第一位开始贪心选择,$a,b,c,d,...z$,一个一个尝试过去,如果发现某字符可行,那么该位就选择该字符。 第$i$位选择字符$X$可行的条件: 记这一位选择字符$X$的情况下,对$dis$的贡献为$Q$,$1$至$i-1$位对$dis$贡献和为$F$; 如果...

weixin_34302561的博客 115

HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )

题意:   给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s,   要求字典序最小的答案 分析:   把字符串折半,分成0 - n/2-1 和 n/2 - n-1   dp[i][j] 表示 第i位及之后的总代价为j可不可行   从第 n/2-1 位推回第 0 位, 若dp[0][m] = 1,则存在  ...

weixin_34029680的博客 141

平方欧几里得距离(Squared Euclidean Distance) 和 L2 距离(欧几里得距离,Euclidean Distance)

这里梯度不会因为平方根的影响而变小,梯度的大小只与点的间距成线性关系。当 ( A ) 和 ( B ) 相距较远时,分母变大,导致梯度变小。的主要区别在于它们的计算公式、梯度特性以及在深度学习中的应用。,如果你的训练过程中梯度更新不稳定,可能会收敛较慢,可以考虑。PyTorch 默认。

大多_C的博客 2221

游戏开发:为何使用平方距离而非距离

游戏开发中,计算距离是一个常见的操作,尤其是在路径寻路、碰撞检测和范围检测等方面。平方距离通常被使用而不是直接计算距离的原因

nobody_kwon的博客 1096

Chi Square Distance

The chi squared distance d(x,y) is, as you already know, a distance between two histograms x=[x_1,..,x_n] and y=[y_1,...,y_n] having n bins both. Moreover, both histograms are normalized, i.e. their

Hard Working 6833

hdu 5903 Square Distance

需要DP预处理。    因为字符串可以被分成两段相同的,d(i,j)表示从i~n/2-1,花费j是否可行   转移方程: //边界处理 memset(dp,0,sizeof(dp)); dp[n/2][0]=1; for(int i=n/2-1;i>=0;--i){ if(s[i]==s[i+n/2]){

flyawayl的博客 169

卡方距离-Chi-square Distance

理解:https://blog.youkuaiyun.com/yuyuflyli/article/details/42834603/ chi2_contingency与chisquare之间的区别: chi2_contingency:独立性检验 chisquare:拟合度检验 https://stats.stackexchange.com/questions/110718/chi-squared-te...

Jessica__Chan的博客 2294

CGAL中函数squared_distance使用细则

本文详细分析了CGAL库中的核心几何算法实现,重点剖析了squared_distance函数的计算原理与优化技术。主要内容包括:1) 点到线段距离的数学推导,通过向量投影和参数化分析实现高效计算;2) 三点共线判定的多种数学方法比较,包括叉积法、行列式法和斜率法;3) CGAL特有的精确算术实现机制和数值稳定性优化。这些算法在计算机图形学、机器人路径规划等领域具有广泛应用,文档通过伪代码和具体示例展示了算法实现细节与性能优化技巧。

yiyidedakeaiya的博客 956
上一篇: 玲珑杯 1014 - Absolute Defeat
下一篇: 玲珑杯 1008 Spoon Devil Love Arithmetic Again
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值