洛谷 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 同花顺(离散化)的更多相关文章
- 洛谷P2652 同花顺
P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...
- 洛谷 P2652 同花顺
P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...
- 洛谷 P4396 (离散化+莫队+树状数组)
### 洛谷P4396 题目链接 ### 题目大意: 有 n 个整数组成的数组,m 次询问,每次询问中有四个参数 l ,r,a,b .问你在[l,r] 的区间内的所有数中,值属于[a,b] 的数的个 ...
- bzoj3295 洛谷P3157、1393 动态逆序对——树套树
题目:bzoj3295 https://www.lydsy.com/JudgeOnline/problem.php?id=3295 洛谷 P3157(同一道题) https://www.luogu.o ...
- 洛谷2344 奶牛抗议(DP+BIT+离散化)
洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...
- 「洛谷1884」「USACO12FEB」过度种植【离散化扫描线】
题目链接 [洛谷传送门] 题解 矩阵面积的并模板.(请求洛谷加为模板题) 很明显是要离散化的. 我们将矩阵与\(x\)轴平行的两个线段取出来.并且将这两个端点的\(x1\)和\(x2\)进行离散化. ...
- 【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
题目来源:洛谷P1052 思路 一开始觉得是贪心 但是仔细一想不对 是DP 再仔细一看数据不对 有点大 如果直接存下的话 显然会炸 那么就需要考虑离散化 因为一步最大跳10格 那么我们考虑从1到10都 ...
- 洛谷P1712 [NOI2016]区间 尺取法+线段树+离散化
洛谷P1712 [NOI2016]区间 noi2016第一题(大概是签到题吧,可我还是不会) 链接在这里 题面可以看链接: 先看题意 这么大的l,r,先来个离散化 很容易,我们可以想到一个结论 假设一 ...
- 洛谷P4180 [Beijing2010组队]次小生成树Tree(最小生成树,LCT,主席树,倍增LCA,倍增,树链剖分)
洛谷题目传送门 %%%TPLY巨佬和ysner巨佬%%% 他们的题解 思路分析 具体思路都在各位巨佬的题解中.这题做法挺多的,我就不对每个都详细讲了,泛泛而谈吧. 大多数算法都要用kruskal把最小 ...
随机推荐
- upc组队赛5 Election of Evil【搜索】
Election of Evil 题目描述 Dylan is a corrupt politician trying to steal an election. He has already used ...
- Java语言基础及java核心
一.Java语言特点 1. 简单 2. 面向对象 3. 分布式 4. 健壮 5. 安全 6. 中性架构跨平台 7. 超强的可移植性 8. 高性能 9. 多线程 二.java的环境变量 JAVA_HOM ...
- JOGL教程
本章介绍了OpenGL,Java OpenGL绑定(GL4java,LWJGL,JOGL)和JOGL比其他的OpenGL的优点. Java支持OpenGL(JOGL)是近期在Java OpenGL图形 ...
- windows 安装虚拟环境
步骤一:安装virtualenv 在windows cmd终端下使用输入:pip install virtualenv 步骤二:新建虚拟环境 在cmd终端输入virtualenv testvir(环境 ...
- 基于MFC的Media Player播放器的制作(1---播放器界面的布局)
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 通过上面的一些预备知识,我们现在就可以自己来制作基于MFC的播放器了,接下来我们讲的是使用MFC制作我们播放器 的界面. 首先,我们我们打 ...
- zabbix主动模式设置
zabbix客户端发数据给服务端分为主被动两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待服务端来取数据. 主动模式: 客户端每隔一段时间主动向服务端发起连接请求--&g ...
- Puppeteer自动化批量上传抖音视频
前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =r ...
- Nodejs入门级基础+实战
这篇随笔将会按序记录如下内容: NodeJs 简介 安装 NodeJs HTTP 模块.URL 模块 CommonJs 和 Nodejs 中自定义模块 NodeJs FS 模块 利用 HTTP 模块 ...
- LeetCode Array Easy 217. Contains Duplicate
Description Given an array of integers, find if the array contains any duplicates. Your function sho ...
- npm 安装扩展模块时,因缓存报错的问题汇总
1.缓存报错问题一 : unexpected end of file 解决方法:运行:npm cache verify 清除缓存 2.缓存报错问题二 : errno -4048(网上一般说 ...