`
digiter
  • 浏览: 121673 次
  • 性别: 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/




分享到:
评论

相关推荐

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

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

    poj题目分类,关于acm/icpc

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

    2024 ACM-ICPC 国际大学生程序设计竞赛中的两类经典算法挑战解析

    内容概要:本文主要介绍了2024年国际大学生程序设计竞赛(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 上,你可以找到不同领域的题目,如数学、计算机科学基础等,这些题目可以...

    给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竞赛入门常见算法-算法与数据结构解析基础

    ACM国际大学生程序设计竞赛(ICPC)是一项面向大学生的编程比赛,自1970年由美国计算机协会(ACM)创办以来,已成为全球最具影响力的编程竞赛之一。ACM竞赛要求参赛者在规定的时间内,利用创新和团队精神解决问题,...

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

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

    蓝桥杯ACM-ACM资源

    ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM-ICPC)是由国际计算机学会(ACM)主办的,旨在展示大学生运用计算机来充分解决实际问题的创造力的年度竞赛。它是一项全球性...

    ACM 入门学习介绍.md

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

    ACM第三十二次集训(2023.10.12)(2024rs).7z

    ACM国际大学生程序设计竞赛(International Collegiate Programming Contest,ICPC)是一项面向世界范围的大学生的程序设计竞赛活动。此项竞赛以团队形式进行,每队三人,解决实际问题的算法设计与编码能力是其考察...

    编程竞赛指南:ACM/NOI/CSP的比赛策略、经验分享与资源推荐

    在通用建议方面,无论是哪种竞赛,掌握基础算法如贪心算法、动态规划、图论等以及高级算法如网络流、线段树等都非常重要。准备常用算法模板有助于比赛时快速编写代码。定期参加线上比赛如Codeforces和AtCoder等,能...

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

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

    **acm协会算法模板-ACM资源

    ACM协会算法模板作为一项宝贵的资源,它是一个专门针对ACM国际大学生程序设计竞赛(International Collegiate Programming Contest,简称ICPC)以及其它计算机编程竞赛所提供的参考材料。这份资料集合了多种编程算法...

Global site tag (gtag.js) - Google Analytics