题目链接:https://codeforc.es/contest/1070/problem/J

题意:给出一个长度为 k 的字符串,选出 n 个和 m 个不同位置的字符构成两个字符串,使得两个字符串相同字母的对数最少。

题解:在最优解的情况下,两个字符串相同的字母只有一个(假设有两种相同的字母,调换他们的位置变得只有一种相同字母的时候更优,可以自行草稿纸上写下不等式证明),可以枚举相同的字母,剩下的字母做 01 背包判断可以构成的最大长度即可。

 #include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mst(a,b) memset((a),(b),sizeof(a))
#define mp(a,b) make_pair(a,b)
#define pi acos(-1)
#define pii pair<int,int>
#define pb push_back
const int INF = 0x3f3f3f3f;
const double eps = 1e-;
const int MAXN = 2e5 + ;
const int MAXM = 1e3 + ;
const ll mod = 1e9 + ; char s[MAXN];
int cnt[], dp[MAXN]; int main() {
#ifdef local
freopen("data.txt", "r", stdin);
#endif
int t;
scanf("%d",&t);
while(t--) {
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
scanf("%s",s + );
mst(cnt, );
for(int i = ; i <= k; i++) cnt[s[i] - 'A' + ]++;
ll ans = 1ll * n * m;
for(int i = ; i <= ; i++) {
for(int j = ; j <= k; j++) dp[j] = ;
dp[] = ;
for(int j = ; j <= ; j++) {
if(i == j) continue;
for(int h = k; h >= cnt[j]; h--) dp[h] |= dp[h - cnt[j]];
}
for(int j = ; j <= k; j++) {
if(!dp[j]) continue;
int x = max(, n - j), y = max(, m - (k - cnt[i] - j));
if(x + y <= cnt[i]) ans = min(ans, 1ll * x * y);
}
}
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. UWP 应用获取 Localhosts 访问权限
  2. Android Studio的简单设置:
  3. zoj 3795 Grouping tarjan缩点 + DGA上的最长路
  4. 使用Python获取Linux系统的各种信息
  5. html标记列表应用
  6. React-非dom属性-dangerouslySetInnerHTML标签
  7. CSS 初体验之一
  8. DM8168 GPIO驱动与測试程序
  9. 面试时,问哪些问题能试出一个Android应用开发者真正的水平?
  10. CentOS 6.8yum源的配置
  11. java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选
  12. 运维面试题之k8s
  13. webpack学习笔记(四)
  14. 实现CNN卷积神经网络
  15. MySQL5.7 GTID学习笔记
  16. java并发编程艺术
  17. Python的虚拟环境virtualenv
  18. HDU 1425 sort C语言实现快速排序
  19. 【设计模式】—— 装饰模式Decorator
  20. LPC43xx SGPIO Configuration -- Why not use GPDMA ?

热门文章

  1. 并发一:Java内存模型和Volatile
  2. Simple Library Management System HDU - 1497(图书管理系统)
  3. 数据的特征预处理?(归一化)&amp;(标准化)&amp;(缺失值)
  4. re(模块正则表达式)
  5. linux学习笔记(1) -- 关于命令的一些操作
  6. Elastic Search快速上手(3):搜索
  7. java都13了, 8的新特性你还没不会用吗
  8. StoneTab标签页CAD插件 3.2.3
  9. uni-app使用Canvas绘图
  10. Pattern Recognition and Machine Learning-01-Preface