Python缓冲区竞争编程快速输入输出

2024-09-20 23:00:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我见过有人用不同语言的缓冲区在在线评委中快速输入/输出。例如,http://www.spoj.pl/problems/INTEST/是用C完成的,如下所示:

#include <stdio.h>
#define size 50000

int main (void){
unsigned int n=0,k,t;
char buff[size];
unsigned int divisible=0;
int block_read=0;
int j;
t=0;
scanf("%lu %lu\n",&t,&k);

while(t){
    block_read =fread(buff,1,size,stdin);
    for(j=0;j<block_read;j++){
        if(buff[j]=='\n'){
            t--;
            if(n%k==0){
                divisible++;
            }
            n=0;
        }
        else{
            n = n*10 + (buff[j] - '0');
        }
    }
}

printf("%d",divisible);
return 0;

如何使用python实现这一点?在


Tags: 语言httpreadsizeifwwwblockbuff
2条回答
import sys
file = sys.stdin
size = 50000
t = 0
while(t != 0)
    block_read = file.read(size)
    ...
...

不过,这很可能不会提高性能—Python是解释性语言,因此您基本上希望尽可能多地在本机代码(本例中为标准库输入/解析例程)上花费更多时间。在

DR要么使用内置的例程来解析整数,要么得到某种为速度而优化的第三方库。在

我试图用python3解决这个问题,但无论我如何读取输入,都无法使其正常工作。然后我切换到在Python2.5下运行它,这样我就可以使用

import psyco
psyco.full()

在做了这个更改之后,我只需在for循环中一次一行地读取sys.stdin的输入,就可以让它正常工作了。我使用raw_input()读取第一行,并解析n和{}的值,然后使用下面的循环读取输入的其余部分。在

^{pr2}$

相关问题 更多 >

    热门问题