Python解决codeforces ---- 7

 第一题 20A

A. BerOS file system

time limit per test
2 seconds

memory limit per test
64 megabytes

input
standard input

output
standard output

The new operating system BerOS has a nice feature. It is possible to use any number of characters '/' as a delimiter in path instead of one traditional '/'.
For example, strings //usr///local//nginx/sbin// and /usr/local/nginx///sbin are
equivalent. The character '/' (or some sequence of such characters) at the end of the path is required only in case of the path to the root directory, which
can be represented as single character '/'.

A path called normalized if it contains the smallest possible number of characters '/'.

Your task is to transform a given path to the normalized form.

Input

The first line of the input contains only lowercase Latin letters and character '/' — the path to some directory. All paths start with at least one character '/'.
The length of the given line is no more than 100 characters, it is not empty.

Output

The path in normalized form.

Sample test(s)

input

//usr///local//nginx/sbin

output

/usr/local/nginx/sbin

 题意:给定一个字符串路径,但是这个路径可能由多个/来分割,现在要求我们把这个路径简化为Linux下的路径格式,要求末尾不能有/,根目录是一个/

 思路:我们利用split()函数把字符串利用/来分割,然后我们利用join()函数来连接非空的值,但是要注意开头一定要有一个/(根目录)

 代码:

# solve
def solve():
    str = raw_input()
    print "/"+"/".join(s for s in str.split("/") if s)

if __name__ == "__main__":
    solve()

 第二题 19A

A. World Football Cup

time limit per test
2 seconds

memory limit per test
64 megabytes

input
standard input

output
standard output

Everyone knows that 2010 FIFA World Cup is being held in South Africa now. By the decision of BFA (Berland's Football Association) next World Cup will be held in Berland. BFA took the decision to change some World Cup regulations:

  • the final tournament features n teams (n is always
    even)
  • the first n / 2 teams (according to the standings) come through to the knockout stage
  • the standings are made on the following principle: for a victory a team gets 3 points, for a draw — 1 point, for a defeat — 0 points. In the first place, teams are ordered in the standings in decreasing order of their points; in the second place — in decreasing
    order of the difference between scored and missed goals; in the third place — in the decreasing order of scored goals
  • it's written in Berland's Constitution that the previous regulation helps to order the teams without ambiguity.

You are asked to write a program that, by the given list of the competing teams and the results of all the matches, will find the list of teams that managed to get through to the knockout stage.

Input

The first input line contains the only integer n (1 ≤ n ≤ 50)
— amount of the teams, taking part in the final tournament of World Cup. The following n lines contain the names of these teams, a name is a string of lower-case
and upper-case Latin letters, its length doesn't exceed 30 characters. The following n·(n - 1) / 2 lines describe the held matches in the format name1-name2
num1:num2, wherename1, name2 — names of the
teams; num1, num2 (0 ≤ num1, num2 ≤ 100)
— amount of the goals, scored by the corresponding teams. Accuracy of the descriptions is guaranteed: there are no two team names coinciding accurate to the letters' case; there is no match, where a team plays with itself; each match is met in the descriptions
only once.

Output

Output n / 2 lines — names of the teams, which managed to get through to the knockout stage in lexicographical order. Output each name in a separate line.
No odd characters (including spaces) are allowed. It's guaranteed that the described regulations help to order the teams without ambiguity.

Sample test(s)

input

4
A
B
C
D
A-B 1:1
A-C 2:2
A-D 1:0
B-C 1:0
B-D 0:3
C-D 0:3

output

A
D

input

2
a
A
a-A 2:1

output

a

 题意:足球世界杯有n支足球队,现在第一轮两两之间较量,赢球的人得3分,平局得1分,输的0分。现在的排名按照得分高低,如果得分一样按照总进球分数和总输球分数的差,如果在一样按照总进球分数高底。要求进入第二轮的n/2支球队,按照字典序输出

 思路:利用Python的字典,字典的value是一个列表保存球队得分,总输球分,总进球分

 代码:

#coding=utf-8
import os
import sys

# solve
def solve():
    n = int(raw_input())
    dic = {}
    for i in range(n):
        str = raw_input()
        dic[str] = [0,0,0]

    i = n*(n-1)/2
    while i:
        list = raw_input().split()
        tmp1 = list[0].split("-")
        tmp2 = list[1].split(":")
        i -= 1

        if(int(tmp2[0]) > int(tmp2[1])):
            dic[tmp1[0]][0] += 3
            dic[tmp1[0]][1] += int(tmp2[1])
            dic[tmp1[0]][2] += int(tmp2[0])

            dic[tmp1[1]][1] += int(tmp2[0])
            dic[tmp1[1]][2] += int(tmp2[1])
        elif(int(tmp2[0]) == int(tmp2[1])):
            dic[tmp1[0]][0] += 1
            dic[tmp1[0]][1] += int(tmp2[1])
            dic[tmp1[0]][2] += int(tmp2[0])

            dic[tmp1[1]][0] += 1
            dic[tmp1[1]][1] += int(tmp2[0])
            dic[tmp1[1]][2] += int(tmp2[1])
        else:
            dic[tmp1[0]][1] += int(tmp2[1])
            dic[tmp1[0]][2] += int(tmp2[0])

            dic[tmp1[1]][0] += 3
            dic[tmp1[1]][1] += int(tmp2[0])
            dic[tmp1[1]][2] += int(tmp2[1])

    # out
    ans = sorted(dic.items() , key = lambda value:(value[1][0],value[1][2]-value[1][1],value[1][2]) , reverse = True)
    out = []
    for i in range(n/2):
        out.append(ans[i][0])
    out.sort()
    for s in out:
        print s

# main
if __name__ == "__main__":
    solve()

 第三题 21A

A. Jabber ID

time limit per test
2 seconds

memory limit per test
64 megabytes

input
standard input

output
standard output

Jabber ID on the national Berland service «Babber» has a form <username>@<hostname>[/resource], where

  • <username> — is a sequence of Latin letters (lowercase or uppercase), digits or underscores characters «_»,
    the length of<username> is between 1 and 16, inclusive.
  • <hostname> — is a sequence of word separated by periods (characters «.»),
    where each word should contain only characters allowed for <username>, the length of each word is between 1 and 16, inclusive. The length of <hostname> is
    between 1 and 32, inclusive.
  • <resource> — is a sequence of Latin letters (lowercase or uppercase), digits or underscores characters «_»,
    the length of<resource> is between 1 and 16, inclusive.

There are the samples of correct Jabber IDs: mike@codeforces.com, 007@en.codeforces.com/contest.

Your task is to write program which checks if given string is a correct Jabber ID.

Input

The input contains of a single line. The line has the length between 1 and 100 characters, inclusive. Each characters has ASCII-code between 33 and 127, inclusive.

Output

Print YES or NO.

Sample test(s)

input

mike@codeforces.com

output

YES

input

john.smith@codeforces.ru/contest.icpc/12

output

NO

 题目:测试给定的字符串是否满足给定的格式

 思路:不解释,题目数据很变态

 代码:

#coding=utf-8
import os
import sys

def isOk(ch):
    if (ch.isalpha() or ch.isdigit() or ch == '_'):
       return True
    return False

# solve
def solve():
    str = raw_input()
    # judge username
    pos = str.find('@')
    if pos <= 0 or str.count('@') != 1:
       return "NO"
    for i in range(pos):
        if not isOk(str[i]):
           return "NO"

    # judge hostname
    str = str[pos+1:]
    if len(str) == 0:
       return "NO"
    while True:
       pos = str.find('.')
       if pos == -1:
          if str.find('/') != -1:
             break
          for i in str:
              if not isOk(i):
                 return "NO"
          break
       if pos == 0 or pos == len(str)-1:
          return "NO"
       for i in range(pos):
           if not isOk(str[i]):
              return "NO"
       str = str[pos+1:]

    # judge resource
    pos = str.find('/')
    if pos != -1:
       if pos == 0:
          return "NO"
       str = str[pos+1:]
       if len(str) == 0:
          return "NO"
       for i in str:
           if not isOk(i):
              return "NO"

    return "YES"

# main
if __name__ == "__main__":
    print solve()
时间: 2024-11-15 21:46:40

Python解决codeforces ---- 7的相关文章

Python解决codeforces ---- 5

 第一题 13A A. Numbers time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output Little Petya likes numbers a lot. He found that number 123 in base 16 consists of two digits: the first is 7 and the secon

Python解决codeforces ---- 2

 第一题 4A A. Watermelon time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output One hot summer day Pete and his friend Billy decided to buy a watermelon. They chose the biggest and the ripest one, in

Python解决codeforces ---- 6

 第一题 16A A. Flag time limit per test 2 seconds memory limit per test 64 megabytes input standard input output standard output According to a new ISO standard, a flag of every country should have a chequered field n × m, each square should be of one o

Python解决codeforces ---- 3

 第一题 7A A. Kalevitch and Chess time limit per test 2 seconds memory limit per test 64 megabytes input standard input output standard output A famous Berland's painter Kalevitch likes to shock the public. One of his last obsessions is chess. For more

Python解决codeforces ---- 1

 第一题 1A A. Theatre Square time limit per test 2 seconds memory limit per test 64 megabytes input standard input output standard output Theatre Square in the capital city of Berland has a rectangular shape with the size n × m meters. On the occasion o

Python解决codeforces ---- 4

 第一题 10A A. Power Consumption Calculation time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Tom is interested in power consumption of his favourite laptop. His laptop has three modes. In norm

应用Python解决一些实际问题

Python 是一种简洁优美的脚本语言,它的诸多优点使它在完成某些任务时轻松自如.本文通过几个具体的例子阐明了这一点. 关于Python Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性.然而我认为同样重要的是, 它简单易学,书写代码简洁快速.此外,Python 提供了较多的模快,包含了相当多的功能,所以只要有一个可行的想法,那么用 Python 解决起来会是比较容易的.下面几个例子都源于我遇到的一些实际问题.借助于 Python,这些问题的解决都

python解决Fedora解压zip时中文乱码的方法_python

前言 很多时候在windows下压缩文件没问题,但是到了Linux下,出现乱码,很常见.以前在Ubuntu下,用`unzip -O GBK filename.zip` 就可以搞定. 换了Fedora后,暂时没发现乱码的压缩文件.晚上下载一本书的光盘,又碰到了乱码.尝试之前的方法没成功.看了下unzip的help,没-O那个参数了== 刚好找到一个用python解决的办法,分享下. 新建一个`.py`后缀的文件,直接复制粘贴代码: #!/usr/bin/env python # -*- codin

用python解决project euler中的题目

寒假期间学习了python,现在基本上就能上手使用它来解决project euler里面的题目了,用python真的是没得说的,一个字"赞".在C++中需要用一大堆代码实现的算法,在python中,只需要那么短短几行.而且还有惊艳的运行速度.借用<可爱的python>里面的一句话:"人生苦短,我用python". [project euler 055] 求经过一系列规则不能得到回文数的数的个数.题目在此: If we take 47, reverse a