11572 - Unique Snowflakes

2023-12-27 03:09
文章标签 snowflakes unique 11572

本文主要是介绍11572 - Unique Snowflakes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第二种

用一个map来存贮

#include <iostream>
#include <map>
#include <algorithm>
using namespace std;#define maxn (int)(1e9)+1int t, n, x, ans, cnt, block;
map<int, int> lastseen;
int main() {cin >> t;while(t--) {cin >> n;lastseen.clear();ans = 0, cnt = 0, block = 0;//ans存储最大序列数,cnt对应当前序列数,block对应上一个重复元素坐标for(int i=1; i<=n; i++) {cin >> x;int lx = lastseen[x];if(lx != 0) {          //如果此数已经存在block = max(block, lx); //当前重复数与上次重复书中最大的那个为现今重复数cnt = i-block-1;//计算去除重复后的新串数,-1是因为下一步的加一,防止多加}cnt++;//子串数加lastseen[x] = i;//更新下标ans = max(ans, cnt);//当前是否为大}cout << ans << '\n';}
}


这篇关于11572 - Unique Snowflakes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541710

相关文章

哈希—— POJ 3349 Snowflake Snow Snowflakes

对应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536KTotal Submissions: 33595 Accepted: 8811 Description You may have heard that no two snowflakes are alike. Y

LeetCode 63 Unique Paths II

题意: 给出一个带有障碍物的棋盘,每次行动向下或向右移动一格,求从左上角到右下角有几种方案。 思路: 简单dp题,假设dp[i][j]表示第i行第j列的方案数,那么状态转移方程就为 dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 。 注意下边界条件就好了,而且对于障碍物,直接把dp清零即可。 可以发现这个dp只和当前行和上一行有关,进而做空间优化,用一

LeetCode 62 Unique Paths

题意: 一个n*m的棋盘,每次行动只能向下或者向右走1格,求从左上角走到右下角有几种不同的方案数。 思路: 因为行动只能向下向右,所以总步数是一定的,即n - m + 2步。那么问题就变成了这里面的哪几步是向下的,就是组合数了,即从n - m + 2个中选n - 1个的组合数。 题目里说的n和m值太夸张了,因为他的函数返回int……所以肯定很小。 代码: class S

Unique Email Address

思路1:面试的时候可以自己写process method class Solution {public int numUniqueEmails(String[] emails) {if(emails == null || emails.length == 0) {return 0;}HashSet<String> set = new HashSet<String>();for(String

C++ boost::upgrade_lock boost::upgrade_to_unique_lock如何使用 例子

upgrade_lock将可将读锁(shared_lock)升级为upgrade_lock,与shared_lock不互斥,与别的upgrade_lock和unique_lock互斥。 也就是说线程A获得mutex的upgrade_lock后,线程B、C等还可以获得mutex的share_mutex,反之亦然。 upgrade_to_unique_lock可将upgrade_lock升级为独占

C++ 有 mutex.lock 为什么要用 lock_guard 、unique_lock

因为直接操作 mutex,即直接调用 mutex 的 lock / unlock 函数。   而使用 lock_guard 可以自动加锁、解锁   C++ Boost库 多线程 线程锁mutex lock_guard 、unique_lock 实例_软件工程小施同学 的专栏-CSDN博客

【C++11及其特性】智能指针——unique_ptr

unique_ptr目录 一.排他所有权模式二.auto_ptr的缺点1.可以直接复制和拷贝构造2.STL可以直接赋值3.不支持动态内存分配数组 三.unique_ptr(C++11)1.不支持直接赋值和构造2.STL可以不可以直接赋值3.支持动态内存分配数组 四.unique_ptr的用法1.构造函数2.赋值操作3.主动释放对象4.放弃对象控制权5.重置6.交换 五.排他性智能指针的陷阱六

【C++】智能指针——auto_ptr,unique_ptr,shared_ptr

目录 auto_ptr unique_ptr shared_ptr 并发问题 循环引用问题 个人主页:传送门——>东洛的克莱斯韦克 智能指针的原理:传送门——>智能指针的原理 auto_ptr 使用方法参考官方文档 传送门——>auto_ptr文档 auto_ptr并不是一个优秀的智能指针,它的设计理念是——管理权转移。如下代码示意 auto_ptr(aut

C++:独占指针(unique_ptr)的理解

引入 在C++中,动态内存的管理是通过运算符new/delete来完成的: new:在动态内存中为对象分配空间,并且返回一个指向该对象的指针,我们可以选择返回对象对其进行初始化;delete:接受一个动态对象的指针,销毁该对象,并且释放与之关联的内存。 动态分配的对象的生命周期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。 当我们对动态内存的使用不当时,会出现很多麻烦:

C++ 中的智能指针 unique_ptr 和 shared_ptr

C++ 中的智能指针是用于自动管理动态内存资源的工具,它们通过 RAII(资源获取即初始化)机制来确保对象在适当的时候被释放,从而避免内存泄漏和其他与内存管理相关的问题。C++ 标准库中提供了三种主要的智能指针类型:std::unique_ptr、std::shared_ptr 和 std::weak_ptr。以下是它们的详细总结: 1. std::unique_ptr 独占所有权:std::