被子
来源:互联网 发布:java数据结构有哪些 编辑:程序博客网 时间:2024/03/29 08:31
被子(quilt)
10.26
来自atcoder code festival 2017 qual A的C题.主要和字母数目奇偶性相关,选手可以自行去atcoder.jp查看题解(逃
为了尽量卡低错误做法的分数,极限数据进行了捆绑.
严谨(划掉)的题解:
算法1:
直接枚举所有的重新排列方式并检验,可以通过第1,2个测试点.
算法2:
对于n=1的情况,分m为奇为偶两种情况处理.m为偶时只需所有字母为偶数个,m为奇数时需要恰好有一种字母为奇数个.可以通过第3,4个测试点.
算法3:
对于n=2的情况,回文矩阵是两个相同的回文串叠起来.首先判断是否所有字母数目均为偶数,如果不是则无解;如果是,那么两个相同的回文串各占有全部字符的一半,把每个字母的数目都除以2,然后同算法2.可以通过第5个测试点.
算法4:
对于n,m均为偶数的情况,只需要每种字母的数目都是4的倍数.
算法5(标算):
假设行数为n,列数为m.
1.n和m均为偶数(即算法4):
最简单的情况,只需要所有字母的个数都是4的倍数
2.n为偶数,m为奇数:(n为奇数m为偶数的情况相同)
那么在刨掉一个长度为n的回文串之后所有字母的个数都是4的倍数.
于是所有字母的个数还都得是偶数,我们不妨先把所有字母的个数都除以2…
那么除以2之后要有(m-1)n/2个字母可以分成两两一组,还有n/2个字母可以分成每个字母单独一组…
于是数一数除以2之后有多少个字母是奇数个,如果这个数目大于n/2那么没戏,如果这个数目和n/2的奇偶性不同也没戏,否则一定行.
3.n为奇数,m为奇数
首先必然会有一种字母是奇数个,其他字母是偶数个,不满足这个条件就GG了.
如果满足这个条件,为了简化问题再把所有字母个数除以2…
那么还要有(m-1)(n-1)/2个字母可以两两一组,(n-1)/2+(m-1)/2个字母可以每个字母单独一组,然后的判断和2相同.
思路:
简单特判题。。。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define LL long long#define N 210using namespace std;int n, m;int cnt[30];char s[210]; int main(){ freopen ("quilt.in", "r", stdin); freopen ("quilt.out", "w", stdout); int T; scanf("%d", &T); while ( T-- ){ scanf("%d%d", &n, &m); memset(cnt, 0, sizeof(cnt)); for(int i=1; i<=n; i++){ scanf("%s", s+1); for(int j=1; j<=m; j++){ cnt[s[j] - 'a']++; } } int a=0, b=0, c=0; for(int i=0; i<26; i++){ while (cnt[i] >= 4){ cnt[i] -= 4; a++; } if (cnt[i] >= 2){ cnt[i] -= 2; b++; } if (cnt[i]){ c++; } } if( c > 1 || c == 1 && !(n & 1) || c == 1 && !(m & 1)) { printf("No\n"); continue;} if(a < (n / 2) * (m / 2)) { printf("No\n"); continue;} printf("Yes\n"); }}
- 被子
- 被子的选择
- 怀念浆洗被子的童年
- “一辈子”是“一被子”么?
- 怀念浆洗被子的童年
- 我就变个被子出来……
- 私有成员能被子类继承吗?
- 私有对象能被子类继承吗
- 3月不晒被子滋生600万螨虫
- 威威猫系列故事——晒被子
- 静态方法不能被子类覆盖
- 基类protected能被子类直接调用
- java_静态方法能否被子类重写
- 调用被子类重写的方法
- 防止父元素事件被子元素触发
- 原来拉练就是背着被子绕学校走一圈
- java的main方法能不能被子类继承
- 基类的构造函数不会被子类继承!!!
- 飙车(speed)
- 下载、安装、破解IntelliJ IDEA(2017)
- HDU5072 coprime
- szfx
- 决策树(理论)
- 被子
- linux : dir deep erase tools
- java变量与常理
- Python爬虫实战(八):爬取电影天堂的电影下载链接
- 泛型与反射的使用总结之泛型篇
- Python学习笔记(八)—Python和Java(C/C++)的除法与取模的区别
- CSS3蒙版/遮罩、倒影
- vue-devtools学习
- 如何轻松解决kotlin字符串算数等式计算