洛谷 P2652 同花顺(题面)

手动模拟了一下,其实离散化排序可以起很大作用
题目要求花色相同,数字连续,那么我们要做的就是找一种花色,并提取出其中一串数字留下
那些舍弃的牌换成相应花色,并和之前留下的一串数字凑成k~(k+n-1)   共n个
由上文可推出:留下的数字中最大值与最小值的差不能超过n-1,否则无法凑出连续的一串数
那我们便排序:把花色相同的放一块,相同花色的数字递增(递减也无所谓)排列,去掉重复的牌后,
找一串花色相同 且 数字最大值与最小值的差不超过n-1 的牌,
因为我们要去掉最少的牌,所以就找到!最长!的一串符合上文描述的牌(也就是留下最多的牌)
 答案=n-长度   即可

//请别嫌弃我的代码(笑
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#define rg register
using namespace std;
int n,b[][],result=;
struct pp
{
int a,b;
}card[];
// Vv + vV
inline int read()
{
char q;int save=,w=;
while(q<''||q>''){if(q=='-')w=-;q=getchar();}
while(q>=''&&q<='')save=save*+q-'',q=getchar();
return w*save;
}
inline bool Cwen(const pp &x,const pp &y)//Cwen函数就是用在sort里的判断函数
{
if(x.a==y.a)return x.b<=y.b;//花色相同时按数字大小排
else return x.a<y.a; //把花色相同的放到一坨(好像混进了什么奇怪的东西)
}
// << + >>
int main()
{
n=read();
rg int i,j;
for(i=;i<=n;++i)
card[i].a=read(),card[i].b=read();
sort(card+,card+n+,Cwen);
j=; //j用来指b数组
for(i=;i<=n;++i)
{
if(card[i].a!=card[i+].a || card[i].b!=card[i+].b) //去重
b[++j][]=card[i].a, b[j][]=card[i].b; //赋进b数组
}
rg int len=j;//把b数组的长度记到len里
for(i=;i<=len;++i)
{
int can=;//can表示以i为终点的一段能达到多长
for(j=i-;j>=;--j)
{
if(b[j][]==b[i][] && b[i][]-b[j][]<n)
can++;
else
break;//一旦断了就跳出循环找下一个i
}
result=result<can+?can+:result;//can+1是因为 i自己这张牌 在里层循环中没被算进去
}
printf("%d\n",n-result);
return ;
}

洛谷 P2652 同花顺(离散化)的更多相关文章

  1. 洛谷P2652 同花顺

    P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...

  2. 洛谷 P2652 同花顺

    P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...

  3. 洛谷 P4396 (离散化+莫队+树状数组)

    ### 洛谷P4396  题目链接 ### 题目大意: 有 n 个整数组成的数组,m 次询问,每次询问中有四个参数 l ,r,a,b .问你在[l,r] 的区间内的所有数中,值属于[a,b] 的数的个 ...

  4. bzoj3295 洛谷P3157、1393 动态逆序对——树套树

    题目:bzoj3295 https://www.lydsy.com/JudgeOnline/problem.php?id=3295 洛谷 P3157(同一道题) https://www.luogu.o ...

  5. 洛谷2344 奶牛抗议(DP+BIT+离散化)

    洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...

  6. 「洛谷1884」「USACO12FEB」过度种植【离散化扫描线】

    题目链接 [洛谷传送门] 题解 矩阵面积的并模板.(请求洛谷加为模板题) 很明显是要离散化的. 我们将矩阵与\(x\)轴平行的两个线段取出来.并且将这两个端点的\(x1\)和\(x2\)进行离散化. ...

  7. 【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)

    题目来源:洛谷P1052 思路 一开始觉得是贪心 但是仔细一想不对 是DP 再仔细一看数据不对 有点大 如果直接存下的话 显然会炸 那么就需要考虑离散化 因为一步最大跳10格 那么我们考虑从1到10都 ...

  8. 洛谷P1712 [NOI2016]区间 尺取法+线段树+离散化

    洛谷P1712 [NOI2016]区间 noi2016第一题(大概是签到题吧,可我还是不会) 链接在这里 题面可以看链接: 先看题意 这么大的l,r,先来个离散化 很容易,我们可以想到一个结论 假设一 ...

  9. 洛谷P4180 [Beijing2010组队]次小生成树Tree(最小生成树,LCT,主席树,倍增LCA,倍增,树链剖分)

    洛谷题目传送门 %%%TPLY巨佬和ysner巨佬%%% 他们的题解 思路分析 具体思路都在各位巨佬的题解中.这题做法挺多的,我就不对每个都详细讲了,泛泛而谈吧. 大多数算法都要用kruskal把最小 ...

随机推荐

  1. POJ 1797 Heavy Transportation (最大生成树)

    题目链接:POJ 1797 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter pro ...

  2. Java开发最常犯的10个错误,打死都不要犯!

    原文:http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/ 译文:cnblogs.com/chenpi/p ...

  3. dubbo的一些特性理解一下

    还有 启动检查.负载均衡.多协议支持 等 待总结

  4. 18-python基础-字符串(1)

    1.字符串的定义 字符串就是一串字符,是编程语言中表示文本的数据类型. 在python中可以使用一对双引号“”或者一对单引号‘’定义一个字符串. 可以使用索引获取一个字符串中指定位置的字符,索引计数从 ...

  5. USACO 2014 US Open Fair Photography /// 技巧

    题目大意: 给定n头奶牛 给定n头奶头所在位置和品种 品种只有G H两种 求一段区间的长度 要求区间内包含的品种满足各品种的数量相同 将一个品种的值设为1 另一个设为-1 假设 i<j 而 1~ ...

  6. Java-技术专区-问题专区-应该了解的基础技术点

    Java基础 Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何 ...

  7. 怎么在vue-cli中利用 :class去做一个底层背景或者文字的点击切换

    // html <div class="pusherLists" :class="{hidden: isHidden}"> <span @cl ...

  8. c# 排序算法可视化

    最近在 b 站上看了一个排序算法的动画,所以想自己写一个类似的项目. 项目使用 Graphics 在 winform 的窗体上绘图.(新建项目时选择控制台项目,注意添加引用:System.Drawin ...

  9. 最新版react16.9中按需加载antd和使用less

    使用create-react-app创建应用 yarn create react-app my-app cd my-app yarn start 引入 antd 这是 create-react-app ...

  10. SQLServer存储过程学习记录

    简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理. 一.存储过程的概述 SQL Server中的存储过程是使用T_SQL编写的代码段.它的目的在于能够方便 ...