tc-551-div2
来源:互联网 发布:k30平板荷载试验算法 编辑:程序博客网 时间:2024/05/22 07:28
A题
给一个字符串,要求重新排列使得满足“相邻两个颜色不同”这个条件的只有一个,问排列次数。
分情况:
1. 如果只有一种颜色,那么为1;
2.如果有两种颜色,要么A……AB……B,要么反过来,为2
3.如果有三种颜色,是不可能的,为0;
在数字符串中有多少不同的字符的过程中,可以采用“排序+删除相邻相同元素”的方法":
#include <cstdio>#include <string>#include <algorithm>#include <iostream>using namespace std;int main(){ string a = "abcda"; sort(a.begin(), a.end()); a.erase(unique(a.begin(), a.end()), a.end()); cout << a << endl; return 0;}
B.题
给一个字符串和一个数字k,允许两个相邻的字符进行交换为1次操作,问最多k次操作后,连续最长的元素的长度。
1. 判断连续最长的元素的长度的元素种类不可能,因此只能采取枚举的方法。
2.如果是第k个元素,那么求得以元素k为中心可以聚集多少元素,取最大值即为所求。
复杂度:
O(50 * 50)
C题:
如果采用组合数学的方法很难求得公式。
如果采用dfs的方法,复杂度是2^50太大了。
考虑到有许多情况是相同的,比如说abc***和bac***后面的情况是相同的,每种情况所需要的参数是a,b,c,last;(a表示剩下a可用的个数,b表示剩下的b可用的个数,c表示剩下的c可用的个数)所以总共的dp情况有50 * 50 * 50 * 3种,可以很好解决。
引用的一个小技巧:
long long &res = dp[a][b][c][last];
如此便可直接使用dp[a][b][c][last];
- tc-551-div2
- TC SRM 551 div2 题解
- TC SRM 152 DIV2
- TC SRM 540 DIV2
- TC SRM 548 DIV2
- TC SRM 400 DIV2
- TC SRM 549 DIV2
- TC SRM 552 DIV2
- tc-552-div2
- TC SRM 553 DIV2
- TC 555 div2
- TC SRM 571 div2
- TC SRM580 DIV2
- TC SRM599 div2 p950
- TC SRM573 div2 p1000
- TC SRM601 div2 p1000
- TC SRM 604 div2
- tc srm623 div2
- 《jsp连接数据库大全》
- group by havding order by
- ios中的图标
- 图形验证码生成工具类
- js正则表达式大全
- tc-551-div2
- 文件的操作
- 基于libvirt API监测xen初探
- UTF-8 和 GBK 的 NSString 相互转化的方法
- 飞机座位(数组练习)
- 关于gdb debug android
- C++指针
- Tomcat Introduction
- Xen api 的层次结构