Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)

 昨晚的没来得及打,最近错过好几场CF了,这场应该不算太难

A. Unimodal Array
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Array of integers is unimodal, if:

  • it is strictly increasing in the beginning;
  • after that it is constant;
  • after that it is strictly decreasing.

The first block (increasing) and the last block (decreasing) may be absent. It is allowed that both of this blocks are absent.

For example, the following three arrays are unimodal: [5, 7, 11, 11, 2, 1], [4, 4, 2], [7], but the following three are not unimodal: [5, 5, 6, 6, 1], [1, 2, 1, 2], [4, 5, 5, 6].

Write a program that checks if an array is unimodal.

Input

The first line contains integer n (1 ≤ n ≤ 100) — the number of elements in the array.

The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 1 000) — the elements of the array.

Output

Print "YES" if the given array is unimodal. Otherwise, print "NO".

You can output each letter in any case (upper or lower).

Examples
input
6
1 5 5 5 4 2
output
YES
input
5
10 20 30 20 10
output
YES
input
4
1 2 1 2
output
NO
input
7
3 3 3 3 3 3 3
output
YES
Note

In the first example the array is unimodal, because it is strictly increasing in the beginning (from position 1 to position 2, inclusively), that it is constant (from position 2 to position 4, inclusively) and then it is strictly decreasing (from position 4 to position 6, inclusively).

这个A可能比B还要难一点,给你一个序列,满足左侧严格递增,中间相等,右侧严格递减,左右也可以为空,你判定下

#include <bits/stdc++.h>
using namespace std;
int main() {int n;int a[105];cin>>n;for(int i=1; i<=n; i++)cin>>a[i];int f1=1;a[n+1]=a[0]=1<<30;int f=2;while(a[f]>a[f-1]) f++;while(a[f]==a[f-1]) f++;while(a[f]<a[f-1]) f++;if(f<=n) cout<<"NO"<<endl;else cout<<"YES"<<endl;return 0;
}
B. Keyboard Layouts
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

There are two popular keyboard layouts in Berland, they differ only in letters positions. All the other keys are the same. In Berland they use alphabet with 26 letters which coincides with English alphabet.

You are given two strings consisting of 26 distinct letters each: all keys of the first and the second layouts in the same order.

You are also given some text consisting of small and capital English letters and digits. It is known that it was typed in the first layout, but the writer intended to type it in the second layout. Print the text if the same keys were pressed in the second layout.

Since all keys but letters are the same in both layouts, the capitalization of the letters should remain the same, as well as all other characters.

Input

The first line contains a string of length 26 consisting of distinct lowercase English letters. This is the first layout.

The second line contains a string of length 26 consisting of distinct lowercase English letters. This is the second layout.

The third line contains a non-empty string s consisting of lowercase and uppercase English letters and digits. This is the text typed in the first layout. The length of s does not exceed 1000.

Output

Print the text if the same keys were pressed in the second layout.

Examples
input
qwertyuiopasdfghjklzxcvbnm
veamhjsgqocnrbfxdtwkylupzi
TwccpQZAvb2017
output
HelloVKCup2017
input
mnbvcxzlkjhgfdsapoiuytrewq
asdfghjklqwertyuiopzxcvbnm
7abaCABAABAcaba7
output
7uduGUDUUDUgudu7

 这个B比较简单,两个键盘顺序不一样,按同样的键位在B上显示什么,注意大小写转换还有数字

#include <bits/stdc++.h>
using namespace std;
int main() {map<char,char>mp;string s1,s2,c;cin>>s1>>s2>>c;for(int i=0;s1[i];i++)mp[s1[i]]=s2[i];for(int i=0;c[i];i++){char s;if(c[i]>='0'&&c[i]<='9')s=c[i];else if(c[i]>='a'&&c[i]<='z')s=mp[c[i]];else s=mp[c[i]+32]-32;cout<<s;}return 0;
}

 

C. Jury Marks
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Polycarp watched TV-show where k jury members one by one rated a participant by adding him a certain number of points (may be negative, i. e. points were subtracted). Initially the participant had some score, and each the marks were one by one added to his score. It is known that the i-th jury member gave ai points.

Polycarp does not remember how many points the participant had before this k marks were given, but he remembers that among the scores announced after each of the k judges rated the participant there were n (n ≤ k) values b1, b2, ..., bn (it is guaranteed that all values bj are distinct). It is possible that Polycarp remembers not all of the scores announced, i. e. n < k. Note that the initial score wasn't announced.

Your task is to determine the number of options for the score the participant could have before the judges rated the participant.

Input

The first line contains two integers k and n (1 ≤ n ≤ k ≤ 2 000) — the number of jury members and the number of scores Polycarp remembers.

The second line contains k integers a1, a2, ..., ak ( - 2 000 ≤ ai ≤ 2 000) — jury's marks in chronological order.

The third line contains n distinct integers b1, b2, ..., bn ( - 4 000 000 ≤ bj ≤ 4 000 000) — the values of points Polycarp remembers. Note that these values are not necessarily given in chronological order.

Output

Print the number of options for the score the participant could have before the judges rated the participant. If Polycarp messes something up and there is no options, print "0" (without quotes).

Examples
input
4 1
-5 5 0 20
10
output
3
input
2 2
-2000 -2000
3998000 4000000
output
1
Note

The answer for the first example is 3 because initially the participant could have  - 10, 10 or 15 points.

In the second example there is only one correct initial score equaling to 4 002 000.

 

枚举暴力,这个题的意思就是给你一名选手的n个得分,给出k个评委的得分,原始分数有多少种可能

关键就是我在枚举分数的过程中,怎么知道这个是可以的,我选择前缀和然后查找

#include <bits/stdc++.h>
using namespace std;
int b[2010];
set<int>s;
int main() {int k,n,p=0;cin>>n>>k;for(int i=1; i<=n; i++) {int q;cin>>q;p+=q;s.insert(p);}for(int i=1; i<=k; i++) {cin>>b[i];}sort(b+1,b+k+1);int ans=0;for(auto &node:s) {int f=1;for(int j=1; j<=k; j++) {if(!s.count(node-b[1]+b[j])) {f=0;break;}}if(f)ans++;}cout<<ans<<endl;}

 

D. Office Keys
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n people and k keys on a straight line. Every person wants to get to the office which is located on the line as well. To do that, he needs to reach some point with a key, take the key and then go to the office. Once a key is taken by somebody, it couldn't be taken by anybody else.

You are to determine the minimum time needed for all n people to get to the office with keys. Assume that people move a unit distance per 1 second. If two people reach a key at the same time, only one of them can take the key. A person can pass through a point with a key without taking it.

Input

The first line contains three integers nk and p (1 ≤ n ≤ 1 000, n ≤ k ≤ 2 000, 1 ≤ p ≤ 109) — the number of people, the number of keys and the office location.

The second line contains n distinct integers a1, a2, ..., an (1 ≤ ai ≤ 109) — positions in which people are located initially. The positions are given in arbitrary order.

The third line contains k distinct integers b1, b2, ..., bk (1 ≤ bj ≤ 109) — positions of the keys. The positions are given in arbitrary order.

Note that there can't be more than one person or more than one key in the same point. A person and a key can be located in the same point.

Output

Print the minimum time (in seconds) needed for all n to reach the office with keys.

Examples
input
2 4 50
20 100
60 10 40 80
output
50
input
1 2 10
11
15 7
output
7
Note

In the first example the person located at point 20 should take the key located at point 40 and go with it to the office located at point 50. He spends 30 seconds. The person located at point 100 can take the key located at point 80 and go to the office with it. He spends 50seconds. Thus, after 50 seconds everybody is in office with keys.

 

这个其实就是dp啊

先将排序,假设第i个人拿到的钥匙是第k[i]个,那么显然k[i]<k[i+1]。dp[i][j]表示第i个人拿第j个钥匙,前i个人走的最大距离的最小值
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e3+10;
int a[N],b[N],d[N][N];
int main()
{int n,k,p;cin>>n>>k>>p;for(int i=0;i<n;i++)scanf("%d",a+i);for(int i=0;i<k;i++)scanf("%d",b+i);sort(a,a+n);sort(b,b+k);d[0][0]=abs(a[0]-b[0])+abs(b[0]-p);for(int i=1;i<=k-n;i++)d[0][i]=min(d[0][i-1],abs(a[0]-b[i])+abs(b[i]-p));for(int i=1;i<n;i++){d[i][i-1]=2e9+10;for(int j=i;j<=k-n+i;j++)d[i][j]=min(d[i][j-1],max(d[i-1][j-1],abs(a[i]-b[j])+abs(b[j]-p)));}cout<<d[n-1][k-1];return 0;
}

 

E. Cards Sorting
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Vasily has a deck of cards consisting of n cards. There is an integer on each of the cards, this integer is between 1 and 100 000, inclusive. It is possible that some cards have the same integers on them.

Vasily decided to sort the cards. To do this, he repeatedly takes the top card from the deck, and if the number on it equals the minimum number written on the cards in the deck, then he places the card away. Otherwise, he puts it under the deck and takes the next card from the top, and so on. The process ends as soon as there are no cards in the deck. You can assume that Vasily always knows the minimum number written on some card in the remaining deck, but doesn't know where this card (or these cards) is.

You are to determine the total number of times Vasily takes the top card from the deck.

Input

The first line contains single integer n (1 ≤ n ≤ 100 000) — the number of cards in the deck.

The second line contains a sequence of n integers a1, a2, ..., an (1 ≤ ai ≤ 100 000), where ai is the number written on the i-th from top card in the deck.

Output

Print the total number of times Vasily takes the top card from the deck.

Examples
input
4
6 3 1 2
output
7
input
1
1000
output
1
input
7
3 3 3 3 3 3 3
output
7
Note

In the first example Vasily at first looks at the card with number 6 on it, puts it under the deck, then on the card with number 3, puts it under the deck, and then on the card with number 1. He places away the card with 1, because the number written on it is the minimum among the remaining cards. After that the cards from top to bottom are [2, 6, 3]. Then Vasily looks at the top card with number 2 and puts it away. After that the cards from top to bottom are [6, 3]. Then Vasily looks at card 6, puts it under the deck, then at card 3 and puts it away. Then there is only one card with number 6 on it, and Vasily looks at it and puts it away. Thus, in total Vasily looks at 7 cards.

E是个线段树维护区间最小值,可是我一脸懵bi

 

 

 

 

转载于:https://www.cnblogs.com/BobHuang/p/7173079.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python能print中文吗_python怎么print汉字

今天就为大家分享一篇python中使用print输出中文的方法&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。看Python简明教程&#xff0c;学习使用print打印字符串&#xff0c;试了下打印中文&#xff0c;不行。&#xff08;推荐学习&#xff1a;Python视频教程&a…

ajax的一些相关

1、AJAX Asynchronous&#xff08;异步的&#xff09; JavaScript and XML AJAX是能不刷新整个网页的前提下&#xff0c;更新内容。通过少量的数据交换&#xff0c;达成局部页面刷新的效果。 而form表单提交经常是刷新整个页面&#xff0c;很繁琐 2、AJAX是基于现有的Internet…

select ...as_一起使用.select .map和.reduce方法可充分利用Ruby

select ...asby Declan Meehan由Declan Meehan 一起使用.select .map和.reduce方法可充分利用Ruby (Get the most out of Ruby by using the .select .map and .reduce methods together) You should absolutely never ever repeat yourself when writing code. In other word…

一些书单

仅对近来的学习做些回顾吧 学习永无止境--> 2015年已完成书单&#xff1a; 文学&#xff1a; 硅谷之火浪潮之巅天才在左疯子在右从0到1生命咖啡馆黑客与画家奇思妙想&#xff1a;15位计算机天才及其重大发现乔布斯传平凡的世界&#xff08;三部全&#xff09;一只iphone的全…

oracle 11gogg,【OGG】Oracle GoldenGate 11g (二) GoldenGate 11g 单向同步配置 上

Oracle GoldenGate 11g (二)GoldenGate 11g 单向同步配置 上ItemSource SystemTarget SystemPlatformRHEL6.4 - 64bitRHEL6.4 - 64bitHostnamerhel64.oracle.comora11g.oracle.comDatabaseOracle 11.2.0.3Oracle 11.2.0.3Character SetAL32UTF8AL32UTF8ORACLE_SIDPRODEMREPList…

今天听说了一个压缩解压整型的方式-group-varint

group varint https://github.com/facebook/folly/blob/master/folly/docs/GroupVarint.md 这个是facebook的实现 https://www.slideshare.net/parallellabs/building-software-systems-at-google-and-lessons-learned/48-Group_Varint_Encoding_Idea_encode

Centos7-卸载自带的jdk 安装jdk8

卸载JDK Centos7一般都会带有自己的openjdk,我们一般都回用oracle的jdk,所以要卸载 步骤一&#xff1a;查询系统是否以安装jdk #rpm -qa|grep java 或 #rpm -qa|grep jdk 或 #rpm -qa|grep gcj 步骤二&#xff1a;卸载已安装的jdk #rpm -e --nodeps java-1.8.0-openjdk…

小猪佩奇python_python画个小猪佩奇

#!/usr/bin/python #-*- coding: utf-8 -*-import turtleast def nose(x,y):#鼻子 t.pu() t.goto(x,y) t.pd() t.seth(-30) t.begin_fill() a0.4 for i in range(120):if 0<i<30 or 60<i<90: aa0.08t.lt(3) #向左转3度 t.fd(a) #向前走a的步长else: aa-0.08t.lt(3)…

javascript 符号_理解JavaScript中“ =”符号的直观指南

javascript 符号by Kevin Kononenko凯文科诺年科(Kevin Kononenko) 理解JavaScript中“ ”符号的直观指南 (A Visual Guide to Understanding the “” Sign in JavaScript) 实际上&#xff0c;对于第一次学习编码的人来说&#xff0c;赋值运算符(或“ ”符号)实际上会产生误导…

iOS开发UIScrollView的底层实现

起始 做开发也有一段时间了&#xff0c;经历了第一次完成项目的激动&#xff0c;也经历了天天调用系统的API的枯燥&#xff0c;于是就有了探索底层实现的想法。 关于scrollView的思考 在iOS开发中我们会大量用到scrollView这个控件&#xff0c;我们使用的tableView/collectionv…

oracle查看登录时间黑屏,oracle 11g默认用户名、密码解锁 以及安装后重启黑屏问题.doc...

oracle 11g默认用户名、密码解锁 以及安装后重启黑屏问题.doc还剩3页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;遇的同学&#xff0c;参考一下解决办法…

第六十二节,html分组元素

html分组元素 学习要点&#xff1a; 1.分组元素总汇 2.分组元素解析 本章主要探讨HTML5中分组元素的用法。所谓分组&#xff0c;就是用来组织相关内容的HTML5元素&#xff0c;清晰有效的进行归类。 一&#xff0e;分组元素总汇 为了页面的排版需要&#xff0c;HTML5提供了几种语…

WebSocket 实战--转

原文地址&#xff1a;http://www.ibm.com/developerworks/cn/java/j-lo-WebSocket/ WebSocket 前世今生 众所周知&#xff0c;Web 应用的交互过程通常是客户端通过浏览器发出一个请求&#xff0c;服务器端接收请求后进行处理并返回结果给客户端&#xff0c;客户端浏览器将信息呈…

python图形化编程更改内部参数_python-参数化-(3)(替换数据)

一.在读取excel文件、其他数据来源会遇到一些无法转换或者特殊标记的字符串等&#xff0c;不能直接使用。这时候需要对数据进行处理&#xff0c;替换为自己需要的数据进行下一步操作&#xff0c;如下&#xff1a; 替换 1.replace() str.replace(old,new[,max]) old -- 将被替换…

css grid布局_如何使用CSS Grid重新创建Medium的文章布局

css grid布局When people think of CSS Grid they normally envision image grid layouts and full web pages. However, CSS Grid is actually a superb technology for laying out articles as well, as it allows you to do things which previously was tricky to achieve.…

2017视频监控行业应用趋势与市场发展分析

安防行业的发展&#xff0c;从传统单一的业务形态到业务多元化与国际化的转变&#xff0c;是社会安全需求变化与视频监控技术双向驱动的结果。在新的行业生态体系下&#xff0c;传统监控技术与新兴技术的融合&#xff0c;跨行业的业务协同&#xff0c;以及以客户为中心的产业形…

oracle 11.2.4联机文档,ORACLE 11G 联机文档partition_extended_name的一个错误

在看11G联机文档的PARTITION EXTENDED NAME限制的时候&#xff0c;测试发现与书上描述不符。Restrictions on Extended Names Currently, the use of partition-extended and subpartition-extended table names has the following restrictions:No remote tables: A partition…

mongodb 安装、启动

MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1 最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据库,知道是文件型数据库,但是不知道怎么来用 那么好,所谓千呼万唤始出来,现在我就拉给你们看: 一.初识MongoDB 之 什么东西都…

python os path_python os.path模块

os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径)中&#xff0c;所有path共有的最长的路径。 os.path.dirname(path) #返回文件路径 os.path.exists(path) #路径存在则返回True,路径损坏返回False os.…

[转载]PSCAD调用MATLAB/SIMULINK之接口元件设计

原文地址&#xff1a;PSCAD调用MATLAB/SIMULINK之接口元件设计作者&#xff1a;luckyhappier1)接口元件 接口元件包括Graphics&#xff0c;Parameters和Script。注意&#xff1a;变量要与DSDYN要一致&#xff08;PSCAD根据变量名区别变量&#xff09;。 2&#xff09;Circuit 定…