自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

I'm小宇宙

关注Acm/ICPC..

  • 博客(8)
  • 收藏
  • 关注

原创 并查集拓展应用

这篇文章原创的,见笑。。。     并查集是一种优秀的数据结构,能够支持快速的查找某元素所在的集合以及合并操作。最常见的并查集的实现方式是森林,通过记录所有结点或者部分结点(下面会看到)的父节点来记录森林。并查集的详细实现方式可以参考CLRS第二十一章。     信息学竞赛中基本的并查集题目比较少,大多要对并查集进行一些拓展,多记录一些信息以完成计算。竞赛的题目有很大一部分是询问两个结点的相对

2010-08-16 21:46:00 793

原创 【08暑假集训】题目推荐(8.21日更新) @ NKOJ discuss

<br />状态压缩动态规划<br />nkoj 1068 Islands and Bridges <br />poj 3229 The Best Travel Design<br />poj 1038 Bugs Integrated, Inc. <br />poj 2411 Mondriaan's Dream<br />poj 1185炮兵阵地<br />===========================8.20==============================<br />记忆化搜索:<br

2010-08-16 21:41:00 2390

原创 食物链(并查集问题)pku1182

http://acm.pku.edu.cn/JudgeOnline/problem?id=1182#include #define max 50000+5 int f[max]; int r[max]; /* rank[x]表示father[x]与x的关系 rank[x] == 0 表示father[x]与x是同类 rank[x] == 1 表示x吃father[x] rank[x] == 2 表示father[x]吃x */ void make

2010-08-16 21:37:00 618 2

转载 组合数计算问题的总结

计算组合数的方法有3种(鄙人目前知道的)1.(n,m)=n!/((n-m)!*m!)这种计算如果m n很大的话 极易益出2.(n,m)=n/m*(n-1,m-1);这种不容易保持精度:可以用double型进行保持double zuhe(int a,int b)//(b,a)//效率不怎么高{    double sum=1;    while(a)    {        sum*=b/a;        /* while(sum>=32767) //取模的时候        sum-=32767;*/  

2010-06-15 10:59:00 984

原创 2010校选拔赛题目H

/*h*/#include #include double hanshu(int n,int m);int main(){ int n,m; int i,j,k; scanf("%d",&n); for (i=1;i  printf("%10.0lf",hanshu(n,i)); return 0;}double hanshu(int n,int m){ int i,j,k; double n1=1,m1=1; int s1=0,s2=0; if (n {  if (m  {   n1=1;m1=1;   

2010-06-15 10:31:00 499

转载 计算组合数

计算组合数最大的困难在于数据的溢出,对于大于150的整数n求阶乘很容易超出double类型的范围,那么当C(n,m)中的n=200时,直接用组合公式计算基本就无望了。另外一个难点就是效率。    对于第一个数据溢出的问题,可以这样解决。因为组合数公式为:    C(n,m) = n!/(m!(n-m)!)为了避免直接计算n的阶乘,对公式两边取对数,于是得到:    ln(C(n,m)) = ln(n!)-ln(m!)-ln((n-m)!)进一步化简得到:这样我们就把连乘转换为了连加,因为ln(n)总是很小的

2010-06-15 10:08:00 1115 1

转载 全排列的生成算法

全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明排列的生成法。n个字符的全体排列之间存在一个确定的线性顺序关系。所有的排列中除最后一个排列外,都有一个后继;除第一个排列外,都有一个前驱。每个排列的后继都可以从它的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方法。全排列的生成法通常有以下几种:字典序法递增进位数制法递减进位数制法邻位交换

2010-06-15 00:07:00 688

转载 去重复数

#include "stdio.h"void main(){int array[10] ,n_array[10];int n=10; //n为数组中元素个数。for(int i=0;iscanf("%d",&array[i]);n_array[0]=array[0];int cnt=1;for( i=1;i{ int sign =1; //设置标志位,用于检查某数字是否在数组中出现过;for(int j=0;j{ if(array[i]==n_array[j]) {sign=0; break;}}if(si

2010-06-15 00:03:00 569

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除