Codeforces Round #283 (Div. 2)---C. Removing Columns
来源:互联网 发布:淘宝好的精品店 编辑:程序博客网 时间:2024/05/20 06:26
You are given an n × m rectangular table consisting of lower case English letters. In one operation you can completely remove one column from the table. The remaining parts are combined forming a new table. For example, after removing the second column from the table
abcdedfghijk
we obtain the table:
acdefghjk
A table is called good if its rows are ordered from top to bottom lexicographically, i.e. each row is lexicographically no larger than the following one. Determine the minimum number of operations of removing a column needed to make a given table good.
The first line contains two integers — n and m (1 ≤ n, m ≤ 100).
Next n lines contain m small English letters each — the characters of the table.
Print a single number — the minimum number of columns that you need to remove in order to make the table good.
1 10codeforces
0
4 4casecaretestcode
2
5 4codeforcescodeforces
4
In the first sample the table is already good.
In the second sample you may remove the first and third column.
In the third sample you have to remove all the columns (note that the table where all rows are empty is considered good by definition).
Let strings s and t have equal length. Then, s is lexicographically larger than t if they are not equal and the character following the largest common prefix of s and t (the prefix may be empty) in s is alphabetically larger than the corresponding character of t.
分析:也是基于暴力,中间有了细节的处理。
AC代码:
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define INF 0x7fffffffstring s[105]; //mapint flag[105], del[105]; //del[]是否删除某列,flag[]是否反序int main(){ #ifdef sxk freopen("in.txt","r",stdin); #endif int n, m; while(scanf("%d%d",&n, &m)!=EOF) { memset(flag, 0, sizeof(flag)); memset(del, 0, sizeof(del)); for(int i=0; i<n; i++) cin >> s[i]; for(int i=0; i<m; i++){ for(int j=1; j<n; j++){ if(!flag[j]) if(s[j-1][i] > s[j][i]) { del[i] = 1; } } if(!del[i]){ for(int j=1; j<n; j++) if(s[j-1][i] < s[j][i]) { flag[j] = 1; } } } int ans = 0; for(int i=0; i<m; i++) ans += del[i]; printf("%d\n", ans); } return 0;}
- Codeforces Round #283(div.2) 496C C. Removing Columns
- Codeforces Round #283 (Div. 2)---C. Removing Columns
- Codeforces Round #283 (Div. 2)——C. Removing Columns
- Codeforces Round #283 (Div. 2) C. Removing Columns
- Codeforces Round #283 (Div. 2) C. Removing Columns 模拟+构造
- Codeforces Round #283 (Div. 2)-C. Removing Columns
- Codeforces Round #283 (Div. 2) A. Minimum Difficulty B. Secret Combination C. Removing Columns
- Codeforces Round #283 div2 C (div1 A) 496C Removing Columns
- CodeForces 496C Removing Columns
- Removing Columns - CodeForces 496 C 水题
- codeforces 496C Removing Columns 贪心
- codeforces 496C Removing Columns (模拟,思维)
- Codeforces 496C Removing Columns(暴力)
- CodeForces 496C-- Removing Columns-暴力
- Codeforces 496 C Removing Columns【思维】
- Codeforces Round #452 (Div. 2) F. Letters Removing 线段树
- C. Removing Columns
- codeforces #496C# Removing Columns
- MySQL配置文件my-default.ini
- 通讯录(33)
- 模板方法模式
- android 移动 app和pc 浏览器之间的对等通信
- FAQ
- Codeforces Round #283 (Div. 2)---C. Removing Columns
- 表的主键
- Java实现将指定文件夹内的指定类型的文件归类
- 在android中通过intent打开网页
- linux下更改系统默认语言
- App Validation on Xcode 6 GM release
- mysql子查询
- 英语学习
- ListView的几种优化方式