二次联通门 : LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律

/*
LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律 set启发式合并 题目中给定的代码意思求相同的数中间隔最小的值。 那么维护n个set就好
合并时把小的向大的上暴力合并 用了map所以不用离散化
*/
#include <iostream>
#include <cstdio>
#include <set>
#include <map> #define INF 2147483647 void read (int &now)
{
register char word = getchar ();
int temp = ;
for (; !isdigit (word); word = getchar ())
if (word == '-')
temp = ;
for (now = ; isdigit (word); now = now * + word - '', word = getchar ());
if (temp)
now = -now;
} std :: map <int, std :: set <int> > Need;
int N, M;
int Answer = INF; inline int min (int a, int b)
{
return a < b ? a : b;
} inline void Insert (int pos, int x)
{
std :: set <int> :: iterator now = Need[pos].lower_bound (x);
if (now != Need[pos].end ())
Answer = min (Answer, *now - x);
if (now != Need[pos].begin ())
Answer = min (Answer, x - *-- now);
Need[pos].insert (x);
} int main (int argc, char *argv[])
{
read (N), read (M);
int x, y;
for (int i = ; i <= N; i ++)
{
read (x);
Insert (x, i);
} for (; M; -- M)
{
read (x), read (y); if (x != y)
{
if (Need[x].size () > Need[y].size ())
std :: swap (Need[x], Need[y]);
for (std :: set <int> :: iterator i = Need[x].begin (); i != Need[x].end (); ++ i)
Insert (y, *i);
Need[x].clear ();
}
printf ("%d\n", Answer);
} return ;
}

最新文章

  1. 关于原生JS获取类相关的代码
  2. 并发编程 17—— Lock
  3. fork Bomb
  4. MemoryMappedFile 内存映射文件 msdn
  5. 解压和生成 system.img&amp;data.img ( yaffs2格式)
  6. Windows Azure 网站:应用程序字符串和连接字符串的工作原理
  7. Wifi长距离传输
  8. Dom4J生成xml和包含CDATA问题
  9. HDU1175 连连看(DFS)
  10. golang初识 - install go on ubuntu
  11. js中字符串和数组的使用
  12. Click()与Submit()
  13. Sublime text3常用的插件功能和常用的快捷键
  14. Spring Schedule实现定时任务
  15. DOM常用的属性和方法
  16. oracle 存储过程模板
  17. 51nod 1009 - 数字1的数量 - [数位DP][模板的应用以及解释]
  18. RNN总结
  19. Sencha Cmd创建Ext JS示例项目
  20. Linux中使用iptables开放特定端口

热门文章

  1. SQLSERVER查询存储过程内容
  2. IdentityServer4 手动验签及日志记录
  3. jquery.fileupload源码解读笔记
  4. Centos7阿里云安装OpenProject-亲测
  5. windows下搭建nginx负载均衡
  6. 使用 pykafka 进行消费
  7. Pytorch 1.0升级到Pytorch 1.1.0
  8. 【转载】C#通过StartWith和EndWith方法判断字符串是否以特定字符开始或者结束
  9. Intellij的Terminal框里输入npm无效
  10. 如何实现高性能的IO及其原理?