惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
博客园 - 司徒正美
罗磊的独立博客
D
Docker
Last Week in AI
Last Week in AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
V
V2EX
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog RSS Feed
A
About on SuperTechFans
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
P
Proofpoint News Feed

明明如月成长笔记

个人数据的开源备份:从明清档案之殇想到的 简体字的双重优势:打字效率与扫盲成效全解析 四小时深圳书城奇遇:那些藏在书架间的偶然与必然 正式把我的笔记系统迁移到 Obsidian,为了和 AI 配合 Gemini CLI 登录踩坑记录:GOOGLE_CLOUD_PROJECT_ID 的坑与解法 在 MacOS 上,成功恢复存储卡上被误删的照片 AI CLI 工具:Claude Code, Codex, Gemini CLI, Qwen code, CodeBuddy cli, cursor-agent 我的常用命令 港漂日记62:父亲节独自带娃,室内游戏、香港公园探展、观鸟、品味米其林餐厅 南航随心飞机票爬虫解密 acw_sc__v2 港漂日记61:香港私立诊所首诊:商业医保如何改变我的就医体验? 香港历史博物馆:看秦始皇兵马俑,还能和孔子比身高? 港漂日记59:母亲节礼物!AI 涂色小技巧,让孩子的爱跃然纸上 港漂日记60:西营盘网红旧书店 Book & Go 淘书记 港漂日记58:萌娃中环学体操,课后老师狂点赞 五一游记D4:深圳笔架山儿童乐园,邂逅无人机送外卖 我的400篇博客都写了些什么 珊瑚海兔四岁啦 港漂日记D159:亲子同乐日:一场精彩的幼儿园嘉年华 蛇年春节自驾D10:东莞-深圳-香港 DeepSeek教我如何收拾行李箱 福田取逗留签 回港新方式 蛇年春节自驾D9:江门-顺德-东莞 中国侨都华侨华人博物馆 东莞迎宾馆 蛇年春节自驾D8:茂名-开平-江门 挥春作业 粤西堵车 开平碉楼 迎财神 茂名博物馆参观记 蛇年春节自驾D7:茂名 中国第一摊 茂名博物馆 亚朵酒店 蛇年春节自驾D6:南宁-茂名 发财树 青秀山 路途亲子游戏 蛇年春节自驾D5:南宁过大年 醒狮贺岁 三街两巷 特色美食 骑行穿城 琅西夜市 打铁花 新春好!我用DeepSeek写祝福,顺便送你三款红包封面 蛇年春节自驾D4:钦州-南宁 钦州老街,万丽年夜饭 蛇年春节自驾D3:海陵岛-钦州 绝美悬崖餐厅,海景房租赁行情 明明如月成长笔记2024年公众号创作回顾(含免费红包封面🧧) 蛇年春节自驾D2:深圳-阳江-海陵岛
记一次被java虐的经过
lmm333 · 2011-02-28 · via 明明如月成长笔记

poj3844水题,检查同于相同的数量即可,注意一下余数为零的情况,然后ans=西格玛c(2,n)

最近一直在搞java课程设计,一直在用java的ide,于是就悲剧了。。。

不停地TLE,时不时还来几次RE,于是我求助好友,看到他们c++的ac代码,和我差不多一样的,都过了。。。

import java.util.*;

public class Main {

    public static void main(String[] args) {
        //Scanner cin = new Scanner(System.in);

        Scanner cin = new Scanner(new BufferedInputStream(System.in));

        int a = cin.nextInt();
        for (int cas = 0; cas < a; ++cas) {

            int mod = cin.nextInt();
            int num = cin.nextInt();

            int[] sum = new int[num];


            sum[0]=cin.nextInt()%mod;
            for (int i = 1; i < num; ++i) {
                sum[i]=(sum[i-1]+cin.nextInt())%mod;
            }
            int[] count =new int[mod];
            count[0]=1;

            int ans = 0;
            for (int i = 0; i < sum.length; i++) {
                ans+=count[sum[i]];
                count[sum[i]]++;
            }

            System.out.println(ans);
        }

    }
}

这代码改成c++肯定过,可惜java超时了。

哎,人品不好

这里转发一篇《给JAVA同学刷OJ的建议》吧,以飨后人:

1. 如果时间或是空间很紧张,不要相信任何系统库。ArrayList, LinkedList, Hashtable, HashMap之类看起来很值得信任很好听的名字效率都低得可怜,不仅如此,还异常地消耗内存。这不是-O2下的vector,即便是std::map的效率都比HashMap高得多。唯一可以信赖的是数组,效率还过得去。

这里说一个小技巧,比如需要实现一个int->int的映射,可以先开一个数组,直接用mod定址,这是非常效率高的。在出现冲突时,再扔到一个HashMap里。一般来说,控制得好的话,HashMap里的总数应该不会达到总共的10%,然后整个时间和空间效率就基本可以满意了,也节约代码。

2. 语言特性和频繁地申请对象使Java不可避免地在效率上远落后于C/C++,但抛开效率,很多在C里会犯的低级错误都不会在Java里犯了,而且运行时抛出的异常有助于迅速检查代码。当测试过几个数据之后,再根据逻辑读一遍代码,就基本是通过了。通读程序很重要,有利于发现测试不易检查出的bug。

3. 如果有一个IDE将大大提高开发的效率,对于C或是C++来说,这种提高很有限,但Java的话则会很多。

4. regex效率尚可,乃一大利器,理论上说,Regional中(只要是Linux系统的Online Judge也可以)C/C++也是可以使用<regex.h>,但功能比java.util.regex里的少得多。

5. Java没有complex,给计算几何代码编写带来一些困难,但实现一个也不是非常困难。Math的功能尚可