Maison base de données tutoriel mysql Codeforces Round #FF (Div. 2) 题解

Codeforces Round #FF (Div. 2) 题解

Jun 07, 2016 pm 03:31 PM
round Comparer

比赛链接:http://codeforces.com/contest/447 A. DZY Loves Hash time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output DZY has a hash table with p buckets, numbered from 0 to p ?-?1 . He

比赛链接:http://codeforces.com/contest/447

A. DZY Loves Hash

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

DZY has a hash table with p buckets, numbered from 0 to p?-?1. He wants to insert n numbers, in the order they are given, into the hash table. For the i-th number xi, DZY will put it into the bucket numbered h(xi), where h(x) is the hash function. In this problem we will assume, that h(x)?=?x mod p. Operation a mod b denotes taking a remainder after division a by b.

However, each bucket can contain no more than one element. If DZY wants to insert an number into a bucket which is already filled, we say a "conflict" happens. Suppose the first conflict happens right after the i-th insertion, you should output i. If no conflict happens, just output -1.

Input

The first line contains two integers, p and n (2?≤?p,?n?≤?300). Then n lines follow. The i-th of them contains an integer xi (0?≤?xi?≤?109).

Output

Output a single integer — the answer to the problem.

Sample test(s)

input

10 5
0
21
53
41
53
Copier après la connexion

output

4
Copier après la connexion

input

5 5
0
1
2
3
4
Copier après la connexion

output

-1
Copier après la connexion

链接:http://codeforces.com/contest/447

题意:找出hash时第一次产生冲突的位置。

解题思路:用一个数组表示是否存放有hash之后的元素,0表示这个位置还没有使用过,1表示这个位置上有hash之后的元素(即产生了冲突)。

代码:

#include <cstdio>
#include <cstring>

const int MAXN = 305;
int a[MAXN], p, n, ans = -1;

int main()
{
    bool flag = true;
    scanf("%d%d", &p, &n);
    for(int i = 0; i <br>


<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
B. DZY Loves Strings</p>
<p>
</p>
<p>
time limit per test</p>
1 second
<p>
</p>
<p>
memory limit per test</p>
256 megabytes
<p>
</p>
<p>
input</p>
standard input
<p>
</p>
<p>
output</p>
standard output

<p>
</p>
<p>DZY loves collecting special strings which only contain lowercase letters. For each lowercase letter<span> </span><span><em>c</em></span><span> </span>DZY
 knows its value<span> </span><span><em>w</em><sub><em>c</em></sub></span>.
 For each special string<span> </span><span><em>s</em>?=?<em>s</em><sub>1</sub><em>s</em><sub>2</sub>...<span> </span><em>s</em><sub>|<em>s</em>|</sub></span><span> </span>(<span>|<em>s</em>|</span><span> </span>is
 the length of the string) he represents its value with a function<span> </span><span><em>f</em>(<em>s</em>)</span>, where</p>
<center><img  src="/static/imghw/default1.png" data-src="/inc/test.jsp?url=http%3A%2F%2Fespresso.codeforces.com%2F47c9783b69409ca6ade8e93f7d51bed11f430539.png&refer=http%3A%2F%2Fblog.csdn.net%2Fu010084308%2Farticle%2Fdetails%2F37758201" class="lazy" alt="Codeforces Round #FF (Div. 2) 题解" ></center>
<p>Now DZY has a string<span> </span><span><em>s</em></span>. He wants to
 insert<span> </span><span><em>k</em></span><span> </span>lowercase letters into this string in order to get the largest possible value of the resulting
 string. Can you help him calculate the largest possible value he could get?</p>

<p>
</p>
<p>
Input</p>
<p>The first line contains a single string<span> </span><span><em>s</em> (1?≤?|<em>s</em>|?≤?10<sup>3</sup>)</span>.</p>
<p>The second line contains a single integer<span> </span><span><em>k</em> (0?≤?<em>k</em>?≤?10<sup>3</sup>)</span>.</p>
<p>The third line contains twenty-six integers from<span> </span><span><em>w</em><sub><em>a</em></sub></span><span> </span>to<span> </span><span><em>w</em><sub><em>z</em></sub></span>.
 Each such number is non-negative and doesn't exceed<span> </span><span>1000</span>.</p>

<p>
</p>
<p>
Output</p>
<p>Print a single integer — the largest possible value of the resulting string DZY could get.</p>

<p>
</p>
<p>
Sample test(s)</p>
<p>
</p>
<p>
</p>
<p>
input</p>
<pre class="brush:php;toolbar:false">abc
3
1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Copier après la connexion

output

41
Copier après la connexion

Note

In the test sample DZY can obtain "abcbbc", value?=?1·1?+?2·2?+?3·2?+?4·2?+?5·2?+?6·2?=?41.


链接:http://codeforces.com/contest/447/problem/B

题意:在给出的字符串中增加k个字符,求可以得到的最大权值和。

解题思路:找出最大的位权,将k个有最大位权的字符放到原字符串的末尾,求权值和。ps:答案可能会超出int,要用long long

代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;
    int k, a[27], imax = -1;
    cin >> s >> k;
    for(int i = 0; i > a[i];
        if(a[i] > imax)
        {
            imax = a[i];
        }
    }
    long long ans = 0;
    int len = s.length();
    for(int i = 0; i <br>

<p>
</p>
<p>
C. DZY Loves Sequences</p>
<p>
</p>
<p>
time limit per test</p>
1 second
<p>
</p>
<p>
memory limit per test</p>
256 megabytes
<p>
</p>
<p>
input</p>
standard input
<p>
</p>
<p>
output</p>
standard output

<p>
</p>
<p>DZY has a sequence<span> </span><span><em>a</em></span>, consisting of<span> </span><span><em>n</em></span><span> </span>integers.</p>
<p>We'll call a sequence<span> </span><span><em>a</em><sub><em>i</em></sub>,?<em>a</em><sub><em>i</em>?+?1</sub>,?...,?<em>a</em><sub><em>j</em></sub></span><span> </span><span>(1?≤?<em>i</em>?≤?<em>j</em>?≤?<em>n</em>)</span><span> </span>a
 subsegment of the sequence<span> </span><span><em>a</em></span>. The value<span> </span><span>(<em>j</em>?-?<em>i</em>?+?1)</span><span> </span>denotes
 the length of the subsegment.</p>
<p>Your task is to find the longest subsegment of<span> </span><span><em>a</em></span>,
 such that it is possible to change at most one number (change one number to any integer you want) from the subsegment to make the subsegment strictly increasing.</p>
<p>You only need to output the length of the subsegment you find.</p>

<p>
</p>
<p>
Input</p>
<p>The first line contains integer<span> </span><span><em>n</em> (1?≤?<em>n</em>?≤?10<sup>5</sup>)</span>.
 The next line contains<span> </span><span><em>n</em></span><span> </span>integers<span> </span><span><em>a</em><sub>1</sub>,?<em>a</em><sub>2</sub>,?...,?<em>a</em><sub><em>n</em></sub> (1?≤?<em>a</em><sub><em>i</em></sub>?≤?10<sup>9</sup>)</span>.</p>

<p>
</p>
<p>
Output</p>
<p>In a single line print the answer to the problem — the maximum length of the required subsegment.</p>

<p>
</p>
<p>
Sample test(s)</p>
<p>
</p>
<p>
</p>
<p>
input</p>
<pre class="brush:php;toolbar:false">6
7 2 3 1 5 6
Copier après la connexion

output

5
Copier après la connexion

Note

You can choose subsegment a2,?a3,?a4,?a5,?a6 and change its 3rd element (that is a4) to 4.

链接:http://codeforces.com/contest/447/problem/C

题意:从一串数字中选出一个子串,可以改变子串中一个数字的值得到一个新的子串,求最大的递增新子串的长度。

解题思路:

将原数组分割成递增的子串,记录下每个子串的开始和结束位置,以及长度。接下来要分几种情况讨论:1.相邻的两个子串改变一个数字之后,可以合并形成新的递增子串,2.相邻的3个子串,中间子串长度为1,改变中间的数字后可以形成新的递增子串,3.相邻的子串不能合并形成新的递增子串,但是可以在原串的基础上,得到一个长度增加1的新的递增子串(在子串开头位置前有数字,或是结束位置后有数字)。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 100010;
int a[MAXN];
struct P
{
    int l, len, r;
};
P p[MAXN];
int n;

int main()
{
    memset(p, 0, sizeof(p));
    scanf("%d", &n);
    int t = 0;
    for(int i = 0; i  a[p[i - 1].r - 1] + 1 ||
           a[p[i].l + 1] > a[p[i - 1].r] + 1)
        {
            ans = max(ans, p[i].len + p[i - 1].len);
        }
        if(i >= 2 && 1 == p[i - 1].len &&
           a[p[i].l] > a[p[i - 2].r + 1])
        {
            ans = max(ans, p[i].len + p[i - 2].len + 1);
        }
     //   printf("%d \n", p[i].len);
    }
    printf("%d\n", ans);
    return 0;
}
</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)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois 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)

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

Choisissez la bonne souris pour votre ordinateur portable Choisissez la bonne souris pour votre ordinateur portable Jan 02, 2024 pm 09:54 PM

Quel type de souris dois-je utiliser avec mon ordinateur portable ? Il est préférable d'utiliser une souris sans fil. 1. La souris sans fil n'a pas de problème d'emmêlement des fils, ce qui la rend plus pratique à utiliser. 2. Équipé d'une souris sans fil, vous pouvez éviter les câbles encombrés et offrir plus de liberté lors de vos déplacements. 3. Il n'est pas nécessaire d'utiliser un câble pour connecter la souris sans fil à l'ordinateur portable, et le câble ne sera pas facilement retiré, ce qui rendra l'expérience d'utilisation meilleure. 4. Dans des situations telles que les voyages d'affaires, les souris sans fil sont plus pratiques à transporter. Lorsque vous utilisez une souris avec un ordinateur portable, vous devez choisir une souris sans fil. Comme une souris sans fil ne nécessite pas de câble, elle est plus pratique à utiliser et peut éviter les enchevêtrements dans le câble. Dans le même temps, la sensibilité et la vitesse de réponse d'une souris sans fil sont meilleures que celles d'une souris filaire, ce qui peut améliorer l'efficacité du travail. Si vous devez l'utiliser pendant une longue période, il est recommandé de choisir un chargeur

Quel type d'ordinateur portable les étudiants devraient-ils choisir ? (Quel type d'ordinateur portable les étudiants devraient-ils choisir ?) Quel type d'ordinateur portable les étudiants devraient-ils choisir ? (Quel type d'ordinateur portable les étudiants devraient-ils choisir ?) Dec 30, 2023 pm 09:27 PM

Quel type d'ordinateur portable convient aux étudiants ? Les ordinateurs portables de jeu peuvent choisir des configurations normales. Si vous achetez un ordinateur portable de jeu avec une configuration de base pendant vos études, le prix est d'environ 5 000 yuans. Des marques telles que Savior, Flying Fortress et Shadow Elf le sont. all Il existe une version bas de gamme adaptée. Lors du choix, veuillez noter qu'il est préférable de choisir le processeur Intel car il est plus stable et fiable. De plus, la mémoire doit également choisir la version bas de gamme de 16 Go. Ce type de capacité de mémoire vous permet d'exécuter n'importe quel logiciel sans aucune pression. Concernant la carte graphique, je recommande de choisir un produit normal et ordinaire, comme le modèle 1650 de l'année dernière. Je ne recommande pas d’acheter l’ordinateur portable de cette année car les ordinateurs actuellement sur le marché ne sont pas très rentables. Pourquoi est-il recommandé de choisir un ordinateur portable gamer d’entrée de gamme ? Parce qu'après l'obtention de votre diplôme, vous pourrez

Classement de change de monnaie numérique TOP10 Classement de change de monnaie numérique TOP10 Mar 14, 2025 pm 05:36 PM

Les dix tops top dix plates-formes de trading d'actifs numériques en 2024, vous aidant à entrer dans le monde de la crypto-monnaie en toute sécurité et pratiquement! Sur la base d'indicateurs multidimensionnels tels que le volume des transactions, la sécurité, l'expérience utilisateur et les frais de manutention, cet article sélectionne dix excellentes plateformes (quel que soit le classement), couvrant divers types de transactions tels que Spot et Contracts, et fournit des choix différents pour les investisseurs novices et professionnels. Lorsque vous choisissez une plate-forme, vous devez prendre en compte des facteurs tels que vos propres objectifs d'investissement, la tolérance au risque, le niveau d'expérience, la sécurité de la plate-forme et le support client. Cet article est pour référence uniquement.

É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

Les dix meilleures plateformes de trading Bitcoin recommandées en 2025, applications de trading de devises numériques recommandées pour les débutants Les dix meilleures plateformes de trading Bitcoin recommandées en 2025, applications de trading de devises numériques recommandées pour les débutants Dec 14, 2024 am 09:09 AM

Ce guide fournira un aperçu approfondi des 10 plateformes de trading Bitcoin les plus fiables en 2025 avec des options d'adhésion, des structures de frais et des mesures de sécurité importantes pour les créateurs, tout en fournissant également une introduction au trading de devises numériques pour les débutants.

See all articles