Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs

同余 + 鸽巢原理

http://codeforces.com/problemset/problem/1305/C

题意:

给定n个数,n个数两两做差取绝对值,所有差的绝对值做累乘,再对m取模,求这个模的值。

思路:

如果n > m,则n个数中必有至少两个数对m同余,模就是0,如果n < m,m又是1e3范围内的,直接暴力即可。

AC代码:

Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第1张图片

 

树上dfs

http://codeforces.com/contest/982/problem/C

题意:

给你一棵n个结点的树,问最多删除多少条边,使得每个点的强连通分量都为偶数,不可能满足条件时输出-1。

思路:

推一下样例,就会发现只有该结点子树个数为偶数时(根结点除外),才可删除它的上一条边。如果结点数为奇数,那么删除边以后必然产生孤立点,输出-1。结点数为偶数时,进行树上dfs,找出子树个数为偶数的结点。然后下面的图解释了树上dfs以及回溯机制:

 Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第2张图片       Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第3张图片

Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第4张图片         Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第5张图片

AC代码:

Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第6张图片

Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs_第7张图片

 

你可能感兴趣的:(Codeforces)