Maison interface Web tutoriel HTML Codeforces Round #267 (Div. 2) E Alex and Complicated Task_html/css_WEB-ITnose

Codeforces Round #267 (Div. 2) E Alex and Complicated Task_html/css_WEB-ITnose

Jun 24, 2016 am 11:57 AM
round task

很不错的思维题,贪心

题目大意:给你n个数,你需要找到一个最长的子序列,使得这个子序列的第4k-4k+3项为a,b,a,b的形式(从0标号)。

牛逼的贪心啊,思维能力还是不行......

思路倒是能想一点,但是代码写下来不行...

参考了 http://www.cnblogs.com/shiina-mashiro/p/3981944.html

思路:

1、处理四个数相等的情况,直接输出四个数就行----其中记录数出现的次数用map,这样就不用离散化了(网上查的说map的查询时logn,离散化需要排序,nlogn,需要把大数映射成小数的时候 岂不是不需要离散化了。。。)

2、ABAB的情况

首先要想明白一点:两对数要满足形成ABAB那么必然是相邻的 ,最初没考虑到这点,以为要O(n^2)算法,不敢写了。

然后举出相邻两对数分析思路(a,b)  (c,d)。

d>b显然,因为d是当前读到的数,a,b,c,是之前读到的数

然后根据c与a,b关系分以下情况:

(1)c

(2)b>c>=a  形成ABAB,记录之

(3)c>=b  不知道(a,b) (c,d) 该取哪个  那么都存下先,等着下一个数读入作处理


//#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <iostream>#include <map>#include <vector>using namespace std;#define ls(rt) rt*2#define rs(rt) rt*2+1#define ll long long#define ull unsigned long long#define rep(i,s,e) for(int i=s;i<e repe for i="s;i<=e;i++)#define" cl memset in freopen out ll ll_inf="((ull)(-1))">>1;const double EPS = 1e-8;const int INF = 100000000;const int MAXN = 500000+100;struct Node{    int l,r;    int x;}nodes[MAXN];map<int int>pos,cnt;vector<int>b;int num[MAXN],n,top;void read(){    b.clear();    top=0;    for(int i=1;i0)            {                int bl=nodes[top-1].l, br=nodes[top-1].r, bx=nodes[top-1].x;                if(l>bl && l   <br>  <br>  <p></p>  <p><br> </p>  <p><br> </p> </int></int></e></vector></map></iostream></string></algorithm></cstring></cstdio>
Copier après la connexion

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'arrêt de Windows 11 invite l'hôte de la tâche dans la fenêtre de la tâche à exécuter la solution de tâche d'arrêt L'arrêt de Windows 11 invite l'hôte de la tâche dans la fenêtre de la tâche à exécuter la solution de tâche d'arrêt Feb 12, 2024 pm 12:40 PM

Récemment, de nombreux utilisateurs de Win11 ont signalé que lors de l'arrêt, ils sont invités à indiquer que l'hôte de la tâche taskhostwindow exécute la tâche d'arrêt. Alors, que se passe-t-il ? Les utilisateurs peuvent accéder au dossier Bureau sous l'éditeur de registre local, puis sélectionner AutoEndTasks dans la fenêtre de droite pour le définir. Laissez ce site présenter soigneusement aux utilisateurs la solution à ce problème lors de la fermeture. L'arrêt de Windows 11 indique que l'hôte de la tâche taskhostwindow exécute la tâche d'arrêt. Solution 1. Utilisez la combinaison de touches win key + r key, entrez « regedit » et appuyez sur Entrée, comme indiqué dans la figure ci-dessous. 2. Recherchez [HKEY

Que signifie rond en php Que signifie rond en php Mar 10, 2023 am 10:04 AM

En PHP, round signifie « arrondi » et est une fonction intégrée qui convertit les nombres à virgule flottante en nombres entiers. Cette fonction peut arrondir les nombres à virgule flottante et renvoyer une valeur entière de type float. La syntaxe est « round (nombre, précision, mode). );".

Comment diviser et arrondir à l'aide de la fonction round() de PHP Comment diviser et arrondir à l'aide de la fonction round() de PHP Mar 21, 2023 pm 04:32 PM

La fonction round() est une fonction très utile dans la bibliothèque de formatage de nombres PHP, qui peut arrondir les nombres à virgule flottante à un nombre spécifié de décimales. Cependant, comme l'opération de division de PHP peut souffrir de décimales infinies ou d'une perte de précision, l'arrondi du diviseur est également nécessaire. Ensuite, nous expliquerons en détail comment utiliser la fonction round() de PHP pour diviser et arrondir.

Comment utiliser la fonction ROUND pour intercepter les décimales dans MySQL Comment utiliser la fonction ROUND pour intercepter les décimales dans MySQL Jul 13, 2023 pm 09:21 PM

Comment utiliser la fonction ROUND dans MySQL pour intercepter le nombre de décimales. Dans MySQL, vous pouvez utiliser la fonction ROUND pour intercepter le nombre de décimales. La fonction ROUND arrondit un nombre à un nombre spécifié de décimales. Ce qui suit vous présentera en détail l’utilisation de la fonction ROUND et fournira des exemples de code. Syntaxe : ROUND(X,D)X représente le nombre à arrondir et D représente le nombre de décimales à conserver. Exemple d'utilisation de la fonction ROUND pour intercepter le nombre de décimales : Supposons qu'il existe une table nommée produc

Explication détaillée de la tâche C# Explication détaillée de la tâche C# Mar 14, 2024 am 09:54 AM

La tâche est un objet utilisé pour représenter les opérations asynchrones en C#. Il se trouve dans l'espace de noms System.Threading.Tasks. Task fournit une API de haut niveau pour gérer les opérations asynchrones simultanées, ce qui facilite l'écriture de code asynchrone dans les applications .NET.

Utiliser des tâches C# Utiliser des tâches C# Feb 19, 2024 pm 12:16 PM

L'utilisation de C#Task nécessite une présentation d'exemples de code spécifiques : Task est un type très couramment utilisé en C#. Il représente une opération exécutable qui peut être exécutée de manière asynchrone et renvoyer des résultats. Les tâches jouent un rôle important dans la gestion des opérations asynchrones, le traitement parallèle et l'amélioration des performances des applications. Cet article présentera l'utilisation de base de Task et fournira quelques exemples de code spécifiques. Créer et utiliser une tâche En C#, vous pouvez utiliser la classe Task pour créer et utiliser une tâche asynchrone. Voici une façon de créer et d'utiliser Ta

Obtenez une compréhension plus approfondie des tâches en C# Obtenez une compréhension plus approfondie des tâches en C# Feb 18, 2024 pm 12:03 PM

Explication détaillée de C#Task, des exemples de code spécifiques sont requis Introduction : Dans la programmation multithread C#, Task est un modèle de programmation couramment utilisé pour implémenter des opérations asynchrones. Task fournit un moyen simple de gérer des tâches simultanées, peut effectuer des opérations asynchrones en parallèle sur plusieurs threads et peut gérer facilement les exceptions et les valeurs de retour. Cet article présentera en détail l’utilisation de C#Task et fournira quelques exemples de code spécifiques. 1. Création et exécution de tâches Méthodes de création d'objets Task Il existe de nombreuses façons de créer des objets Task en C#.

Écrivez une fonction C sur une ligne pour arrondir les nombres à virgule flottante Écrivez une fonction C sur une ligne pour arrondir les nombres à virgule flottante Aug 26, 2023 pm 01:53 PM

Ici, nous verrons comment écrire une fonction C sur une ligne capable d’arrondir des nombres à virgule flottante. Afin de résoudre ce problème, nous devons suivre les étapes suivantes. Obtenez un nombre Si le nombre est positif, ajoutez 0,5 sinon, soustrayez 0,5 Utilisez la conversion de type pour convertir la valeur à virgule flottante en un entier Exemple #include<stdio.h> intmy_round(floatnumber){ return(int)(number<0?number - 0.5:numéro+0.5);}intmain(){&nbsp

See all articles