洛谷 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把最小 ...
随机推荐
- 【react】---react中使用装饰器
一.creact-react-app中使用装饰器 运行 npm run eject 可以让由create-react-app创建的项目的配置项暴露出来 此时,项目中多了一个config文件,并且各个配 ...
- leetcode python反转字符串中的单词
# Leetcode 557 反转字符串中的单词III### 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. **示例1:** 输入: "L ...
- Money
/** * www.yiji.com Inc. * Copyright (c) 2012 All Rights Reserved. */package com.yjf.common.lang.util ...
- 字符串连接之“+”和append
在解决这个问题之前,需要了解的内容: 1.String是只读字符串,即String引用的字符串内容是不可改变的. 1 String s1 = "abc"; 2 s1 = " ...
- 获取Windows某一目录下的所有文件名
#include <sys/types.h> #include <dirent.h> std::vector<std::string> get_all_fi ...
- Neo4J(Cypher语句)初识
欢迎各路大神临幸寒舍 以下节点标签为people,friend,用户自己也可以设置成其他标签,查询时需要用到标签.这个标签可以类比为关系数据库中的表名 创建节点.关系 创建节点(小明):create ...
- CentOS 7 安装 nginx1.15
1,安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel SSL功能需要openssl库 gzip模块需要z ...
- springboot集成redis报错-ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig
当使用Springboot 2.0以上版本集成redis的时候遇到报错信息如下: Application run failed org.springframework.beans.factory.Un ...
- shell专用参数变量
- asp.net网站Application_Start疑是不执行的现象
今天遇见了一个很诡异的事情,发布了新代码后,发现在Application_Start中读取的一些配置参数变为空了,最开始我以为是什么特殊的原因程序没有执行Application_Start,导致它们的 ...