/*
 *区间贪心。前几天刚做了POJ 1328 ...思路完全相同...
 *最多有100个表情,100行文字。遍历寻找每个表情的所在区间。时间复杂度大约在10^5 ~ 10^6 可以接受。
 *然后对每个表情按照右坐标排序。改变表情的最右边的字符。贪心判断是否更改。

*(⊙o⊙)… 每一行的里的表情可能是重复的。所以判断每行要更改的最少字母数。最后求和。很傻逼的全都放一起了。然后。。。。幸福的wa了。
 */

 #include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std; char emo[][];
char txt[][];
int n, m;
int cnt;
int ans; struct E
{
int l, r;
} e[]; int cmp(E a, E b)
{
if (a.l != b.l)
return a.l < b.l;
return a.r < b.r;
} void ask()
{
for (int i=; i<m; ++i) // 遍历文档
{
int lent = strlen(txt[i]);
cnt = ;
for (int j=; j<lent; ++j)
{
for (int k=; k<n; ++k) //遍历表情看是否在当前文档中
{
bool flag = false;
int lene = strlen(emo[k]);
if (j+lene- > lent) continue;
if (txt[i][j] == emo[k][] && txt[i][j+lene-] == emo[k][lene-])
{
flag = true;
for (int p=; p<lene; ++p)
{
if (txt[i][j+p] != emo[k][p])
{
flag = false;
break;
}
}
if (flag)
{
e[cnt].l = j;
e[cnt++].r = j+lene-;
}
}
}
}
e[].l = e[].r = -; // 然而我也不太明白为什么要加上e[0]。
sort(e+, e+cnt, cmp); // 对每个表情按照区间右边的值从大到小排序。 for (int i=cnt-; i>=; --i) // 从后往前遍历。如果上一个的右端点小于当前左端点。ans++。破坏下一个的右端点。
{
if (e[i].l > e[i-].r)
ans += ;
else
{
for (int j=i-; j>=; --j) // 否则直到找到第一个右端点小于当前左端点的位置。破坏它的右端点。ans++。
{
if (e[i].l <= e[j].r);
else
{
i = j+; // 循环结束后还要i--。所以i= j+1。 实际上就是i = j。
ans += ;
break;
}
}
}
} }
} int main()
{
while(cin >> n >> m)
{
if (n == && m == ) break;
for (int i=; i<n; ++i)
{
cin >> emo[i];
}
getchar();
for (int i=; i<m; ++i)
{
gets(txt[i]);
}
ans = ;
ask(); //遍历寻找每个表情的区间范围
cout << ans << endl;
}
return ;
}

HDU 1936 区间贪心的更多相关文章

  1. HDU 2037 今年暑假不AC (区间贪心)

    题意:又是中文题... 析:先说一下区间贪心的一个定理,选择不相交的区间:数轴上有n个开区间(ai, bi).选择尽量多的区间,使得这些区间两两不相交,贪心策略是,一定是选bi小的.(想一下为什么). ...

  2. hdu 5869 区间不同GCD个数(树状数组)

    Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  3. hdu 4283 区间dp

    You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. hdu 5700区间交(线段树)

    区间交 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  5. HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化

    HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...

  6. TZOJ 4007 The Siruseri Sports Stadium(区间贪心)

    描述 The bustling town of Siruseri has just one sports stadium. There are a number of schools, college ...

  7. Hdu 4864(Task 贪心)(Java实现)

    Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...

  8. UVA-11134 Fabled Rooks 贪心问题(区间贪心)

    题目链接:https://cn.vjudge.net/problem/UVA-11134 题意 在 n*n 的棋盘上,放上 n 个车(ju).使得这 n 个车互相不攻击,即任意两个车不在同一行.同一列 ...

  9. Tunnel Warfare HDU 1540 区间合并+最大最小值

    Tunnel Warfare HDU 1540 区间合并+最大最小值 题意 D x是破坏这个点,Q x是表示查询以x所在的最长的连续的点的个数,R是恢复上一次破坏的点. 题解思路 参考的大佬博客 这里 ...

随机推荐

  1. 20145317彭垚《网络对抗》Exp9 Web安全基础实践

    20145317彭垚<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询 ...

  2. Android 手机小闹钟

    Android 手机小闹钟 一.这一篇主要使用系统为我们提供的一个服务AlarmManager来制作一个Android小闹钟,同时还涉及到了自定义主题.判断第一次启动应用.自定义动画.对话框.制作关闭 ...

  3. linux内核分析 第四周

    一.系统调用的三层皮 内核态.用户态 Intel x86 CPU有四个权限分级,0-3.Linux只取两种,0是内核态,3是用户态. 0xc0000000以上的空间只能在内核态下访问 0x000000 ...

  4. SmartOS之以太网精简协议栈TinyIP

    做物联网,没有以太网怎么能行!基于Enc28j60,我们团队独立实现了以太网精简协议栈TinyIP,目前支持ARP/ICMP/TCP/UDP/DHCP,还缺一个DNS就完整了.TinyIP内置一个数据 ...

  5. Python3基础 list remove 删除元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. ZOJ 2083 Win the Game(SG函数)题解

    题意:给一端n块的板,两人玩,每次能涂相邻两块没涂过的板,不能涂的人为输,先手赢输出yes 思路:sg函数打表,练习题 代码: #include<queue> #include<cs ...

  7. Linux环境下一些有用但不常见的命令

    Linux环境下一些有用但不常见的命令 1.获取显卡硬件信息 lspci -vnn | grep VGA -A 12 (若是n卡,则用glxinfo) 2.执行*.sh文件 常见的执行*.sh文件当属 ...

  8. 启动Sql server的服务CMD命令

    启动:net start mssqlserver 停止:net stop mssqlserver

  9. C# Byte[] 数组操作

    byte[] Strbyte = Encoding.GetEncoding("big5").GetBytes(str);            if (Strbyte.Length ...

  10. 获取String类型汉字乱码,如何进行编码

    本文为博主原创,未经允许不得转载: 在解析properties文件中的汉字时,在java代码中解析得到的是一个乱码字符,形如图下: 导致乱码原因:由于在jdk中,默认为gbk编码方式进行编码盒接收的, ...