`
digiter
  • 浏览: 120701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ICPC编码建议

    博客分类:
  • ICPC
 
阅读更多
写代码最重要的是清晰,包括思路的清晰和代码结构的清晰。我们无法保证写的代码一定是正确的,但我们可以保证自己是在头脑清晰的情况下书写,并且通过不断的练习,用更加清晰的代码结构实现。越清晰,程序就越可能正确,并且即使出错也很容易看到问题。

0)
在能过题的情况下,最朴素最好写的方式就是最好的。

1)
double x = 0;
scanf("%lf", x);     // &x
printf("%lf\n", x);  // output double -> %f
printf("%.6f\n", 0); // undef
// best practice
printf("%.4f\n", x + EPS);
2)
int a[10];
sizeof(a); // 10 * 4
void gao(int a[]) {
	memset(a, 0xff, sizeof(a)); // sizeof(a) == 4
	// best practice
	fill(a, a + 10, -1);
}

3)
const int inf = 0x7fffffff;
void dijkstra(int dist[], int n) {
	fill(dist, dist + n, inf); // when a + b will get overflow
	// best practice
	fill(dist, dist + n, 0x3f3f3f3f);
	...
}

4)
// output %
printf("%%");
// output hex, oct
print("%x%o", a, b);

5)
int a = 3;
if (a = 3) { // ==
}

6)
int x = -7, m = 3;
printf("%d\n", x % m);
// best practice
printf("%d\n", (x % m + m) % m);

7)
long long a = 1 << 40;
// best practice
long long a = 1LL << 40;

8)
long long a;
printf("%I64d\n", a); // under windows
printf("%lld\n", a);  // under linux

9)
int main() {
	int a[10 * 1000 * 1000]; // too large in stack
	...
}
// best practice
int a[10 * 1000 * 1000];
int main() {
	...
}
// or
int main() {
	vector<int> a;
	...
}

10)
char a[11];
gets(a); // unsafe
// best practice
fgets(a, 11, stdin);

11)
double a = 1.0, b = 1.0 / 888888888888888888 * 888888888888888888;
printf("%s\n", a == b ? "same" : "diff");
// best practice
int sgn(double x, double eps = 1.0e-9) {
	return (x > eps) - (x < -eps);
}
printf("%s\n", sgn(a - b) == 0 ? "same" : "diff");

12)
// round up
(int)(a + EPS)
(int)(a + EPS + 0.5)

13)
// small heap
priority_queue< double, vector<double>, greater<double> > que;
// unique
vector<int> vec;
sort(vec.begin(), vec.end());
vec.resize(unique(vec.begin(), vec.end()) – vec.begin());

14)
总是用cerr输出调试信息,这样在注释调试信息时,搜索cerr就可以很容易注释掉全部的调试信息。

15) CodeBlocks在运行窗口粘贴数据的方法


16)
总是使用fill_n函数
http://www.cplusplus.com/reference/algorithm/fill_n/




分享到:
评论

相关推荐

    poj题目分类,关于acm/icpc

    在ACM/ICPC(国际大学生程序设计竞赛)中,训练和...对于初次接触ACM/ICPC的选手,建议从初级题目开始,随着理解的深入逐渐挑战更难的题目。在每个阶段,不断反思和总结,加深对算法的理解,才能在竞赛中取得好成绩。

    ACM-ICPC及其他编程竞赛备战策略与实战经验分享

    此外,还提供了C++编程实例演示了二分查找的编码实现方法,附带了一些常用的参考书目及线上培训资源。 适合人群:对编程竞赛感兴趣的学生或程序员,特别是想要提升个人技术实力以应对ACM-ICPC等赛事的人士。 使用...

    acmicpc:ACMICPC的一些示例程序

    4. **贪心算法**:在部分情况下,局部最优选择能导致全局最优解,如霍夫曼编码、Prim和Kruskal最小生成树算法等。 5. **回溯法**:用于在庞大的解空间中寻找解,如八皇后问题、数独求解等。 6. **图论**:包括图的...

    competition-solves:ACMICPC风格问题的解决方案

    3. 排序与搜索:快速排序、二分查找等经典算法在ACM/ICPC中频繁出现,Java的Collections.sort()和Arrays.sort()方法可以简化编码过程。 4. 数论:包括质数判断、最大公约数、最小公倍数等。Java的BigInteger类可以...

    leetcode和oj-coding-practice:练习编码能力

    UVA Online Judge 是一个历史悠久的 OJ 平台,它包含了大量的经典编程题目,涵盖了 ACM/ICPC(国际大学生程序设计竞赛)的许多主题。在 UVA 上,你可以找到不同领域的题目,如数学、计算机科学基础等,这些题目可以...

    ACM编程奥林匹克竞赛全面解析与备赛建议

    内容概要:本文详尽地介绍ACM国际大学生...其他说明:ACM ICPC不仅是对学生个人实力的极大考验,更是团队协作精神的真实展现。通过此文,读者可以更加明确自己参赛的目的与意义,同时获取实用的竞争攻略和技术建议。

    给C++初学者的忠告

    - **建议**:报名参加一些知名的C++竞赛或认证考试,如ACM ICPC、C++ Certified Professional Programmer等。 #### 34. 学会利用开源资源 - **解释**:许多优秀的开源项目提供了宝贵的代码示例和技术文档。 - **...

    36th国际大学生程序设计竞赛成都题目

    - **策略选择:** 在多道题目中选择合适的问题进行解答,通常建议先易后难,先挑选那些看起来容易入手且对算法要求不是特别高的问题。 - **时间管理:** 竞赛时间有限,因此合理分配时间对于取得好成绩至关重要。 #...

    ACM入门----一些初学者的关键问题

    ACM/ICPC的输入输出特性主要为流式和ASCII编码。这意味着输入是顺序的,不能使用文件定位函数,输出可以随时进行,只要保证输出顺序正确即可。在ASCII编码下,数字如12345实际上由五个字符组成。因此,C语言中推荐...

    计算机学习经验谈

    - 参加竞赛活动,如ACM/ICPC和数学建模竞赛,对日后找工作非常有帮助。 - 推荐的编程网站:USACO、POJ和TopCoder。 #### 二、应对不同学习阶段的策略 1. **本科阶段**: - 提升绩点的同时,积极参与各类竞赛,...

    ACM比赛模板学习合集

    **ACM比赛,全称是国际大学生程序设计竞赛(International Collegiate Programming Contest,简称ICPC或ACM/ICPC),是一项旨在展示大学生创新能力、团队合作精神和在压力下编写程序解决实际问题能力的国际性比赛。...

    国际大学生程序设计竞赛例题解二

    4. **编码技巧**:解题过程中可能会提到一些编程语言的特性,如C++的模板、STL库的使用,或者Java的泛型等,以及如何优化代码以适应比赛环境。 5. **问题分类**:题目可能按照主题分类,例如数论问题、几何问题、...

    ACM大学生程序设计竞赛在线题库精选题解 算法分析与设计习题解答.rar

    在阅读过程中,建议配合在线题库进行实践,如ACM/ICPC官方题库或LeetCode等平台,通过编写代码来加深理解和记忆。同时,积极参与讨论和分享,与他人交流解题思路,能够更快速地提升编程水平和问题解决能力。

    ACM 入门学习介绍.md

    - 练习高效编码,减少错误提交次数。 - 熟悉各种算法和数据结构的应用场景。 - 学会快速定位和修复代码中的错误。 #### 四、必备知识领域 ##### 1. **编程语言** - 掌握C/C++或JAVA的基础语法。 - 理解面向...

    浅谈程序设计竞赛的算法知识-罗勇军1

    文章还特别提到中国大陆赛区的题目,如ICPC(国际大学生程序设计竞赛)和CCPC(中国大学生程序设计竞赛)的赛场题目,这些题目具有广泛的知识覆盖范围和较高的难度。对于竞赛选手而言,这些题目不仅是对他们算法知识...

    ACM.rar_ACM_ACM PDF

    ACM,全称国际大学生程序设计竞赛(International Collegiate Programming Contest,简称ICPC或ACM/ICPC),是一项全球性的计算机编程竞赛,旨在激发大学生对计算机科学的兴趣,提高其解决复杂问题的能力。...

    29th ACM

    标题中的“29th ACM”指的是第29届国际大学生程序设计竞赛(International Collegiate Programming Contest,简称ICPC或ACM)。这是一个极具影响力的全球性计算机编程竞赛,旨在推动大学学生在算法、编程和解决问题...

    ACM程序设计竞赛模板完全版

    模板的整理目的是为了确保快速编码和减少错误,让参赛者能够将更多的精力投入到算法逻辑的思考上,而不是从零开始编写基础代码。 为了在ACM竞赛中取得好的成绩,参赛者需要对这些算法和数据结构有深刻的理解,并且...

    浙大acm题解

    ACM,全称国际大学生程序设计竞赛(International Collegiate Programming Contest,ICPC),是全球范围内极具影响力的大学生计算机编程竞赛,它强调团队合作、快速编程和问题解决能力。 在这个压缩包中,文件名为...

Global site tag (gtag.js) - Google Analytics