Codeforces Round #FF (Div. 2) 题解
比赛链接: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
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
output
4
input
5 5 0 1 2 3 4
output
-1
链接: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
output
41
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
output
5
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>

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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). );".

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 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

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 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

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.

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(){ 

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.
