文档库 最新最全的文档下载
当前位置:文档库 › ACM训练总结

ACM训练总结

ACM训练总结
ACM训练总结

杭电ACM

1003:

这个问题就是最大字段和的问题,这个问题用以前老是讲过的分治的方法求解,我用了分治,认为感觉还是正确,但是提交超时,他的数列最大是100000个数,不知道是否会有其他的方法,或者是我的程序有问题

ACM做题过程中的一些小技巧。

1.一般用C语言节约空间,要用C++库函数或STL时才用C++;

cout、cin和printf、scanf最好不要混用。

2.有时候int型不够用,可以用long long或__int64型(两个下划线__)。

值类型表示值介于-2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之间的整数。

printf("%I64d",a);

printf("%lld",a);

3.OJ判断是只看输出结果的。

所以大部分题处理一组数据后可以直接输出,就不需要用数组保存每一个Case的数据。while(case--)

{scanf(...);

......

printf(...);

}

4.纯字符串用puts()输出。

数据大时最好用scanf()、printf()减少时间。

先用scanf(),再用gets()会读入回车。

scanf("%c%c",&c1,&c2)会读入空格;

5.

读到文件的结尾,程序自动结束

while( ( scanf(“%d”,&a) ) != -1 )

while( ( scanf(“%d”,&a) ) != EOF)

while( ( scanf(“%d”,&a) ) == 1 )

while( ~( scanf(“%d”,&a) ) )

读到一个0时,程序结束

while( scanf(“%d”,&a) ,a)

读到多个0时,程序结束

while( scanf(“%d%d%d”,&a,&b,&c),a+b+c )

6.数组定义int a[10]={0};可以对其全部元素赋值为0;

全局变量,静态变量自动初始化为0;

7.有很多数学题是有规律的,直接推公式或用递归、循环。

8.圆周率=cos(-1.0)

自然对数=exp(1.0)

9.如果要乘或除2^n,用位移运算速度快。a>>n;a<

10.定义数组时,数组大小最好比告诉的最大范围大一点。字符数组大小必须比字符串最大长度大1。

处理字符数组时不要忘了在最后加'\0'。

11.擅用三目运算符

int max(int a,int b)

{return a>b?a:b;

}

int gcd(int m,int n)

{return n?gcd(n,m%n):m;

}

int abs(int a)

{return a<0?-a:a;

}

12.将乘法转换成加法减少时间

log(a*b)=log(a)+log(b)

将乘法转换成除法防止溢出

a/(b*c)=a/b/c

13.排序要求不高时可以用C++的STL模板函数sort(),stable_sort()

int a[n]={...};

sort(a,a+n);

bool cmp(int m,int n)

{return m>n;

}

sort(a,a+n,cmp);

14.有的题数据范围小但是计算量大可以用打表法

先把结果算出来保存在数组里,要用时直接取出来。

本文来自CSDN博客,转载请标明出处:https://www.wendangku.net/doc/bd5193971.html,/power721/archive/2009/08/31/4503056.aspx

关于ACM的输入输出(一)

写给第一次参加现场赛的同学们

一般来说ACM的现场赛会规定输入输出

或者是文件输入标准输出

也可能是文件输入文件输出

如果没有规定的话那么一般就是标准的输入输出了

那说一下输入输出的重定向

一般用下面两种方法

c++常用:

#include

ifstream filein("data.in"); // 定义一个文件输入流

ofstream fileout("data.out"); //cout<< --> fileout<<

filein.eof() //文件到末尾,返回非零值

data.in表示输入的数据文件

本地测试的话本来输入的数据就要在这个文件里面测试了

建一个本地的文本data.in,可以用记事本的方式打开

注意:文件输入的话,以后的cin>>都要改成filein>>, cout<<都要改成fileout<< c语言常用:

freopen("date.in","r",stdin); //重定向所有标准的输入为文件输入

freopen("date.out","w",stdout);//重定向所有标准的输出为文件输出

fclose(stdout);//输出结束

freopen("date.in","r",stdin); //重定向所有标准的输入为文件输入

freopen("date.out","w",stdout);//重定向所有标准的输出为文件输出

fclose(stdout);//输出结束

第一句的意思就是文件输入,以"读状态",去替换标准的输入

以上如果只是规定用文件输入输出的某一种,那么就只用其中的一种

关于ACM的输入输出(二)

ACM题目特点: 由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。 ACM的输入输出要求严格按照规定来,所以你不需要输出像"Please input the data"这类的提示语。否则将会被判Wrong Answer。

1、输入

初学者一般有个误区:如果题目包含多组测试数据,他们就会把输入的内容全部保存起来,然后再依次处理。

其实程序的输入\输出是相互独立的,因此,每当处理完一组测试数据,就应当按题目要求进行相应的输出操作。而不必将所有结果储存起来一起输出。

下面来介绍一下ACM中常见的一些输入情况。

只有一组测试数据

这类题目是最简单的,比如第1000题。参考代码:

#include

int main(void)

{

int a, b;

scanf("%d %d", &a, &b);

printf("%d\n", a + b);

return 0;

}

没有明确指出输入什么时候结束

如果是这种情况,我们默认是以“文件结束”(EOF)为结束标志。

这是ACM的默规,例如1076题。参考代码:

#include

int main(void)

{

int a, b;

while (scanf("%d %d", &a, &b) != EOF)

printf("%d\n", a + b);

return 0;

}

指定数据量

有时会在数据的第一行提供数据量大小,比如第一行是100,则表示有100组数据。比如第1077题。参考代码:

#include

int main(void)

{

int n, a, b;

scanf("%d", &n);

while (n--)

{

scanf("%d %d", &a, &b);

printf("%d\n", a + b);

}

return 0;

}

以特定元素作结束符

这种输入和第一种类似。常见的是规定以0作为结束符。

比如第1078题。参考代码:

#include

int main(void)

{

int a, b;

while (scanf("%d %d", &a, &b), a || b)

printf("%d\n", a + b);

return 0;

}

输出

输出格式统一

这种比较简单,只要按要求来就没问题的。

比如每组输出占一行,或者每组输出后面加一个空行。比如1000题。

数据之间有空行

对于这种输出,有时候还会告诉你有几组输入,这样你就可以自己判断一下是不是最后一组。是就不输出空行,否则多输出一个空行。而有时候连共有几组数据都不会告诉你。其实不论知不知道有几组数据,我们都可以这样处理。

第一组数据后面不加空行。

第二组开始,每组前面加空行。比如第1079题,参考代码:

#include

int main(void)

{

int a, b, i = 0;

while (scanf("%d %d", &a, &b), a || b)

printf((i++? "\n%d\n": "%d\n"), a + b);

return 0;

}

关于ACM的输入输出(三)

在线判决系统是机器判题系统,也就是俗称的OJ(Online Judge),机器判决的一个特点就是必须100%的吻合才能判为正确,否则要么WA,PE。同时对于提交的程序还有一定的时间限制,如果超过时间则会判超时。OJ一般采用的是标准输入输出,所以提交的时候我们不必要使用文件读入输出(这与高中的信息学是不同的),机器判决只针对程序结果,不针对程序,所以很多时候直接提交数据也是可以的,俗称打表。

下面介绍常用的处理输入的方法

几种常用的处理输入方法(C语言)

感觉新人对于处理输入输出存在一些问题,这里写出几个常用到的处理方法: 1.知道输入数据组数n

scanf("%d",&n);

whlie(n--){

这里处理每一组输入.然后直接按格式输出,没必要开数组存储答案.

}

2.没有数据总数,以EOF结束

可能用的几个函数:

scanf():

while(scanf("%s|%d")!=EOF){

处理每一组数据,并输出.

}

getchar():读入一个字符

whlie((ch=getchar())!=EOF){

}

gets():读入一行

while(gets(buf)!=NULL) {

}

用getchar,gets注意读入换行符.

3.以0或-1结束的输入.

while(scanf("%d",&n),n!=0) {

}

关于C++的输入输出处理:

cin读字符串时遇到空白符(空格,换行等)结束

char str[BUFFER];

while (cin >> str) {

}

getline读字符串时遇到换行符结束,用于读一整行

char str[BUFFER];

while (cin.getline(str, BUFFER)) {

}

string str;

while (getline(cin, str)) {

}

cin/cout要比scanf/printf慢一些,尽可能使用scanf/printf以避免测试大量数据时因为输入输出慢而导致TLE. putchar/getchar要比scanf/printf更快

关于java的输入输出处理:

如果使用BufferedReader(jdk1.1或以后的版本,一次读一整行字符串,类似于gets)

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

String s;

while ((s = stdin.readLine()) != null) {

可以用StringTokenizer st = new StringTokenizer(s);来按空格切词

int n = Integer.parseInt(st.nextToken());

double b = Double.parseDouble(st.nextToken());

}

如果使用Scanner(仅限于jdk1.5或以后的版本,一般用于从字符串中切词,类似于cin)

Scanner stdin = new Scanner(System.in);

while (stdin.hasNext()) {

String s = stdin.next();

int n = stdin.nextInt();

double b = stdin.nextDouble();

}

至于输出,很多新手总会选择先将答案存储在一个数组里,等程序运行完再输出,其实这是没有必要的,机器判决是逐个字符匹配,所以完全可以处理一组输入后,便输出结果。

ACM技巧使用文件输入输出方便测试的方法

把下面两块宏语句分别嵌在main函数的开始和结束,这样在本地调试的时候,cin/cout和scanf/printf直接对应到指定的文件流,但提交到OJ时,此两句不被编译,所以仍为标准I/O流,因此不用提交前改代码。

后面一块宏不用也可以,前面一块宏根据自己的输入文件改变

"in.txt","out.txt",也可以只用其一。

#include

#include

using namespace std;

#ifndef ONLINE_JUDGE

freopen("in.txt","r",stdin);

freopen("out.txt","w",stdout);

#endif

#ifndef ONLINE_JUDGE

fclose(stdin);

fclose(stdout);

#endif

用这种方法,cin/cout和scanf/printf都可以转化为文件流

C语言输入输出函数详解

C语言中基本的输入输出函数有:

putchar ():把变量中的一个字符常量输出到显示器屏幕上;

getchar ();从键盘上输入一个字符常量,此常量就是该函数的值;

printf ();把键盘中的各类数据,加以格式控制输出到显示器屏幕上;

scanf ();从键盘上输入各类数据,并存放到程序变量中;

puts ():把数组变量中的一个字符串常量输出到显示器屏幕上;

gets ():从键盘上输入一个字符串常量并放到程序的数组中.

sscanf(); 从一个字符串中提取各类数据。

putchar() 和getchar() 顾名思议就是从输入流中获取一个字符和输出一个字符,比较简单,不再多讲。

例子如下:

char c = getchar();

putchar(c);

格式化输入输出scanf()和printf()是最有用的,所以重点讲一下。

printf():

一般形式:

printf("格式控制".输出列表);

eg : printf("a=%d,b=%f,c=%c\n",a,b,c);

1;格式控制.

格式控制是用双引号括起来的字符串,也称"转换控制字符串",它包含以下两部分信息.

格式说明:由"%"和格式字符组成,如%d,%f,%c,他的作用是把输出数据转换为指定格式输出,格式的说明总是由"%"字符开始的.

普通字符:需要原样输出的字符,或者是一些有特殊含义的字符,如\n,\t。

2;输出列表

就是需要输出的一些数据,也可以是表达式,如果在函数中需要输出多个变量或表达式,则要用逗号隔开.

一些特殊字符的输出:

单引号,双引号,和反斜杠的输出在前面加转义字符”\”

如:”\?” , “\”” , “\\”

%的输出用两个连在一起的%%,即printf(“%%”);

常用的格式说明如下:

格式字符

d 以十进制形式输出带符号整数(正数不输出符号)

o 以八进制形式输出无符号整数(不输出前缀O)

x 以十六进制形式输出无符号整数(不输出前缀OX)

u 以十进制形式输出无符号整数

f 以小数形式输出单精度实数

lf以小数形式输出双精度实数

e 以指数形式输出单、双精度实数

g 以%f%e中较短的输出宽度输出单、双精度实数

c 输出单个字符

s 输出字符串

这里强调一下:网上很多文章都说f 和lf是一样的,即不管单精度,双精度浮点数,都可以用f, 但我在POJ上做过测试,输出Double时用f确实也可以,但读入时,用f就报WA,所以大家如果对Double 进行读写的话,都用lf吧。说到Double,再啰嗦一句,建议大家要用到浮点数时都用Double,不要用float,因为在很多情况下,float精度不够会导致WA。

特殊:

对64位整数的输入输出,在POJ上的C++环境下(即VC),64位整数是:

__int64 (注意int前面是两个下划线)

输入输出格式为”%I64d”.

在G++环境下(即Dev C++) 64位整数是

long long

输入输出格式为”%lld”.

输出宽度

用十进制整数来表示输出的最少位数。注意若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

精度

精度格式符以“.”开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

标志格式字符

- 结果左对齐,右边填空格

+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号

例如:

double c=24212345.24232;

printf(“%020.4”); 表示输出精确到小数点后4位,输出占20位,若有空余的位补0.

scanf:

scanf的很多用法都是和printf对应的,故不再赘述。

说一下scanf一个特别好用的地方,就是可以滤去一些不想要的东西。

举例说明如下:

比如输入为日期yyyy-mm-dd,就可以这样写:

int year,moth,day;

scanf(“%d-%d-%d”,&year,&moth,&day);

再比如:

scanf("%3d %*3d %2d",&m,&n); 输入113 118 69回车(系统将113赋予m,将69赋予n,因为*号表示跳过它相应的数据所以118不赋予任何变量)

puts()用的不多,且基本都能用printf()代替,故不再多说。

gets()是从输入流中获取一行字符串放入字符数组中:

char in[100];

gets(in);

大家可能最容易出错的地方就是字符串的输入,所以强调一下:

能进行字符,字符串输入的有:

getchar(), scanf(“%c”); scanf(“%s”), gets()

其中getchar() 和scanf(“%c”)的功能是一样的。

需要注意的是,这两个函数读入的是输入流中当前位置的字符,

比如:

scanf(“%d”,&n);

c = getchar();

假设输入67/ (假设“/”代表回车),则第一个scanf读入一个整数67后,当前输入流的位置是67之后,即指向回车符,所以第二个getchar()读入的就是一个回车符了,即c = …\n?。

同样,gets()也是从当前位置读入一行字符串。

比如:

scanf(“%d”,&n);

gets(str);

此时读入字符数组中的字符串就是“\n” 了

所以通常在用scanf读入一个非字符串的类型之后,如果要读入字符,或字符数组,都用一个额外的getchar()把回车符读掉,若后面跟的不止一个回车符,可能还有多余的空格的话,就用gets()读掉。

和以上不同的是,scanf(“%s”) 读入的时候是会忽略掉空格,回车和制表符的。并且以空格,回车和制表符作为字符串结束的标志。

经常会有这样的题,输入第一行是一个整数,接下来每行的第一个是一个字符,用来表示某种操作,后面再跟一些数据,比如:

4

A 100 2

B 23

A 23 89

B 34

像这种输入就需要小心,读入字符时不要读成回车符。

为了防止意外,我一般是这样处理这类输入的:

char model[2];

Scanf(“%d”,&n);

for(…,…,…){

scanf(“%s”,model);

if(model[0] == …A?){

}

else{

}

}

sscanf():

sscanf()经常用来分解字符串,功能非常强大,但很多功能都需要正则表达式的知识,所以就介绍一下最

简单的几种用法,大家如果想了解更多的话,自己去网上找吧。

1、

char str[100],str1[100],str2[100];

gets(str);

s scanf(str,”%s%s”,str1,str2);

将读入的一整行字符串按空格,制表符或回车符分割成两个字符串。

2、

取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

sscanf("123456 ", "%4s", str);

对于C++的输入输出就不再详细的讲了,因为cin,cout的速度实在太慢,不推荐使用,我一般都是到万不得已时才用。比如当你要读入字符串到string 对象中时,就只能用cin了,这时候还有一个常见的问题,就是如何将一整行字符串读入一个string 中,这就要用到getline函数了。

用法为:

getline(cin, str);

第一个参数就是标准输入流cin ,第二个参数是接收读入数据的string对象,本来还有第三个参数,是结束符的标志,但通常用它默认的就可以了,所以不用管。

注意区分这个getline和cin.getline的区别:

cin.getline的用法如下:

char str[20];

cin.getline(str,20); 表示从读入的一行字符串中,取最多20各字符放入字符数组str中,注意此处的str是字符数组,而上面的str是string对象。

另外需要注意的是,千万不要把cout和printf混用,因为cout是带缓冲的而printf不带,所以会使得

输出的数据顺序混乱。

ACM采用Java语言心得

Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点:

(1) 最明显的好处是,学会Java,可以参加Java Challenge 。

(2) 对于熟悉C/C++的程序员来说,Java 并不难学,找本书,一两周业余时间就可以搞定了。当然,这里只是指一般编程,想熟悉所有的Java库还是需要些时间的。事实上,Java 只相当于C++的一个改进版,所有的语法都几乎是C++的,很少有变动。

(3) 在一般比赛中,Java程序会有额外的时间和空间,而实际上经过实验,在执行计算密集任务的时候Java并不比C/C++慢多少,只是IO操作较慢而已。

(4) Java 简单而功能强大,有些东西用Java实现起来更为方便,比如高精度。

(5) 用Java不易犯细微的错误,比如C/C++中的指针,“if (n = m) ... ”等。

(6) 目前来看Eclipse已成基本配置,写Java程序反而比C/C++更方便调试。在具体竞赛时也算多一种选择。

(7) 学会Java对以后工作有好处。现在国外很多地方会Java的人比会C/C++的人多。

(8) 会Java可以使你看起来更像偶蹄类动物(牛)。

下面说一下ACM-ICPC队员初用Java编程所遇到的一些问题:

1、基本输入输出:

(1) JDK 1.5.0 新增的Scanner类为输入提供了良好的基础,简直就是为

ACM-ICPC而设的。

一般用法为:

import java.io.*

import java.util.*

public class Main

{

public static void main(String args[])

{

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

...

}

}

当然也可以直接Scanner cin = new Scanner(System.in);

只是加Buffer可能会快一些

(2)

读一个整数:int n = cin.nextInt(); 相当于scanf("%d", &n); 或cin >> n;

读一个字符串:String s = cin.next(); 相当于scanf("%s", s); 或cin >> s;

读一个浮点数:double t = cin.nextDouble(); 相当于scanf("%lf", &t); 或cin >> t;

读一整行:String s = cin.nextLine(); 相当于gets(s); 或cin.getline(...);

判断是否有下一个输入可以用cin.hasNext() 或cin.hasNextInt() 或

cin.hasNextDouble() 等,具体见TOJ 1001 例程。

(3)

输出一般可以直接用System.out.print() 和System.out.println(),前者不输出换行,而后者输出。

比如:

System.out.println(n); // n 为int 型

同一行输出多个整数可以用

System.out.println(new Integer(n).toString() + " " + new Integer(m).toString());

也可重新定义:

static PrintWriter cout = new PrintWriter(new

BufferedOutputStream(System.out));

cout.println(n);

(4)

对于输出浮点数保留几位小数的问题,可以使用DecimalFormat类,

import java.text.*;

DecimalFormat f = new DecimalFormat("#.00#");

DecimalFormat g = new DecimalFormat("0.000");

double a = 123.45678, b = 0.12;

System.out.println(f.format(a));

System.out.println(f.format(b));

System.out.println(g.format(b));

这里0指一位数字,#指除0以外的数字。

2、大数字

BigInteger 和BigDecimal 是在java.math包中已有的类,前者表示整数,后者表示浮点数

用法:

不能直接用符号如+、-来使用大数字,例如:

(import java.math.*) // 需要引入java.math 包

BigInteger a = BigInteger.valueOf(100);

BigInteger b = BigInteger.valueOf(50);

BigInteger c = a.add(b) // c = a + b;

主要有以下方法可以使用:

BigInteger add(BigInteger other)

BigInteger subtract(BigInteger other)

BigInteger multiply(BigInteger other)

BigInteger divide(BigInteger other)

BigInteger mod(BigInteger other)

int compareTo(BigInteger other)

static BigInteger valueOf(long x)

输出大数字时直接使用System.out.println(a) 即可。

3、字符串

String 类用来存储字符串,可以用charAt方法来取出其中某一字节,计数从0开始:

String a = "Hello"; // a.charAt(1) = 'e'

用substring方法可得到子串,如上例

System.out.println(a.substring(0, 4)) // output "Hell"

注意第2个参数位置上的字符不包括进来。这样做使得s.substring(a, b) 总是有b-a个字符。

字符串连接可以直接用+ 号,如

String a = "Hello";

String b = "world";

System.out.println(a + ", " + b + "!"); // output "Hello, world!"

如想直接将字符串中的某字节改变,可以使用另外的StringBuffer类。

4、调用递归(或其他动态方法)

在主类中main 方法必须是public static void 的,在main 中调用非static 类时会有警告信息,

可以先建立对象,然后通过对象调用方法:

public class Main

{

...

void dfs(int a)

{

if (...) return;

...

dfs(a+1);

}

public static void main(String args[])

{

...

Main e = new Main();

e.dfs(0);

...

}

}

5、其他注意的事项

(1) Java 是面向对象的语言,思考方法需要变换一下,里面的函数统称为方法,不要搞错。

(2) Java 里的数组有些变动,多维数组的内部其实都是指针,所以Java不支持fill多维数组。

数组定义后必须初始化,如int[] a = new int[100];

(3) 布尔类型为boolean,只有true和false二值,在if (...) / while (...) 等语句的条件中必须为boolean类型。

在C/C++中的if (n % 2) ... 在Java中无法编译通过。

(4) 下面在java.util包里Arrays类的几个方法可替代C/C++里的memset、qsort/sort 和bsearch:

Arrays.fill()

Arrays.sort()

Arrays.binarySearch()

下面是几个比较大的在线提交系统(Online Judge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返回信息告诉你是否正确。采用黑箱测试,系统里有一套标准的输入输出数据(对外保密,而且通常数据很多很怪),你的程序的输出和标准输出完全符合即可。常见的返回信息有AC(Accepted,通过)WA(Wrong Answer,输出有错误)TLE(Time Limit Exceeded,超时)MLE(Memory Limit Exceeded,内存溢出)RE(Runtime Error,发生实时错误)等,只有AC了才算做对一题。这里只是一个简要介绍,请大家在做题时先看看各网站上的FAQ,Enjoy it~~~

浙江大学 Online Judge(ZOJ)https://www.wendangku.net/doc/bd5193971.html,

国内最早也是最有名气的OJ,有很多高手在上面做题。特点是数据比较刁钻,经常会有你想不到的边界数据,很能考验思维的全面性,现在我主要在这个OJ上做题

北京大学 Online Judge(POJ)https://www.wendangku.net/doc/bd5193971.html,/JudgeOnline/

建立较晚,但题目加得很快,现在题数和ZOJ不相上下,特点是举行在线比赛比较多,数据比ZOJ上的要弱,有时候同样的题同样的程序,在ZOJ上WA,在POJ上就能AC

同济大学 Online Judge https://www.wendangku.net/doc/bd5193971.html,/index.php

这个OJ题数上不能与上两个相比,推荐这个OJ的原因是它是中文的,这对很多对英文不太感冒的兄弟是个好消息吧。它也因此吸引了众多高中的OIer,毕竟他们的英文还差一些呵呵,上面的题目也更偏向高中的信息学竞赛一些。

西班牙Valladolid大学 Online Judge(UVA)http://online-judge.uva.es/problemset/

世界上最大最有名的OJ,题目巨多而且巨杂,数据也很刁钻,全世界的顶尖高手都在上面。据说如果你能在UVA上AC一千道题以上,就尽管向IBM、微软什么的发简历吧,绝对不会让你失望的。

俄罗斯Ural立大学 Online Judge(URAL)http://acm.timus.ru/

也是一个老牌的OJ,题目不多,但题题经典,我在高中的时候就在这上面做题的。

UsacoGate Online Judge(USACO)https://www.wendangku.net/doc/bd5193971.html,/usacogate

全美计算机奥林匹克竞赛(USACO)的训练网站,特点是做完一关才能继续往下做,与前面的OJ不同的是测试数据可以看到,并且做对后可以看标准解答,所以如果大家刚开始的时候在上面那些OJ上总WA却找不到原因的话,可以试着来这里做做,看看测试数据一般是从什么地方阴你的。

ACM训练题集一

poj1035:拼写检查 时间限制: 2000毫秒内存限制: 65536K 提交总数: 11190 : 4140 说明 作为一个新的拼写检查程序的开发团队成员,你写的模块,将检查使用一切形式的所有已知的正确的话字典的 话的正确性。如果这个词在字典中缺席那么它可以取代正确的话(从字典)可以取得下列操作之一: 从单词的一个字母删去 ;在任意一个字母的单词一个字母 取代,插入一个?任意字母到单词 ,你的任务是编写程序,会发现每一个给定的单词从字典中所有可能的替代。 输入 输入文件的第一部分包含从字典中的所有单词。每个字中占有它自己的行。完成这部分是由一个单独的行上的单字符'#' 。所有的字是不同的。将有10000字的字典。 文件的下一部分,包含了所有的单词进行检查。每个字中占有它自己的行。这部分也完成了由一个单独的行上的单字符'#' 。将有最多50个字进行检查。 输入文件中的所有单词(从字典和被检查的词字)只包括小字母字符,每一个包含15个字符最多。 输出 写入到输出文件中完全检查它们在输入文件的第二部分中出现的顺序每个字一行。如果这个词是正确的(即它在字典中存在)写留言:“是正确的“,如果这个词是不正确的,那么先写这两个字,然后写字符。”:“(冒号),并在一个单独的空间写了所有可能的替代品,用空格隔开这些替代应在书面的顺序。其在字典中(在输入文件的第一部分)。出现,如果有这个字没有替换,然后换行,应立即按照冒号。 样例输入 我是有我更多的比赛,我太iF奖#我知道米的较量HAV OO或我的网络连接MRE#

输出范例 我是正确的认识到:奖米:我的我的比赛是正确的甲肝:已经有OO:太:我是正确的FI:我MRE:更多的我 poj3080:蓝色牛仔裤 时间限制: 1000毫秒内存限制: 65536K 提交总数: 6173 接受日期: 2560 说明 基因地理工程是IBM与国家地理学会,是分析,从成千上万的贡献者地图地球是如何填充DNA的研究伙伴关系,作为IBM的研究人员,你一直负责编写一个程序,会发现共性之间个人调查资料,以确定新的遗传标记,可与相关的DNA 片段。DNA碱基序列是指出在它们在分子中发现的顺序列出的氮基地。有四种碱基:腺嘌呤(A),胸腺嘧啶(T),鸟嘌呤(G),胞嘧啶(C)。一个6碱基的DNA序列可以作为TAGACC代表。鉴于一组DNA碱基序列,确定在所有序列中出现的最长的系列基地。 输入 输入到这个问题,将开始与行包含一个单一的整数n表示数据集的数目。每个数据集由以下几部分组成组成: ?一个正整数m(2 <= M <= 10)的碱基序列,在此数据集。 ?m行每片含60个碱基组成的单一碱基序列。 输出 对于每一个输入数据集,输出基地序列的最长共同所有的碱基序列。如果最长的公共子序列的长度小于3基地,显示字符串“没有显着的共性”。如果存在多个子序列相同的长度最长,只输出序列的按字母顺序排列第一。

集训心得体会

集训总结 为期四天的混编同训结束了,时间虽然很短,感触和收获却是很多。回首这四天的集训,主要收获有: (一)军事素质方面,虽然不敢说在这短短的几天时间里面有质的飞跃,但是通过这次集训,我学会了很多方法,对今后无论是自身训练还是组训、教学都有相当大的帮助。大学我选择的是军事技术类,对于军事指挥可以说是完全不懂,自身素质相对来说也比较差,尤其是从陆军到武警,很多东西都是一窍不通。以前对警官编组作业、示范作业、示教作业和单科目教学这几个名词我不能正确区分,通过观看示范,我弄清楚了之间的区别,也对教学有了比较笼统的理解;以前组织体能训练,训练方法比较单一,要么就是跑步,要么就是原地俯卧撑,效果不明显,战士不愿意练,通过观摩,我学会了组织体能训练的多种方法,对今后组织训练大有裨益;以前只参加过实弹射击,对于如何组织实弹射击完全没有考虑过,通过观摩大致理解了组织实弹射击的一些基本程序和方法。各位首长的理论授课也让我开阔了眼界,参谋长对于军事工作的见解,政委对按纲建连的一系列要求,师长对明年全师军事工作的规划,首长的高瞻远瞩使我如沐春光,受益匪浅。以前我对军事理论的学习,纯粹属于死记硬背,记不住,用不上。通过多次的讨论和参谋长在课后的一些解答,我学会了把军事理论结合平时训练实际进行理解记忆,尤其是与我们训练工作联系紧密的一些基础常识,有了比较透彻的理解掌握,无需再去死记硬背。还有就是每次讨论,通过仔细聆听大家的发言,揣摩每个人的观点,感

受到了自己在各方面存在的不足,也给了自己一个前进的方向和动力。对于整个集训,我认为就是首长的意图并不是手把手地教我们具体操作某一项目,而是通过传授理念和方法,提高我们的军事综合素质。 (二)为人处事方面,通过与所有集训队员的相处,我感觉差距很明显。每个人身上都有很多值得我学习的地方,譬如为人处事,譬如领导哲学。两位营长平时很幽默风趣,让人感到温暖,但是管理又不失严格,让人很自然地去服从命令,心甘情愿地跟着干。每位连长都有自己独到的管理方法方式,通过虚心向大家请教,我也或多或少有一些收获。交流最多的还是排长,每个人都有自己的闪光点,比如每次打扫卫生都有人抢着干,每次讨论都有主动负责记录,每次课后都有人认真研究笔记消化课堂内容等等,大家的主动、扎实、勤学等都让我感到自惭形愧。通过比较,更加清醒地认识了自己,进一步的发现了差距和不足,对于以后的成长进步都会有很大的帮助。 这次集训尽管有一定的收获,但是仍然发现了自己存在的诸多问题。一是思想不够重视。在开训动员的时候我就打瞌睡,尽管存在种种原因,但我觉得主要还是思想上的问题,自己的不够重视导致行为上的放松,从而犯下错误。在随后的授课过程中,我虽然有努力克制自己不瞌睡,但是听课不够认真,笔记没有跟上,也是这次学习的一大损失。二是钻研精神不够。这次把大家集中到一次进行集训,是很好的一次学习锻炼的机会,尤其是每次的课后讨论,如果能够认真思考,认真听取所有人的意见,收获将特别大。然而每次课后我都是应

ACM一期 基础训练计划

这个训练计划我也只是把我知道的知识点罗列出来而已. 其实acm还有很多方面的知识。 可能到acm生涯结束的时候还是无法把所有的知识都吃透 所以acm的知识能学多少算多少,知识重要的不是你知道的多,重要的是你能否熟练的运用他们! 题目注意事项: zoj:https://www.wendangku.net/doc/bd5193971.html,/ grid:https://www.wendangku.net/doc/bd5193971.html,/ hdu:https://www.wendangku.net/doc/bd5193971.html,/ zquoj:也就是我们的oj 一.数据机构基础。 请自学完数据结构书:2,3,4,6,7,9.1,9.2.1 9.3 10 这几章,带*号可以暂时掠过,以后再看。然后自行完成oj DS开头的题目。 注意栈队列这些数据结构一般不用像书本那样写得那么严谨。在acm中,往往因为时间关系,一般写成简单的模式:请参考附件:栈与队列acm中的简单实现.txt 其它数据结构请自行简化。 二.其他数据结构 1.trie树 请看附件trie树的相关附件或到网上搜索。注意自己写好和简化模版。 Trie树最好使用静态分配实现! poj 3630 hdu 1251 2.并查集 Hdu:1558 1811 1829 1198 3.图论专题: 简单的说下图怎么存储。 图通常分为邻接表和邻接矩阵两种方式储存。 请先移步到数据结构书祥看这两种实现方式。 邻接表:我们知道要动态分配内存。这种方式有时会导致效率低下。我们可以模拟一下动态分配内存,详见附件静态分配。 这部分图论可参考 https://www.wendangku.net/doc/bd5193971.html,/p-251720691.html 部分题目.这本书有讲解。 1.图的基本概念 poj:1659 2.图的遍历和活动问题 zoj:2110 1709 1649 2913 1060 2193 2412 1008 2165 1136 1361 1091 1083 poj:2935 1270 3687

集训心得体会范文生活的感悟

集训心得体会范文生活的感悟 集训是集体训练的一种,集训有助于互相学习探讨,下面是WTT 带来的集训心得体会范文,欢迎大家阅读。 部队骨干集训心得体会 为期一个月的全省新训干部骨干集训今天就要结束了。回顾一个月的集训生活,大家在时间紧、课目多、任务重的情况下,通过强化训练、理论学习、评比竞赛、规范管理、沟通交流、讨论分析,端正了思想,规范了程序,总结了经验,提高了素质,增进了感情,达到了培训预期的目的,有效提高了全体新训干部骨干综合能力素质,为20xx年度新兵教育训练工作打下了坚实基础。现将集训工作小结如下: 一、基本情况 本次集训时间为11月1日至11月29日,参加集训的198名干部骨干主要由温州、宁波、台州、舟山、海警等团级单位选派组成,集训队模拟新兵团分区队组建,实行统一指挥、自主管理模式。集训队根据骨干带兵需要,采取全队集中授课和区队自主安排等多种形式,有针对性的开设了军事训练、政治教育、部队管理、教学法、规章制度、心理行为及卫生防护等六大类二十多门科目的学习、训练及考评,期间共组织示范教学观摩13次,开展评比竞赛18次,召开座谈交流16次,举办文艺汇演2次。通

过集训,筑牢了骨干的思想政治和军事业务基础,较好地实现了由骨干向带兵人角色的转变,为下步新训工作打下了良好基础。 二、主要做法 (一) 精心筹划,早打基础,扎实做好开训准备 一是领导关心,高度重视集训工作。总队领导第一时间亲自审定了集训方案并明确了具体要求,为集训工作顺利开展理清了思路、指明了方向;总队警务处专门派员到教导大队进行检查指导,详细了解教员备课、训练器材和场地设施保障等情况,明确有关工作标准;教导大队从组织、教学和物资等方面,做了大量认真细致的准备工作;各团级单位积极配合,精挑细选配强骨干。开训后,总队警务处王贵松处长为集训队作了开训动员,提出了希望,明确了要求,指明了方向;集训中,教导大队领导多次来队检查指导工作,与新训干部骨干开展座谈交流,征求官兵意见,切实做好保障。 二是明确目标,理清工作思路。为切实提高新训干部骨干素质,集训队紧紧围绕“确保稳定、狠抓质量”的总要求,针对新训干部骨干带兵经验不足、能力较弱的现状,坚持把转变骨干理念作为此次集训的核心目标,进一步理清工作思路,精心组织教学力量,周密制定集训计划,为开展好此次集训奠定了坚实的思想基础。 (二)自主管理,提前磨合,打牢了团队根基

Acm集训营培训心得

Acm集训营培训心得 参加暑期acm训练营的培训,让我收获了好多,感想也特别特别多,也学会了许多。所以特别感谢集训营中为我们上课的老师对我们做的培训。 经过特训营的培训,我了解到了许多关于acm的一系列知识。我感触特别深。作为ACM的新手,有兴趣而经验不足,然而有些热心的学者与老师多是向新手推荐书籍,如刘汝佳的算法竞赛入门经典,算法艺术与信息学竞赛及算法导论。不知这些是否是有针对ACM的系统教材,始终在这偌大的书籍中感到彷徨。但我觉得一方面它们倾向于理论证明、缺乏实战性,当时总是希望有位知识渊博的学者能带着我走。可这一切只是天方夜谭,更多的只能希冀在自己的身上。暑假集训从早上9点到下午5点,中间吃饭睡觉花掉3个小时左右,一天有6个小时上课时间,也许这段时间的确不是很长,每上五天课便会放假一天。看似好轻松,然而过于集中精力死盯这电脑屏幕,久而久之会有突如其来的疲倦。如果您想要从一个新手改造成一个合格的队员,你所感到的便是你的疯狂。引入ACM的历史,然后便是三道都是A+B,而且有样例程序培训,开始的第一节莫过于热身。这不仅能带给我们激情和勇气,同时看似基础性的东西却往往是胜败的关键点,使得我们不可松懈。接着便是从最简单的算法开始介绍,依次是:线性表,栈,队列,枚举法,递推法,递归法,分治法,树,搜索,图论的相关知识,并查集,动态规划,大数问题,字符串问

题。线性表,栈,队列:都有顺序结构和链式结构;栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。而这三者都是来自数据结构的知识,数据结构数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。同时这门课程也是非常难学,需要我们花费更多的功夫。对于ACM的竞赛,更多的是注重于你对题目的灵活运用,采取比较简便的方法,所以便引入了枚举法,递推法,递归法,分治法,动态规划等技巧性较强的专门课程。复杂的ACM竞赛题往往蕴藏着精深的数学道理,需要的是数学知识的结合,学以灵活变通。就是这样才让人感觉到它是种让人从粗浅走向智慧,从蒙昧走向文明,从低级走向高级,从不完善走向完善的艰难历程。除了对这些学术上的专业注重,然而也需要学习英语知识,大多数的竞赛题目是英文,为了更加趋于国际化,英语也成为国际的交流语言,所以学习英语义不容辞,不可推卸。通过以上报告间隙,我结合自身学习实际,进行了客观的对比与反思。在今后的学生涯中,我要查漏补缺,通过学习来完善自身专业素养,努力为自己的梦想实践。

ACM经典算法及配套练习题

POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,p oj2255,poj3094) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序(poj1094) (5)二分图的最大匹配(匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) 三.数据结构. (1)串(poj1035,poj3080,poj1936) (2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法(数的Hash,串的Hash) (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) (5)哈夫曼树(poj3253) (6)堆 (7)trie树(静态建树、动态建树) (poj2513) 四.简单搜索 (1)深度优先搜索(poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学:

部队集训心得体会范文3篇

部队集训心得体会范文3篇 军事训练是提高部队战斗力的根本途径,也是圆满完成执勤任务的根本保证。下面是我收集的关于部队集训后的心得体会,供大家查阅! 部队集训心得体会一 通过参加这次训练,使我感悟很多。 顽强拼搏,勤奋实干,是取得成绩的前提。这次军训,是为了加强后备干部的国防教育、增强国防观念,对我们锤炼作风、磨练意志、增强体魄、提高综合素质、培养大局意识、团队精神、提高办事效率而进行的一次练习。在整个军训期间,我按照任务要求,始终把自己当作一名普通战士,严格要求,进行了认真的学习和刻苦的练习。军训使我知道了部队的终极目标是"打得赢,不变质",一切训练和工作都围绕此目标展开,不允许空谈,只有实干,必须付出血和汗的代价才能取得成绩。令我感触较深的是,现在机关上已经不再鼓励"带病坚持工作",稍有不适便可请假,而部队仍在提倡"挺一挺"的精神,不准随意请假。军人的理念是:平时都不能咬牙坚持,还何谈战时的流血牺牲、为民奉献。我们参训刚开始的几天,春寒料峭,气温忽高忽低,昼夜温差大,是感冒多发季节,加上训练强度很大,拉伤韧带的有之,感冒生病者有之。参训的都是各单位的负责人,很少有这样的经历,但面对困难,没有一个人愿意退出,因为这是勇气和意志的较量,谁也不愿当懦夫。 严守纪律,令行禁止,是战无不胜的法宝。实践经验告诉我们,守纪律是一种无形的巨大力量。部队作风纪律好,战斗力就强,在战斗中就会攻如猛虎,守如泰山,无论条件多么艰苦,环境多么恶劣,都拖不垮,打不烂,坚持到底。 训练具有磨练意志、陶冶情操、完善自我、熔炼团队"内涵,是一项来源于挑战极限的训练活动,旨在激励人的斗志,激发潜在能力,创造性的发挥人的团队能力。给予我的启发和体验却是一笔永久的精神财富,无论将来我身处何种岗位,只要用心体会就能得到十分有益的人生感悟。 部队集训心得体会二 按照培训班的安排,我在武装部民兵训练基参加了为期一周的军事训练。这期间,我认真按照军训的要求,端正态度,转换角色,遵守纪律,勤学苦练,

ACM训练计划

ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段:练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先. 相关的知识 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 负边权最短路径 Bellman-Ford Bellman-Ford的Yen-氏优化 差分约束系统 Floyd 广义路径问题 传递闭包 极小极大距离/ 极大极小距离

Euler Path / Tour 圈套圈算法 混合图的Euler Path / Tour Hamilton Path / Tour 特殊图的Hamilton Path / Tour 构造 生成树问题 最小生成树 第k小生成树 最优比率生成树 0/1分数规划 度限制生成树 连通性问题 强大的DFS算法 无向图连通性 割点 割边 二连通分支 有向图连通性 强连通分支 2-SAT 最小点基 有向无环图 拓扑排序 有向无环图与动态规划的关系 二分图匹配问题 一般图问题与二分图问题的转换思路 最大匹配 有向图的最小路径覆盖 0 / 1矩阵的最小覆盖 完备匹配 最优匹配 稳定婚姻 网络流问题 网络流模型的简单特征和与线性规划的关系最大流最小割定理 最大流问题 有上下界的最大流问题 循环流 最小费用最大流/ 最大费用最大流

消防员集训心得体会范文(精选3篇)

消防员集训心得体会范文(精选3篇) 消防员集训心得体会范文 有了一些收获以后,可用写心得体会的方式将其记录下来,这么做能够提升我们的书面表达能力。那么问题来了,应该如何写心得体会呢?以下是为大家整理的消防员集训心得体会范文,欢迎大家分享。 消防员集训心得体会1 今天是9月21日,在集训队已经有六天了,时间也过了三分之一。在未来的三分之二的日子里我们会更加的刻苦训练和学习。 通过支队各个部门的领导和各基层的军政主官来给我们授课,让我们受益匪浅。有崇尚荣誉建功业,器材维护和日常保养,初级救护、现场急救等一些平常在中队学不到的东西。 这次的集训让我认识到了中队里学不了这么多的东西,我想我能把这些集训里所学好的方面带回中队去。 学习是不断的,学也学不完。所谓“学而时习之,不亦乐乎”学到的东西就该拿出来和大家一起分享一起学习。活到老学到老的老传统。学的越多对自己越是有益无害的。 消防员集训心得体会2 俗话说“出门看队伍,在家看内务”作为一名军人,被子的质量决定了我们做事情的态度。 记得新兵时排长跟我们讲过这样一句话,“叠被子是磨练你们的

心态。”这句话深深地留在我军旅生活的旅途中,每天摸被子,我都会用心的去叠,去整,叠出我心目中的“豆腐块”。 叠被子好比搞卫生磨练每名军人做事的态度和细节问题。被子叠好了干事情,办工作也就很清楚,有条理给领导的印象也就深刻,在干部心中的地位,也就有一席之地。 集训15天,15天时间不可能把每名队员都训练成消防铁人,15天的晋级集训是摆正每名队员的态度,晋级以后,每名队员都是中队的中间和骨干力量,在灭火救援和抢险救援中发挥着兵头将尾的重要作用。 在集训队叠被子磨练每名队员做事干工作的认真态度和注重细节问题,培养良好的工作作风,严肃认真的灭火救援态度,“细节决定心态,被子决定态度,态度决定一切”我们每名队员要从叠被子着手,注重细节,培养认真热情的工作作风,在自己平凡的岗位上发挥自己的光和热,干出不平凡的业绩。 消防员集训心得体会3 看着镜子中的我:相貌没有变,但是皮肤黑了。头脑没有变,但是知识充实了,回想过去,我是一个没有上进心,纪律性缺乏的人。放眼现在,我变成一个坚强积极有几率的兵,能拥有这些奇妙的变化都要归功于此次集训。 在这次集训中我尝尽了生活的’五味瓶,酸的是在受到领导批评时的心情、甜的是和可爱的战友生活在一起,一起欢笑一起努力,共同奋斗,苦的是在皎阳似火和风雨交加的天气下训练、辣的是纪律就

acm动态规划总结

动态规划题目总结(一) 对于一个有数字组成的二叉树,求由叶子到根的一条路径,使数字和最大,如: 7 38 8 1 0 2 7 4 4 4 5 2 6 5 这个是经典的动态规划,也是最最基础、最最简单的动态规划,典型的多段图。思路就是建立一个数组,由下向上动态规划,保存页子节点到当前节点的最大值,Java核心代码如下: for(int i=num-2;i>=0;i--){ for(int j=0;j<=i;j++){ //该句是整个动态规划的核心 number[i][j]=Math.max(number[i+1][j],number[i+1][j+1])+number[i][j]; } } Pku acm 1579 Function Run Fun 动态规划题目总结(二) Consider a three-parameter recursive function w(a, b, c): if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1 if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 这本身就是一个递归函数,要是按照函数本身写递归式,结果肯定是TLE,这里我开了一个三维数组,从w(0,0,0)开始递推,逐步产生到w(20,20,20)的值,复杂度O(n^3). 总结:这道题是很地道的DP,因为它的子问题实在是太多了,所以将问题的结果保存起来,刘汝佳《算法艺术和信息学竞赛》中115页讲到自底向上的递推,这个例子就非常典型。总体来说这个题目还是非常简单的,不过这个思想是地道的动态规划。 Pku acm 2081 Recaman's Sequence 动态规划题目总结(三) 一道很简单的动态规划,根据一个递推公式求一个序列,我选择顺序的求解,即自底向上的递推,一个int数组result根据前面的值依此求出序列的每一个结果,另外一个boolean数组flag[i]记录i是否已经出现在序列中,求result的时候用得着,这样就避免

集训总结心得

集训总结心得 在我们团队内部举行了一场心得分享会,让我欣慰的是一些人进步真的很大。以下就是小编整理的集训总结心得,一起来看看吧! 篇1:集训总结心得真的很感谢你的教诲和辛勤付出。在回来的路途中,我感到有股力量在我的全身涌动,心里很快乐,有种豁然开朗的感觉,自己内心的心结被打开了。从那一刻,我下定决心一定要好好学习,好好做人,珍惜我自己,珍惜我身边的每一个人。 昨天,在我们团队内部举行了一场心得分享会,让我欣慰的是一些人进步真的很大。从一开始的不敢上台、不知道讲些什么,到现在站在讲台上挥洒自如、滔滔不绝,这或许与他们天生的模仿、学习能力有关。但让我想到更多的是种种感悟、心得与个人阅历、日常经历密切相关。有些事,只有一路走过,才会有更深刻的体会,与他人产生共鸣,从而化为自己持之以恒向前迈进的动力和生命能量。我很感谢疯狂英语团队,她让我坚持了早期将近两年的时间,让我经历了风风雨,结识了很多有理想有抱负、坚定不移下定决心改变自己的人。经过这么多天的坚持,我发现其实每天早上不单单是提高英语水平的过程,更多的是对自己理想和目标呵护的过程,只有经历了更多的这样的过程,才能够更深刻的理解母亲十月怀胎的辛苦,才能在心中筑起母亲呵护孩子般

的爱。 "没有不完美的团队,只有不完美的个人。"我渐渐的发现作为的负责人,自己的一言一行都会给团队留下或深或浅的影响。比如我的冷淡,每次到讲台上都给大家一种冷冰冰的感觉,以致于不能很好地把大家的活力调动起来。走的时候你留给我们一句话:“团队改变之时,就是你改变之日。”的确,要想让团队发展壮大,按照理想的轨迹前进,就要严格要求自己,追求个性上的完美。 “众生皆苦,大爱无疆。——温度!”这是我总结的此次集训给我影响最深的一点。活在世上的每个人,无论是表面风光的,还是自认为高高在上的,内心都有自己的苦楚。每个人的内心都是一池平静的水,外界的任何风吹草动都会激起一片涟漪,只不过有些人默默的承受了······。所以,我们要学会包容他人的错误,不要对他人发脾气,怀着一颗博爱的心对待身边的每一个人。 立足现实,把握核心。人不能总是活在精神世界里,它只是一个虚构的框架,重要的是要落实到行动上。无论什么事,只要在自己的职责范围内,都要尽责去做,做到全力以赴。我相信我的行动会证明一切。再次感谢储大哥对我的教诲和指导。 篇2:集训总结心得为期一个月的全省新训干部骨干集训今天就要结束了。回顾一个月的集训生活,大家在时

四会教学法集训心得体会

四会教学法集训心得体会 下面由小编为您收集的关于四会教学法集训心得体会,欢迎阅读参考学习,希望对您有所帮助。 四会教学法集训心得体会:紧凑的课程安排,紧张的学习氛围,让我感觉时间过得飞快,短短的三天半的集训显得意犹未尽。经过本次的集训,让我收获颇丰,以下是个人对本次集训的小结与建议: 1、课程安排合理紧凑,充分利用好了集训时间。 “执法办案业务”、“群体性事件防范处置”、“暴力抗法案件对策”等课程,理论结合实际,生动形象,通过学习,对我的认识和业务水平的提高有很大的帮助。作为一名准军事化单位的工作人员,队列训练加强我的组织性和纪律性,让我有一种集体荣誉感。只是个人感觉集训时间太短,有些课程有意犹未尽的感觉,我的队列训练也没练到很好,因此希望下期能适当延长集训时间,合理安排更多的业务知识学习以及体能训练课程。 2、集训非常有必要,有利于提升队伍的形象。 集训对我们业务水平提升和队伍形象的建设帮助很大。考虑到每个队员的起点不一样,每个时期也都会出现新的执法情况,因此希望能把集训常态化,让队员每年都有机会过来学习与交流,以不断提升自身素质,打造良好的执法队伍形象。

最后,感谢市局组织此次集训,我会把所学的知识运用到实际工作中,以更优秀的状态投入到城市管理行政执法工作中来。 四会教学法集训心得体会(二):本人退伍8年了,从接触军装至今17年。这我个人的一些关于在部队训练的想法和见解首先,说说最基础的队列训练。这是一个基础,贯穿你在部队的整个生涯,无时不刻不在用它。执勤的时候用,训练的时候用,可以说是最基本的,也是最能磨练人性子的一个训练,也是最能体现作风,养成,意志的表现。站如松,坐如钟。我所在的老家,有一对双胞胎兄弟参加过99年大阅兵,我在入伍前见过其中的哥哥,得知我要当兵,特地过来看一下,我本身就是和他是校友。我去迎接他是跟在他后面,特地看了一下他走路的姿势和步速,秒表卡的一样,精准。到屋里坐下,腰板挺的直溜溜的。感觉特别帅气。那是他已经退伍了,还能保持着这样的姿态,我知道这不是做作,而是真正的养成。在部队的时候,有些人特别不喜欢训练这个最基本的,认为是没有用的。但是,你没想想,三大条令里有内务条令,纪律条令,还有队列条令。那个士兵不是从最基本的队列练起?给学生军训不也是从最基本的队列训练开始的?包括世界各国的阅兵,不也是队列行进吗?再接着说,你退伍了,你还能像在部队一样玩枪操炮吗?肯定是不能的!到最后你保留了什么?不还是作风和养成吗!当然了,别的科

ACM训练指南

ACM练习建议 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm 主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段: 练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。 5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 6.博弈类算法。博弈树,二进制法等。 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统. 10. 双向广度搜索、A*算法,最小耗散优先. 第三阶段: 前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法 。这就要平时多做做综合的题型了。 1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。

2020年辅警集训心得体会

辅警集训心得体会 我叫**,是县公安局**派出所辅警中队的副中队长,一级辅警。作为县局第二批参训的辅警一员,我觉得十分的荣幸,五天的学习、培训结束了,在**警官学院多名专家教授的下、在县局辅警办领导的全程陪伴下,此次学习、培训都是在紧张而又愉快的氛围中渡过的。在这请允许我向**警官学院的领导、专家教授以及县局的各位领导表示衷心的感谢。通过此次学习培训,我对照自身实际找出了自己在工作、生活中仍存在的不足之处,也使我清醒地认识到:在当前日益复杂的社会形势下,作为一名公安辅警一定要有紧迫感和危机意识,日后要不断加强理论知识和警务技能的学习掌握,努力提升公安业务水平,只有不断的提升自我能力才能更好地开展各项公安工作。 此次县局首次集中辅警有组织地开展学习、培训,这充分说明县局顺应时代发展深化公安改革,把推进辅警队伍建设落到实处。这次的学习培训机会对我来说是异常珍贵的,我特别的珍惜,学习期间我认真学习了各种理论知识,扎实开展各项警力技能训练,通过五天的学习训练,极大地丰富了我的思想,提升了我的业务水平,增强了身体素质,可谓是收获满满。 我是xx年开始从事辅警工作的,16年来我有幸见证了县公安局日新月异的发展,从xx年公安机关推进户籍人口化管理到目前的业

务全面网上办理;从执法办案手工化到办案全流程网上流转;从纸质化到办公无纸化,从全县实有人口几十万到目前的突百万,从县局当时只有几十名联防队员到目前拥有600多人的庞大队伍,这无不见证着**公安的不断发展和壮大。我们辅警一直以来都是一支待遇少、社会认可度低的群体,队伍很难留住人,严重影响了队伍的凝聚力和战斗力。为了改变这种现状,全面提升辅警归属感。近年来,县公安局党委高度重视,以中央、省、市文件为引导,多次赶赴外地学习、调研辅警的先进管理机制,借鉴外地先进做法,结合辅警实际,大胆创新,在全省率先对辅警队伍进行改革,提高待遇、强化管理,改革后不但使我们的工资待遇有了较大的提高,也明确了辅警的职业发展方向。作为辅警,我们要对县局党委所做的努力和付出心存感激。 下步工作中,我们要把这份感激化为工作动力,要格外珍惜自己的岗位,在强化学习,提升能力的同时,更要加强纪律作风建设。纪律是队伍的“生命线”,辅警是公安队伍的重要组成部分,其一言一行都代表着公安机关的形象,作为一名辅警我们在工作中要听众命令、服从指挥,按各种规章开展各项工作,不徇私枉法、不打探案情、不泄露秘密、不乱结交社会人员,做一个对自己有要求的人,不论在什么时候,不论在什么地方,都得体地管理好自己的言行举止,时时刻刻维护好公安机关良好的形象。

特警训练心得体会

开训动员心得体会 现代社会飞速发展,对于我们担负执勤处突和维护社会和谐稳定的特警队伍来说,如何确保在各种情况下的任务完成是我们当前工作的重点。支队于3月2日开始了为期三个月的强化训练生活。自训练的第一天,我就感觉到了训练生活的紧张与劳累,深刻的体会到我们的身体素质较一名优秀的特警队员的要求还有很大的差距,距离成为一名合格的特警队员还需要更加刻苦的训练,需要我们学习的东西还有很多很多.......。 当代警察,不仅需要较高的文化素质,较强的应用能力、适应能力,而且需要具有坚强的意志,顽强拼搏的精神,用训练来培养这种精神是最佳方式。在培养意志和拼搏精神的同时,更培养了队员组织纪律观念。 对于我自身来讲,此次集训是我入警五年来公安工作涵盖最为全面的一次,这次学习内容对于自身来说重要性不言而喻,我也会把握好这次提高自己的机会,结合往年的集训经验,把此次训练任务完成好。 为圆满完成此次集训任务,我决心做到以下: 一、刻苦训练、加强自我管理能力。坚决做到每一个科目保质保量完成。

二、扬长避短、优势互补。参加此次集中训练的队员来自不同的中队,每一名队员都有优势的一项,也存在劣势的一面,为了能够取得共同的进步,我将时刻总结训练经验,交流训练心得,并且汲取兄弟支队的优秀训练方法,以达到事半功倍的效果。 三、严守纪律、注重修养。保证做到遵守支队各项规章制度、严格执行大队一日生活制度,在平时严格要求自己,时刻注意特警形象。 特警队员要在训练的有限时间里,汲取无限的知识,发扬“不抛弃、不放弃”的攻坚精神,培养瓷都特警“居则有礼、动则有威、攻无不克、坚不可摧”的精神,培养一支“心坚如铁、志强如钢,攻必克、守必住、打得赢”的攻坚队伍。用对人民群众负责、对自身安全负责、对执法执勤工作负责的高度的责任心严格落实训练,取得训练工作综合素质的切实提高。 特勤二大队民警:×× 二〇一一年三月四日

弱校的ACM奋斗史

弱校ACM的奋斗史 不知道什么时候,开始知道ACM;也不知道什么时候,开始喜欢上ACM。但是,我知道,我喜欢上了,而且不会后悔。我是大一的时候进的学校ACM队,那个时候,一切都是冰冷的,华东理工大学,在别人的眼里,只是每次给别人垫底的学校,次次如此。 但是,我们不甘心,我们从不甘心,当我们主力队员中的一个,一个月拼命集训,瘦了很多的时候,突然,我有一种哭的冲动。我问他,为什么?他告诉我:我喜欢ACM。也许是个傻傻的理由,但是就是这句话让我一直留在了这里,并且为了这个梦奋斗着。 也许是天资的原因,第一次,我们失败了,彻底的失败了,在上海输的好惨,也使得我们第二年的经费雪上加霜。曾经的梦想,曾经的努力,似乎在一刹那间被否定了。也就在那个时候,有人说了一句:我们只有大一,我们的路还长,于是,我就坚持了下来。 现在看看大一时候的我们,真的是什么都不会的一些人。 到了大二,我们更加努力的集训,在北京之前,我们第一次尝试了全天集训的滋味。30天90袋跑面20袋咸菜,每天4个小时的睡眠。当时我觉得我们一定会崩溃的,当我每次快要崩溃的时候,总会记起当时我们的话:“我们才大一,我们喜欢ACM,我们还有的拼,我们能拼。”于是,就奇迹一样的继续做题。 现在想起来,那真的是个奇迹,LIANG HH居然可以一个月只在床上躺了6个晚上,平均每天睡2个小时。就这样,我们在北京的时候,绝对意外的拿了第5名的成绩,当时的感觉绝对不是语言可以形容的,当时只是在想:我们终于证明自己了。 但是,这也是要代价的,LIANGHH回来就垮了,其他的人也不是很好受。但是,队长还是决定了去印度拼一下。决定的结果是:继续集训。那些日子我不愿意再回忆,也不愿意再来一次,但是,如果我必须要再来一次的话,我相信,我不会犹豫,因为:我喜欢ACM。 在印度的出现绝对不是一个奇迹,也不是运气,里面包含了苦涩,无奈,还有很多很多,当然最多的还是欣喜。 至于总决赛么,呵呵,就是去玩玩,也没有别的意思了。 我真的希望 大家加油!!! 不是因为别的原因,因为我们都曾经迷惑,无助,我们没有别人那么强的教练,没有别人那么好的基础,但是,我们都绝对不能放弃。绝对不能,因为,当我们坐在赛场上的时候,不管你是不是愿意,在你上空飘动的始终是你的校旗,别误会,我不是说什么要“为了学校争光”,那种话是用来哄小孩子的。我只想问大家,如果是你,坐在电脑前~~,你的背后有多少人在看着你?你的身上寄托的是什么? 是希望,是所有喜欢ACM的同学对你的希望,希望有这么一天,ACM也可以象其他的东西一样被其他的人所肯定,而不是什么需要被人怜悯的东西!!!!!!!!! 是信任,是所有曾经帮助过你和被你帮助过你的人对你的信任,想想为了经费而受尽了苦的人们,想想其他曾经一起集训的队员们的信任。他们信任你,你们会是最好的。只要你们尽力了,你们就是英雄。不过,没有人同情失败的英雄吧。所以,我们必须成功。 还有,是耻辱,是一种被轻视和忽视的耻辱,不知道你们有没有这样的经历,当初我们想找一个比我们水平高的学校共同学习一下,谁知道竟然换来的是一句:“就你们?”也许你们没有遇到过想我们一样尴尬的场面,不过,我相信,这种感觉在你们心里也很深刻吧。从很多地方都能体会到。 如果,现在我们寄托了这些东西的话,谁还会告诉我:我们不该奋斗呢?

通用版培训感想总结(4篇)

通用版培训感想总结(4篇) 近期的培训学习,本人切实的感觉到了自身的提高,在此感谢上级安排的此次学习活动,感谢每一位授课老师精彩的授课。此次的培训学习,使自己的理论基础,道德水准,业务修养等方面有了比较明显的提高,进一步增强了学习理论的自觉性与坚定性,增强了做好新形势下本职工作的能力和信心。参加本期培训本人主要有以下几方面体会和收获: 一、通过培训,使我进一步增强了对学习重要性和迫切性的认识 培训是一种学习的方式,是提高业务知识的最有效手段。21世纪是知识经济社会,是电子化、网络化、数字化社会,其知识更新、知识折旧日益加快。一个国家,一个民族,一个个人,要适应和跟上现代社会的发展,唯一的办法就是与时俱进,不断学习,不断进步。通过培训班的学习,使我进一步认识到了学习的重要性和迫切性。认识要面对不断更新的工作要求要靠学习,要靠培训,要接受新思维、新举措。要通过学习培训,不断创新思维,以创新的思维应对竞争挑战。我真正认识到加强培训与学习,是我们进一步提高业务知识水平的需要。加强培训与学习,则是提高自身工作能力最直接的手段之一,也是我们提高业务水平的迫切需要。只有通

过加强学习,才能取他人之长补己之短,只有这样,才能不负组织重望,完成组织交给的工作任务。 二、通过学习培训,使我清楚地体会到要不断加强素质、能力的培养和锻炼 1是要不断强化全局意识和责任意识。“全局意识”,是指要站在全局的立场考虑问题,表现在政治上是一种高度的觉悟,表现在思想上是一种崇高的境界,表现在工作上是一种良好的姿态。要求我们用正确的思路来思考解决当前存在的问题,就是要求我们要有超前的思维,要有悟性,有创新精神,而不是仅仅做好自己负责的那一方面的工作了事,要始终保持开拓进取的锐气;要牢记“全局意识”,自觉适应目前形势发展需要,认真学习实践科学发展观活动,不断增强使命感和社会责任感,提高自身能力素质和调整好精神状态,为社会发展献计献策,贡献力量。要树立群众利益第一位,局部服从整体,小局服从大局的原则,始终保持健康向上、奋发有为的精神状态,增强勇于攻克难关的进取意识,敢于负责,勇挑重担。 2 是要加强沟通与协调,熟练工作方法。要学会沟通与协调,要善于与领导、职工、相关服务单位进行沟通,要学会尊重别人,不利于团结的话不说,不利于团结的事不做,积极主

acm训练题-计算两点之间的距离

计算两点间的距离 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。 Output 对于每组输入数据,输出一行,结果保留两位小数。 Sample Input 0 0 0 1 0 1 1 0 Sample Output 1.00 1.41 程序: #include"stdio.h" #include"math.h" #define Max 100 double distance(float x1,float y1,float x2,float y2); void main() { float x1[Max],y1[Max],x2[Max],y2[Max]; double dist[Max]; int n=0,m=0; printf("输入你要输入的数据组数n="); scanf("%d",&n); printf("Input:\n"); for(m=0;m

相关文档