杭州电子科技大学acm习题集锦

杭州电子科技大学acm习题集锦
杭州电子科技大学acm习题集锦

目录

1、数塔问题 (2)

2、并查集类问题 (4)

3、递推类问题 (9)

4、动态规划系列 (10)

5、概率类题型 (13)

6、组合数学类题型 (15)

7、贪心策略 (16)

8、几何问题 (19)

数塔类问题

数塔

Problem Description

在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗?

Input

输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。Output

对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。

Sample Input

1

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

Sample Output 30

#include

#include

#define MAX 101

int arr[MAX][MAX][2];

void res()

{

int n; int i,j;

memset(arr,0,MAX*MAX*sizeof(int));

scanf("%d",&n);

for(i=0;i

for(j=0;j<=i;j++) { scanf("%d",&arr[i][j][0]); arr[i][j][1]=arr[i][j][0]; }

for(i=n-2;i>=0;i--)

{

for(j=0;j<=i;j++)

{

if(arr[i+1][j][1]>arr[i+1][j+1][1]) arr[i][j][1]+=arr[i+1][j][1];

else arr[i][j][1]+=arr[i+1][j+1][1];

}

}

printf("%d\n",arr[0][0][1]);

}

int main()

{

int num;

scanf("%d",&num);

while(num--) { res(); }

return 0;

}

免费馅饼

Problem Description

都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy 的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy 平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:

为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中期中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)

Input

输入数据有多组。每组数据的第一行为以正整数n(0

Output

每一组输入数据对应一行输出。输出一个整数m,表示gameboy最多可能接到m个馅饼。

Sample Input

6

5 1

4 1

6 1

7 2

7 2

8 3

Sample Output

4

#include

#include

#define MAX 100001

int arr[MAX][13];

int Max(int n1,int n2,int n3)

{

int max;

max=(n1>n2)?n1:n2;

max=(max>n3)?max:n3;

return max;

}

void res(int num)

{

int i,j;

int n,m,count=-1;

memset(arr,0,MAX*13*sizeof(int));

for(i=0;i

{

scanf("%d%d",&n,&m);

arr[m][n+1]++;

if(count

}

for(i=count-1;i>=0;i--)

for(j=1;j<=11;j++)

arr[i][j]+=Max(arr[i+1][j-1],arr[i+1][j],arr[i+1][j+1]);

printf("%d\n",arr[0][6]);

}

int main()

{

int num;

scanf("%d",&num);

while(num)

{

res(num);

scanf("%d",&num);

}

return 0;

}

并查集类问题

畅通工程

Problem Description

某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?

Input

测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。

注意:两个城市之间可以有多条道路相通,也就是说

3 3

1 2

1 2

2 1

这种输入也是合法的

当N为0时,输入结束,该用例不被处理。

Output

对每个测试用例,在1行里输出最少还需要建设的道路数目。

Sample Input

4 2

1 3

4 3

3 3

1 2

1 3

2 3

5 2

1 2

3 5

999 0

Sample Output

1

2

998

#include

#include

#define MAX 2000

int n,m;

int arr[MAX][2];

int res[MAX];

int set;

void proc()

{

int i,j;

int rest;

set=1; //用来统计集合个数

memset(res,0,(n+1)*sizeof(int));

res[arr[0][0]]=res[arr[0][1]]=1;

for(i=1;i<=set;i++)

{

for(j=0;j

{

if(res[arr[j][0]]*res[arr[j][1]]) continue; //当前数据已经归类,则不进行任何操作

if(res[arr[j][0]]==i||res[arr[j][1]]==i)

{

res[arr[j][0]]=res[arr[j][1]]=i; //对数据进行集合划分

j=-1; //从第一组元素开始继续遍历

}

}

for(j=0;j

if(res[arr[j][0]]*res[arr[j][1]]==0) break; //遇到首或尾没有归类的情况的时候跳出if(j

else break; //如果当前数据全部归类则跳出所有循环

for(j=0;j

{

if(res[arr[j][0]]*res[arr[j][1]]==0){ res[arr[j][0]]=res[arr[j][1]]=set; break; }

}

}

rest=0;

for(i=1;i<=n;i++) if(res[i]==0) rest++;

if(m==0) printf("%d\n",n-1);

else if(rest==0)

{

if(set==1) printf("0\n");

else printf("%d\n",set-1);

}

else printf("%d\n",rest+set-1);

}

int main()

{

int i;

scanf("%d",&n);

while(n)

{

scanf("%d",&m);

for(i=0;i

proc();

scanf("%d",&n);

}

return 0;

}

how many tables

Problem Description

Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.

One important rule for this problem is that if I tell you A knows B, and B knows C, that means A, B, C know each other, so they can stay in one table.

For example: If I tell you A knows B, B knows C, and D knows E, so A, B, C can stay in one table, and D, E have to stay in the other one. So Ignatius needs 2 tables at least.

Input

The input starts with an integer T(1<=T<=25) which indicate the number of test cases. Then T test cases follow. Each test case starts with two integers N and M(1<=N,M<=1000). N indicates the number of friends, the friends are marked from 1 to N. Then M lines follow. Each line consists of two integers A and B(A!=B), that means friend A and friend B know each other. There will be a blank line between two cases.

Output

For each test case, just output how many tables Ignatius needs at least. Do NOT print any blanks.

Sample Input

2

5 3

1 2

2 3

4 5

5 1

2 5

Sample Output

2

4

#include

#define MAX 2000

int n,m;

int start[MAX],end[MAX];

int res;

int arr[MAX];

int len;

int Mempty()

{

int i;

for(i=0;i

if(start[i]!=0) return 0;

return 1;

}

int inSet(int index)

{

int i;

for(i=0;i

if(arr[i]==index) return 1;

return 0;

}

void deal()

{

int i;

int space=0;

for(i=0;i

{

if(start[i]==0) space++;

else { start[i-space]=start[i]; end[i-space]=end[i]; } }

m=m-space;

}

void proc()

{

int i; int j;

while(!Mempty())

{

i=0;

while(i

{

if(start[i]==0) { i++; continue; }

if(i==0)

{

if(start[i]!=end[i]) { arr[res++]=start[i]; arr[res++]=end[i]; }

else arr[res++]=start[i];

start[i]=end[i]=0;

}

else

{

for(j=0;j

{

if(arr[j]==start[i])

{

if(!inSet(end[i])) arr[res++]=end[i];

start[i]=end[i]=0;

i=-1;

break;

}

if(arr[j]==end[i])

{

if(!inSet(start[i])) arr[res++]=start[i];

start[i]=end[i]=0;

i=-1;

break;

}

}

}

i++;

}

len++; deal();

}

if(res==n) len--;

else len+=n-res-1;

}

int main()

{

int i;

int num;

scanf("%d",&num);

while(num--)

{

scanf("%d%d",&n,&m);

for(i=0;i

res=0; len=0; proc();

printf("%d\n",len+1);

}

return 0;

}

递推类问题

1、RPG问题(简单的递推问题)

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.

输入为方格数N(0<=N<=50),输出为满足要求的涂法

递推公式:f(n)=f(n-1)+2*f(n-2)

#include

int main()

{

__int64 i,arr[51];

__int64 num;

arr[0]=0; arr[1]=3;

arr[2]=6; arr[3]=6;

for(i=4;i<51;i++)

arr[i]=arr[i-1]+2*arr[i-2];

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

{

printf("%I64d\n",arr[num]);

}

return 0;

}

2、考新郎(错排系列递推)

国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.最后,揭开盖头,如果找错了对象就要当众跪搓衣板..

假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1

对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。

错排类递推公式为:f(n)=(m-1)*[f(n-1)+f(n-2)],其中m表示错排的个数(即错排的新人对数),n表示全部的新人个数。

#include

int main(void)

{

int i, m, n;

__int64 a[21][2] = {{1,0},{1,0},{2,1},{6,2}};

for (i = 4; i < 21; i++)

{

a[i][0] = i * a[i-1][0];

a[i][1] = (i-1) * (a[i-1][1] + a[i-2][1]);

}

scanf("%d", &i);

while (i-- && scanf("%d%d", &n, &m))

printf("%I64d\n", a[n][0]/a[m][0]/a[n-m][0]*a[m][1]);

return 0;

}

动态规划系列

How to Type

Problem Description

Pirates have finished developing the typing software. He called Cathy to test his typing software. She is good at thinking. After testing for several days, she finds that if she types a string by some ways, she will type the key at least. But she has a bad habit that if the caps lock is on, she must turn off it, after she finishes typing. Now she wants to know the smallest times of typing the key to finish typing a string.

Input

The first line is an integer t (t<=100), which is the number of test case in the input file. For each test case, there is only one string which consists of lowercase letter and upper case letter. The length of the string is at most 100.

Output

For each test case, you must output the smallest times of typing the key to finish typing this string.

Sample Input 3

Pirates HDUacm HDUACM Sample Output 8

8

8

#include

#include

#define MAX 200

int arr[MAX][4];

char str[MAX];

int letter(char ch)

{

if(ch>='A'&&ch<='Z') return 1;

return 0;

}

void proc()

{

int i;

int tmp,min;

int len=strlen(str);

for(i=0;i

{

if(i==0)

{

if(letter(str[i])) { arr[i][1]=2; arr[i][2]=2; }

else { arr[i][0]=1; arr[i][3]=3; }

}

else

{

if(letter(str[i])==letter(str[i-1]))

{

if(arr[i-1][0]){ arr[i][0]=arr[i-1][0]+1;arr[i][3]=arr[i-1][0]+3;}

if(arr[i-1][1]) { arr[i][1]=arr[i-1][1]+2; arr[i][2]=arr[i-1][1]+2;}

if(arr[i-1][2])

{

if(arr[i][0]>arr[i-1][2]+1||!arr[i][0]) arr[i][0]=arr[i-1][2]+1;

if(arr[i][3]>arr[i-1][2]+3||!arr[i][3]) arr[i][3]=arr[i-1][2]+3;

}

if(arr[i-1][3])

{

if(arr[i][1]>arr[i-1][3]+2||!arr[i][1]) arr[i][1]=arr[i-1][3]+2;

if(arr[i][2]>arr[i-1][3]+2||!arr[i][2]) arr[i][2]=arr[i-1][3]+2;

}

}

else

{

if(arr[i-1][0]){ arr[i][1]=arr[i-1][0]+2; arr[i][2]=arr[i-1][0]+2;}

if(arr[i-1][1]){ arr[i][0]=arr[i-1][1]+1; arr[i][3]=arr[i-1][1]+3;}

if(arr[i-1][2])

{

if(arr[i][1]>arr[i-1][2]+2||!arr[i][1]) arr[i][1]=arr[i-1][2]+2;

if(arr[i][2]>arr[i-1][2]+2||!arr[i][2]) arr[i][2]=arr[i-1][2]+2;

}

if(arr[i-1][3])

{

if(arr[i][0]>arr[i-1][3]+1||!arr[i][0]) arr[i][0]=arr[i-1][3]+1;

if(arr[i][3]>arr[i-1][3]+3||!arr[i][3]) arr[i][3]=arr[i-1][3]+3;

}

}

}

}

min=3*MAX;

if(letter(str[len-1]))

{

if(arr[len-1][0]){ tmp=arr[len-1][0]+1; if(tmp

if(arr[len-1][1]){ tmp=arr[len-1][1]; if(tmp

if(arr[len-1][2]){ tmp=arr[len-1][2]+1; if(tmp

if(arr[len-1][3]){ tmp=arr[len-1][3]; if(tmp

else

{

if(arr[len-1][0]) { tmp=arr[len-1][0]; if(tmp

if(arr[len-1][1]) { tmp=arr[len-1][1]+1; if(tmp

if(arr[len-1][2]) { tmp=arr[len-1][2]; if(tmp

if(arr[len-1][3]) { tmp=arr[len-1][3]+1; if(tmp

printf("%d\n",min);

}

//Caps Shift:0-00;1-01;2-10;3-11

int main()

{

int num;

scanf("%d",&num);

while(num--)

{

scanf("%s",str);

memset(arr,0,strlen(str)*4*sizeof(int));

proc();

}

return 0;

}

最大连续子序列

Problem Description

给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,

Nj },其中1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,

例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和

为20。

在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。

Input

测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。

Output

对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元

素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。

Sample Input

6

-2 11 -4 13 -5 -2 10

-10 1 2 3 4 -5 -23 3 7 -21 6

5 -8 3 2 5 0 1

10

3

-1 -5 -2

3

-1 0 -2

0 Sample Output 20 11 13

10 1 4

10 3 5

10 10 10

0 -1 -2

0 0 0

#include

#include

#define MAX 20000

int arr[MAX];

int main()

{

int num,temp,i,flage;

int sum,start,end,max=-32768;

scanf("%d",&num);

while(num!=0)

{

memset(arr,0,MAX*sizeof(int));

for(i=0;i

scanf("%d",&arr[i]);

sum=0;

temp=0;

max=-32768;

flage=0;

for(i=0;i

{

if(arr[i]>=0) flage=1;

sum+=arr[i];

if(max

if(sum<0) { sum=0; temp=i+1; } }

if(flage) printf("%d %d %d\n",max,arr[start],arr[end]);

else printf("0 %d %d\n",arr[0],arr[num-1]);

scanf("%d",&num);

}

return 0;

}

概率类题型

糖果大战

Problem Description

生日Party结束的那天晚上,剩下了一些糖果,Gandon想把所有的都统统拿走,Speakless 于是说:“可以是可以,不过我们来玩24点,你不是已经拿到了一些糖果了吗?这样,如果谁赢一局,就拿走对方一颗糖,直到拿完对方所有的糖为止。”如果谁能算出来而对方算不出来,谁就赢,但是如果双方都能算出或者都不能,就算平局,不会有任何糖果的得失。Speakless是个喜欢提前想问题的人,既然他发起了这场糖果大战,就自然很想赢啦(不然可就要精光了-_-)。现在他需要你的帮忙,给你他每局赢的概率和Gardon每局赢的概率,请你给出他可能获得这场大战胜利的概率。

Input

每行有四个数,Speakless手上的糖果数N、Gardon手上的糖果数M(0<=N,M<=50)、一局Speakless能解答出来的概率p、一个问题Gardon能解答出来的概率q(0<=p,q<=1)。Output

每行一个数,表示Speakless能赢的概率(用百分比计算,保留到小数点后2位)。

Sample Input 50 50 0.5 0.5 10 10 0.51 0.5 50 50 0.51 0.5 Sample Output 0.50

0.60

0.88

#include

#include

const double EPS = 1e-12;

inline void solve(int n, int m, double p, double q)

{

if(n==0) printf("0.00\n");

else if(m==0) printf("1.00\n");

else if(p==0.0||q==1.0) printf("0.00\n");

else

{

double lamda = q*(1-p)/(p*(1-q));

if(fabs(lamda-1.0)

else

{

double res = (1-pow(lamda, n))/(1-pow(lamda, m+n));

printf("%.2lf\n", res);

}

}

}

int main()

{

int n, m;

double p, q;

while(scanf("%d%d%lf%lf", &n, &m, &p, &q)!=EOF) {

solve(n, m, p, q);

}

}

组合数学类题型

新生晚会

Problem Description

开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?Input

数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。

每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)Output

每组数据输出一个整数,每个输出占一行

Sample Input 5

3 2

5 3

4 4

3 6

8 0 Sample Output 3

10

1

1

这里用到的数学公式为:c m n=c m n1-+c m n1-(注意用一维数组来计算此式的技巧)#include

#include

#define MAX 1000

int arr[MAX];

long solve(int n,int m)

{

int i,j;

arr[0]=1;

for(i=1;i<=n;i++)

{

for(j=i;j>-1;j--)

{

if(j==0||i==j) arr[j]=1;

else arr[j]+=arr[j-1];

}

}

return arr[m];

}

int main()

{

int n,m;

scanf("%d",&num);

memset(arr,0,MAX*sizeof(int));

while(num--)

{

scanf("%d%d",&n,&m);

printf("%ld\n",solve(n,m));

}

return 0;

}

贪心策略

FatMouse' Trade

Problem Description

FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.

The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.

Input

The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All integers are not greater than 1000.

Output

For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.

Sample Input 5 3

7 2

4 3

5 2

20 3

25 18 24 15

15 10

-1 -1 Sample Output 13.333

31.500

#include #include #define MAX 1000 int main()

{

int i,j,m,n,temp;

int J[MAX],F[MAX];

double P[MAX];

double sum,temp1;

scanf("%d%d",&m,&n);

while(m!=-1&&n!=-1)

{

sum=0;

memset(J,0,MAX*sizeof(int));

memset(F,0,MAX*sizeof(int));

memset(P,0,MAX*sizeof(double));

for(i=0;i

for(i=0;i

{

for(j=i+1;j

{

if(P[i]

{

temp1=P[i]; P[i]=P[j]; P[j]=temp1;

temp=J[i]; J[i]=J[j]; J[j]=temp;

temp=F[i]; F[i]=F[j]; F[j]=temp;

}

}

}

for(i=0;i

{

if(m

else { sum+=J[i]; m-=F[i]; }

}

printf("%.3lf\n",sum); scanf("%d%d",&m,&n);

}

return 0;

}

今年暑假不AC

Problem Description

确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)

Input

输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i 个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结

束,不做处理。

Output

对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。

Sample Input 12

1 3

3 4

0 7

3 8

15 19

15 20

10 15 8 18

6 12

5 10

4 14

2 9

Sample Output 5

#include

#define MAX 200

int arr[MAX][2];

int num;

void res()

{

int i,j; int start;

int count=0,max=-1;

for(i=num-1;i>=num/2;i--)

{

if(count>max) max=count;

count=1;

start=arr[i][0];

for(j=i-1;j>=0;j--)

{

if(arr[j][1]<=start){ count++; start=arr[j][0]; }

}

}

printf("%d\n",max);

}

void prc()

{

int i,j;

for(i=0;i

scanf("%d %d",&arr[i][0],&arr[i][1]);

for(i=0;i

for(j=i+1;j

{

if(arr[i][0]>arr[j][0])

{

arr[i][0]+=arr[j][0]; arr[j][0]=arr[i][0]-arr[j][0]; arr[i][0]=arr[i][0]-arr[j][0];

arr[i][1]+=arr[j][1]; arr[j][1]=arr[i][1]-arr[j][1]; arr[i][1]=arr[i][1]-arr[j][1];

}

if((arr[i][0]==arr[j][0])&&(arr[i][1]>arr[j][1]))

{

arr[i][1]+=arr[j][1]; arr[j][1]=arr[i][1]-arr[j][1]; arr[i][1]=arr[i][1]-arr[j][1];

}

}

res();

}

int main()

{

scanf("%d",&num);

while(num)

{

prc();

scanf("%d",&num);

}

return 0;

}

几何问题

Rectangles

Problem Description

Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have to calculate the area of the intersected part of two rectangles. its sides are parallel to OX and OY .

Input

Input The first line of input is 8 positive numbers which indicate the coordinates of four points that must be on each diagonal.The 8 numbers are x1,y1,x2,y2,x3,y3,x4,y4.That means the two points on the first rectangle are(x1,y1),(x2,y2);the other two points on the second rectangle are (x3,y3),(x4,y4).

Output

Output For each case output the area of their intersected part in a single line.,accurate up to 2 decimal places.

Sample Input

1.00 1.00 3.00 3.00

2.00 2.00 4.00 4.00

5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50

Sample Output

1.00

56.25

#include

void res(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4) {

double tmpx1,tmpy1,tmpx2,tmpy2;

double tmpx,tmpy;

tmpx=x1+x2; x1=(x1>x2)?x2:x1; x2=tmpx-x1; tmpy=y1+y2; y1=(y1>y2)?y2:y1; y2=tmpy-y1; tmpx=x3+x4; x3=(x3>x4)?x4:x3; x4=tmpx-x3; tmpy=y3+y4; y3=(y3>y4)?y4:y3; y4=tmpy-y3; tmpx1=(x1>x3)?x1:x3; tmpx2=(x2>x4)?x4:x2; tmpy1=(y1>y3)?y1:y3; tmpy2=(y2>y4)?y4:y2;

if(tmpx1

int main() {

double x1,y1,x2,y2; double x3,y3,x4,y4;

while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF) {

res(x1,y1,x2,y2,x3,y3,x4,y4); }

return 0; }

无限的路

Problem Description

甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:

甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。 Input

第一个数是正整数N (≤100)。代表数据的组数。

每组数据由四个非负整数组成x1,y1,x2,y2;所有的数都不会大于100。 Output

对于每组数据,输出两点(x1,y1),(x2,y2)之间的折线距离。注意输出结果精确到小数点后3位。

Sample Input 5 0 0 0 1 0 0 1 0 2 3 3 1 99 99 9 9 5 5 5 5 Sample Output 1.000 2.414

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)组合数学:

杭州电子科技大学2017年博士生导师介绍罗志增

杭州电子科技大学2017年博士生导师介绍罗志增 一、导师照片 罗志增 二、基本信息 罗志增LuoZhizeng教授 所属学院:自动化学院 导师类别:博士生导师、硕士生导师 职务:研究生院院长 研究方向:模式识别与智能系统 博士招生学院:自动化学院 硕士招生学院:自动化学院 联系方式:luo@https://www.360docs.net/doc/c31818267.html,86915187 三、个人简述 罗志增,男,1965年8月生,浙江省慈溪人,1998年浙江大学工业自动化专业博士毕业。教育部新世纪优秀人才、浙江省“151”第二层次、浙江省教学名师。多年从事智能机器人、传感与信号处理、生理信息检测与处理、健康监测和分析、仿生控制等方面的研究,目前已在国内外杂志和学术会议上发表论文100余篇;获发明专利授权12项,编写专著和教材各1部。 四、学术成果 (一)代表性论文 1.Haitao Gan,ZhizengLuo,Yao Sun,etc,Towards designing risk-based safe Laplacian Regularized Least Squares,Expert Systems With Applications.45(2016)1-7SCI; 2.罗志增、周瑛、高云园,基于双密度小波邻域相关阈值处理的脑电信号消噪方法,模式识别与人工智能,一级,2014,27(5):403-409; 3.罗志增、王新栋、唐增,静立平衡压力中心参数的年龄性别因素研究,航天医学与医学工程,一级,2014,27(6):425-430; 4.罗志增、周镇定、周瑛、何海洋,双数复小波特征在运动想象脑电识别中的应用,传感技术学报,一级,2014,27(5):575-580; 5.韩俊、罗志增、张启忠,基于静态姿势图的人体平衡功能检测与评估,中国生物医学工程学报,一级,2014,33(5):539-545。 (二)代表性科研项目 1.国家863项目,自适应智能膝上假肢关键技术的研究,主持; 2.国家自然科学基金,基于脑电/眼电的特定运动想象多模式识别方法研究,主持; 3.国家自然科学基金,基于脑电和肌电的假手多自由度动作识别和控制方法研究,主持; 4.国家自然科学基金,基于触觉和肌电控制的前臂电动假肢研究,主持; 5.浙江省国际科技合作项目,基于多模态信息的人体运动功能障碍评估研究,主持。

杭州电子科技大学OJ题目分类

杭州电子科技大学OJ题目分类 1001 整数求和水题 1002 C语言实验题——两个数比较水题 1003 1、2、3、4、5... 简单题 1004 渊子赛马排序+贪心的方法归并 1005 Hero In Maze 广度搜索 1006 Redraiment猜想数论:容斥定理 1007 童年生活二三事递推题 1008 University 简单hash 1009 目标柏林简单模拟题 1010 Rails 模拟题(堆栈) 1011 Box of Bricks 简单题 1012 u Calculate e 简单数学计算 1013 STAMPS 搜索or动态规划 1014 Border 模拟题 1015 Simple Arithmetics 高精度计算 1016 Shoot-out 博弈+状态压缩DP 1017 Tour Guide 1018 Card Trick 简单题 1019 Necklace Decomposition 贪心 1020 Crashing Robots 模拟题 1021 Electrical Outlets 简单题 1022 Watchdog 简单题 1023 Taxi Cab Scheme 图论:最小路径覆盖--->最大二分匹配1024 Pseudo-random Numbers 数论 1025 Card Game Cheater 简单题 1026 Investment 动态规划 1027 Pipes 1028 SETI 数学:高斯消元法 1029 Minimax Triangulation 计算几何 1030 Unequalled Consumption 母函数 1031 Declaration of Content 1032 Laserbox 搜索:DFS 1033 Bowlstack 1034 Pesky Heroes 1035 Reduced ID Numbers 暴力 1036 Tantrix 1037 Guardian of Decency 图论:匈牙利算法求二分图的最大匹配1038 Up the Stairs 简单数学题 1039 Sudoku 搜索:DFS 1040 The SetStack Computer 1041 Pie 二分法 1042 Ticket to Ride 动态规划 1043 The Bookcase 动态规划

杭州电子科技大学2017年博士生导师介绍杭丽君

杭州电子科技大学2017年博士生导师介绍杭丽君 一、导师照片 杭丽君 二、基本信息 杭丽君Hang Lijun教授 所属学院:自动化学院 导师类别:博士生导师、硕士生导师 研究方向:电气工程及其自动化(高性能电力电子变流技术及其控制、FPGA和DSP开发和应用)博士招生学院:自动化学院 硕士招生学院:自动化学院 联系方式:ljhang@https://www.360docs.net/doc/c31818267.html, 三、个人简述 杭丽君,女,浙江海宁人,2002年/2008年获浙江大学电气工程学院学士/博士学位。浙江省“钱江学者”特聘教授。2011-2013年任美国田纳西大学电气工程及计算机系CURENT中心研究助理教授,2013-2015年任上海交通大学电子信息与电气工程学院副教授。 长期致力于高性能电力电子变流技术及其控制的研究,其应用涉及不间断电源(UPS)、电动汽车(HEV)、新能源分布式发电、交直流混合微电网、高压直流输电及传统电力系统领域;DSP及FPGA在电力电子领域的应用及开发,不断拓展DSP和FPGA等的应用技术及相关热门应用领域研究。主持和参与国家自然科学基金面上项目/青年基金/重点项目、国家科技支撑计划、上海市自然科学基金、中国博士后科学基金特别资助和一等资助、台达科教基金青年基金等多个项目。至2016年共发表本领域SCI/EI收录论文80余篇,其中国际IEEE TPE,IEEE TIE,IEEE TIA,IEEE TEC,IEE IET-PEL等本领域顶级及知名SCI期刊论文20篇,单篇最高他引200多次。曾获中国电源学会第二十一届学术年会优秀论文奖、上海交通大学“晨星”青年学者奖。长期与海内外知名高校研究所和企业保持良好的合作关系,培养了大批优秀的本科生和研究生,其中有两名硕士生获得国家奖学金。 本团队研究方向和课题与国内外前沿技术接轨,注重创新以及产学研结合,与企业有良好的合作关系。欢迎电气工程、自动化、电子信息、通信工程等相关专业学生报考。 四、学术论文 (一)代表性论文 1.M.Zhu,L.Hang,and atl.,“Protected Control Method for Power Conversion Interface under Unbalanced Operating Conditions in AC/DC Hybrid Distributed Grid”.IEEE Trans on Energy Conversion. 2.L.Hang and atl.,“A Novel Control Strategy Based on Natural Frame for Vienna-type Rectifier under Light Unbalanced-Grid Conditions,”IEEE Trans.Ind.Electron. 3.L.Hang and atl.,“Equivalence of SVM and Carrier-based PWM in Three-phase/wire/level VIENNA Rectifier and Capability of Unbalanced-load Control,”,IEEE Trans.Ind.Electron. 4.L.Hang and atl.,“Digitized Feedforward Compensation Method for High Power Density Three-Phase Vienna PFC Converter”,IEEE Trans.Ind.Electron. 5.L.Hang and atl.,"High Cross Regulation Multi-Output LLC Series Resonant Converter with Magamp Post-Regulator",IEEE Trans.Ind.Electron. (二)代表性科研项目 1.新型交直流电网中模块化多电平功率变换器的关键技术研究,主持,上海市自然科学基金委。 2.基于高性能功率换流器的虚拟电力系统,主持,台达科教基金委。

ACM题目整理

题目来源:福州大学acm网站 代码:fpcdq 一、入门 熟悉ACM竞赛规则以及程序提交注意事项 例题: Problem 1000 A+B Problem Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Calculate a + b. Input The input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line. Output For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input. Sample Input 1 5 2 3 Sample Output 6 5

My answer: #include main() { long a,b; while((scanf("%ld%ld",&a,&b))!=EOF) { printf("%ld\n",a+b); } } 详情参考https://www.360docs.net/doc/c31818267.html,/faq.php 二、ACM分类 主流算法: 1.搜索//回溯 Problem 1019 猫捉老鼠 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 一只猫和一只老鼠在10*10的迷宫中。迷宫中的每个方格可以是空的,或者含有障碍。猫和老鼠可以进入任意一个空的方格中。当他们相遇时,猫和老鼠在同一个方格中。但是,无论猫或老鼠都不能进入有障碍的方格。我们可以用字符组成的二维数组表示迷宫,如下图所示。

ACM必做50题——模拟

1、POJ 1029 False coin Slyar:又是假币判断问题,跟POJ1013类似,不过这个题用1013那个算法W A了...后来换了种枚举的算法才过...思路就是假币应该在每个不等式中都出现,最后只要看哪个硬币出现的次数和不等式出现的次数相同,如果这个硬币唯一,那它就是确认的假币。 #include #include using namespace std; const int MAX = 1001; int main() { int n, k, p, total = 0; char sign; /* 记录原始数据*/ int t[MAX] = {0}; /* 标记硬币真假*/ int r[MAX] = {0}; /* 记录硬币重量*/ int w[MAX] = {0}; cin >> n >> k; while (k--) { /* 读入原始数据*/ cin >> p; for (int i = 0; i < 2 * p; i++) { cin >> t[i]; } cin >> sign; /* 标记肯定为真的硬币*/ if (sign == '=') { for (int i = 0; i < 2 * p; i++) {

r[t[i]] = 1; } } /* 左轻右重*/ else if (sign == '<') { total++; for (int i = 0; i < p; i++) { w[t[i]]--; } for (int i = p; i < 2 * p; i++) { w[t[i]]++; } } /* 左重右轻*/ else if (sign == '>') { total++; for (int i = 0; i < p; i++) { w[t[i]]++; } for (int i = p; i < 2 * p; i++) { w[t[i]]--; } } } /* 假币在不等式中每次都应该出现*/ int count = 0, pos = 0; for (int i = 1; i <= n; i++) { if (r[i]) { continue; } /* 找出每次都出现的"假币" */ if (w[i] == total || w[i] == - total) { count++; pos = i;

杭电OJ题目分类

杭州电子科技大学OJ题目分类The Soul with Bone .: 1001 整数求和水题 1002 C语言实验题——两个数比较水题 1003 1、2、3、4、5... 简单题 1004 渊子赛马排序+贪心的方法归并 1005 Hero In Maze 广度搜索 1006 Redraiment猜想数论:容斥定理 1007 童年生活二三事递推题 1008 University 简单hash 1009 目标柏林简单模拟题 1010 Rails 模拟题(堆栈) 1011 Box of Bricks 简单题 1012 IMMEDIATE DECODABILITY Huffman编码 1013 STAMPS 搜索or动态规划 1014 Border 模拟题 1015 Simple Arithmetics 高精度计算 1016 Shoot-out 博弈+状态压缩DP 1017 Tour Guide 1018 Card Trick 简单题 1019 Necklace Decomposition 贪心

1020 Crashing Robots 模拟题 1021 Electrical Outlets 简单题 1022 Watchdog 简单题 1023 Taxi Cab Scheme 图论:最小路径覆盖--->最大二分匹配1024 Pseudo-random Numbers 数论 1025 Card Game Cheater 简单题 1026 Investment 动态规划 1027 Pipes 1028 SETI 数学:高斯消元法 1029 Minimax Triangulation 计算几何 1030 Unequalled Consumption 母函数 1031 Declaration of Content 1032 Laserbox 搜索:DFS 1033 Bowlstack 1034 Pesky Heroes 1035 Reduced ID Numbers 暴力 1036 Tantrix 1037 Guardian of Decency 图论:匈牙利算法求二分图的最大匹配1038 Up the Stairs 简单数学题 1039 Sudoku 搜索:DFS 1040 The SetStack Computer 1041 Pie 二分法

杭州电子科技大学电子学院教师简介汇总

孙玲玲 女,1956年6月出生,1985年3月毕业于杭州电子工业学院,获电路与系统硕士学位。研究员,现任杭州电子科技大学副校长。“电路与系统”博士生导师;“电路与系统”、“微电子学与固体电子学”、“计算机应用”硕士生导师。国家特色专业“电子信息工程”专业负责人;浙江省重中之重学科“电路与系统”学科带头人。主讲的课程包括:集成电路CAD,近代网络理论, 微波集成电路计算机辅助设计 ,数字程控交换技术,射频/微波电路设计导论,VLSI设计导论、EDA技术等;指导本科学生工程训练和毕业设计数十人。主要研究方向:深亚微米及RF/微波IC设计及CAD方向、射频集成电路及应用系统研究等。主持国家自然科学基金、国家863计划、国防预研、国际合作等三十多项国家和省部级以上科研项目;已有20多项成果通过国家级和部省级专家技术鉴定或验收,并荣获浙江省科技进步二等奖、省教学成果二等奖等奖励;国务院特殊津贴获得者。近年已在电子学报等刊物和国际国内学术会议发表论文60余篇。兼任全国电子信息科学与工程类专业教学指导分委会委员;IFIP中国代表、中国电子学会理事;电子学报、微波学报编委,杭州电子科技大学学报主编等。 查丽斌 女,1964年1月出生,陕西西安人,副教授。1991年5月获西安交通大学硕士学位,曾主讲线性电子电路、电路原理、电路分析基础、电力系统分析、数字电路、模拟电路、电机原理及拖动技术、计算机控制原理、模拟电子技术实验课等课程。指导本专科学生毕业设计数十人,有近20年的教学经验,教学责任心强,教学效果良好。主要研究方向:地理信息系统(GIS),教育软件的开发。公开发表论文若干篇,主编出版了教材<<电路与模拟电子技术基础〉〉。 柴曙华 男,浙江大学电机系毕业,实验师。1978年毕业后一直从事实验教学工作。80年先后和同事们完成了电工实验室的筹建、教材编写、实验项目改革的任务。2000年后参与完成了下沙校区电工、电路、信号与系统综合实验室筹建、扩建等工作。先后从事〈〈电工学实验〉〉、〈〈电路分析实验〉〉、〈〈电路电子学实验〉〉、〈〈模拟电子线路实验〉〉、〈〈线路实习〉〉、〈〈电子线路CAD〉〉、〈〈信号与系统实验〉〉、〈〈电机修理〉〉、〈〈中国竹笛〉〉等课程教学。教学责任心强,教学效果良好。 陈瑾 女,硕士学位,讲师,通信电子电路课程负责人。毕业于杭州电子工业学院,获电路与系统专业工学硕士,研究方向为模拟集成电路故障诊断。毕业留校任教至今,主讲《通信电子电路》、《模拟电子电路》和《电子测量》等课程,并指导《电子线路CAD》和《通信电子电路实验》、毕业设计等实践性环节。曾负责校级“电子类专业基础课程群建设”课题中《非线性电子线路》课程的建设,制作并完成该课程的网上辅导系统、答疑系统及题库的建设等。有十多年高校教学经验,教学责任心强,教学作风严谨、细致,教学效果优良,曾在原三分院主办的“青年教师讲课基本功比赛”中荣获二等奖中第一名,03年在国家教委本科教学评估中受到听课专家的好评。参与完成1项国家“八五”攻关项目及多项横向课题,编著并

杭电acm部分题目及答案答案

自己刷的题 这是我在杭电做题的记录,希望我的分享对你有帮助!!! 1001 Sum Problem***********************************************************1 1089 A+B for Input-Output Practice (I)********************************2 1090 A+B for Input-Output Practice (II)********************************5 1091A+B for Input-Output Practice (III)****************************************7 1092A+B for Input-Output Practice (IV)********************************8 1093 A+B for Input-Output Practice (V)********************************10 1094 A+B for Input-Output Practice (VI)***************************************12 1095A+B for Input-Output Practice (VII)*******************************13 1096 A+B for Input-Output Practice (VIII)******************************15 How to Type***************************************************************16 1001 Sum Problem Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The input will consist of a series of integers n, one integer per line. Output For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer.

整理出ACM所有题目及答案

1111111杭电: 1000 A + B Problem (4) 1001 Sum Problem (5) 1002 A + B Problem II (6) 1005 Number Sequence (8) 1008 Elevator (9) 1009 FatMouse' Trade (11) 1021 Fibonacci Again (13) 1089 A+B for Input-Output Practice (I) (14) 1090 A+B for Input-Output Practice (II) (15) 1091 A+B for Input-Output Practice (III) (16) 1092 A+B for Input-Output Practice (IV) (17) 1093 A+B for Input-Output Practice (V) (18) 1094 A+B for Input-Output Practice (VI) (20) 1095 A+B for Input-Output Practice (VII) (21) 1096 A+B for Input-Output Practice (VIII) (22) 1176 免费馅饼 (23) 1204 糖果大战 (25) 1213 How Many Tables (26) 2000 ASCII码排序 (32) 2001 计算两点间的距离 (34) 2002 计算球体积 (35) 2003 求绝对值 (36) 2004 成绩转换 (37) 2005 第几天? (38) 2006 求奇数的乘积 (40) 2007 平方和与立方和 (41) 2008 数值统计 (42) 2009 求数列的和 (43) 2010 水仙花数 (44) 2011 多项式求和 (46) 2012 素数判定 (47) 2014 青年歌手大奖赛_评委会打分 (49) 2015 偶数求和 (50) 2016 数据的交换输出 (52) 2017 字符串统计 (54) 2019 数列有序! (55) 2020 绝对值排序 (56) 2021 发工资咯:) (58) 2033 人见人爱A+B (59) 2037 今年暑假不AC (61) 2039 三角形 (63) 2040 亲和数 (64)

杭州电子科技大学理学院教师简介汇总

理学院教师简介 陈光亭,男,博士,教授,硕士研究生导师。曾主讲过《高等数学》、《高等代数》、《线性代数》、《概率统计》、《数学建模》等本科课程,有十几年高校教学经验。曾主持或参加过多项国家自然科学基金以及省部级研究项目,主要从事离散优化及其应用的研究,在国内外刊物上发表学术论文40多篇。曾获得省高校优秀青年教师、省高校青年教师教学基本功比赛优秀奖等多项奖励,为浙江省高校中青年学科带头人,入选浙江省“151人才工程”。 肖建斌,男,1963年5月出生,1989年复旦大学博士毕业,1995被评定为教授。主讲“数学分析”、“复变函数论”等本科课程。为研究生开设“Hardy空间理论”、“单位球上的函数论”等课程。从事复分折研究,在Hardy空间和Bergman空间的函数性质和泛函性质方面取得了一系列的结果,在《中国科学》、《科学通报》、《数学学报》、《数学年刊》、《数学进展》、《Math.Japonica》等学术刊物发表论文30余篇, 解决国外数学家提出的6个公开问题。曾主持国家与省自然科学基金各一项,目前主持教育部重点科研项目和浙江省省自然科学基金各一项。是霍英东基金教师奖的获得者。肖建斌教授一直奋斗在教学科研第一线,教学基本功扎实过硬,教学态度严谨,教学方法灵活,受到广大师生的一致赞誉。 刘德朋,男,1948年5月生,吉林人,教授。1982年1月毕业于吉林师范大学数学系,现任理学院教师。主讲课程:《数学物理方法》、《复变函数》、《高等数学》、《线性代数》、《竞赛数学》等。研究方向为:偏微分方程的基础理论及其在电磁学中的应用;竞赛数学的理论与实践。主要成果:任主持人完成省部级以上的项目五项,取得很好的成果;主持的课题“改革应用数学教学,培养师范生的综合素质和创新能力”获省级优秀教学成果二等奖;在省以上的刊物上公开发表论文40多篇;任主编公开出版高校教材五部。 程吉树,男,教授。曾在数学系及工科专业主讲《数学分析》、《复变函数》、《概率与数理统计》、《线形代数》、《一般拓扑学》、《模糊拓扑》、《对立理论》、《拓扑线性空间》、《微积分学》、《高等数学》等9门课程。高校教龄21年,在J.Fuzzy Sets.andSystems, J.Fuzzy. Mathmatics.BUSEFAL《数学研究与评论》、《模糊系统与数学》等国际国内杂志及其他高校学报上发表论文40余篇。其中被SCI、CCN、《美国数学评论》及《中国数学文摘》摘评20多篇次。获省自然科学优秀论文一、二、四等奖各一篇。1997年被评为省优秀教师,2001年被评为省优秀专家。 朱军,男,1959年12月生,湖北恩施人,1996年1月晋升为教授。1990年7月毕业于曲阜师范大学数学系获理学硕士学位,1991年9月至1992年7月在复旦大学做访问学者,湖北大学与华中师范大学兼职硕士导师,美国数学会会员,美国《数学评论》评论员。长期在一线从事基础数学的教学与科研工作,主讲课程:《数学分析》、《泛函分析》、《线性拓扑空

ACM竞赛试题集锦

取石子游戏 Time Limit:1S Memory Limit:1000K Total Submit:505 Accepted:90 Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a 和b,表示两堆石子的数目,a和b都不大于1,000,000,000。 Output 输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。 Sample Input 2 1 8 4 4 7 Sample Output 1

跳蚤 Time Limit:1S Memory Limit:1000K Total Submit:198 Accepted:44 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳10个单位长度,然后再连向左跳3次,每次15个单位长度,最后再向右连跳3次,每次18个单位长度。而持有卡片(12, 15, 18)的跳蚤,则怎么也不可能跳到距他左边一个单位长度的地方。 当确定N和M后,显然一共有M^N张不同的卡片。现在的问题是,在这所有的卡片中,有多少张可以完成任务。 Input 两个整数N和M(N <= 15 , M <= 100000000)。 Output 可以完成任务的卡片数。 Sample Input 2 4 Sample Output 12 Hint

杭州电子科技大学在线评测系统使用说明书

杭州电子科技大学在线评测系统(HDOJ) 使用指南 杭州电子科技大学刘春英 2009/11/28 一、网站进入: 在浏览器的URL中键入:https://www.360docs.net/doc/c31818267.html,即进入杭电在线评测系统,主界面如下:

二、新用户注册: 对于第一次进入本站点的朋友,可以先注册一个用户,这可以通过点击上部的“Register New ID ”菜单项来实现: 注册界面如上图所示,特别注意:Author Name必须为英文或者数字才行。 有了自己的账户,就可以在本系统做题目了,当然也可以参加平时的公开赛了!

三、控制面板: 拥有自己的账号之后可以随时修改自己的信息,或者使用OJ提供的便捷的服务,功能入口位于用户下面:Control Panel ,点击进入控制面板: Write EMail:通过此功能可以与OJ上其他用户进行邮件的交流,注意收件人必须填写的是其登陆ID,填写昵称则无法正常发送。填写完成之后点击Send,即可发送邮件。

●BackUp Your Code:此功能可以提供用户所提交的代码的下载,点击即可看到如图所 示界面: 注意:在下载前,需要先打包您的代码,点击Back Up Your Code,系统会自动为您打包,然后点击DownLoad 即可下载您的代码。 ●Update Your Information:此功能用来修改用户的资料,可随时修改您的信息,比如修 改密码或者Motto等,点击进入看到如下图片:

●Compare Compare Look:这是OJ的一个小功能块,可以查看两个用户做题情况的比 较情况,输入两个用户ID,点击Rush按钮,即可进行比较: ●Team Contest Register Information and Single Contest Register Information :分别可以查 看自己的组队赛信息和个人赛信息。 ●Registration status :查看当前某场比赛的注册状态。

ACM必做50题——数学

1、POJ 2249 Binomial Showdown 组合数学。 高精度,也可把分子分母的数组进行两两约分 #include using namespace std; double c(int c,int k) { double a=1; int i,j=2; for(i=c;i>c-k;i--) a=a*i/(c-i+1); return a; } int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF && (n!=0 || k!=0)) { if(k>n/2 )k=n-k; printf("%.0lf\n",c(n,k)); } return 0; } 2、poj 1023 the fun number system (经典进位制) 题意:一种由2进制衍生出来的进制方法(我们暂且称为“类2进制”); 标明'n'的位置上原2进制该位的权重要乘上-1,才是现在进制方法该位的权重; 譬如说;pnp对于的能表示的数2来说就是110;即1*2^2+(-1)*1*2^1+1*2^0=2; 算法:这是数论中的进位制问题,我们可以仿照原来的求一个数二进制表示方法; 但首先,我们应该考虑几个问题; ①k位这种类2进制的表示范围; 显然,当给出的'p','n'序列中,我们将所有p的位置都置为1其余位是0,此时最大;当我们将所有n的位置置为1,其余为0,此时最小;不过当我们求最大限max和最小限min时会

有一个溢出问题;比如64位全是p的序列,那么max会溢出,值为-1;同理min在全是n 时也会溢出,为1;显然是max>=0,min<=1,溢出时产生异常,依次可以判断; ②是否是最大限和最小限之间的数都能表示呢? 都可以,而且能够表示的数是2^k个,这个原始2进制是一样的;因为每个位上要么是0,要么是1,而且每个位上的权重唯一的,不能通过其他位的01组合获得;最后,我们就可以仿照原始二进制来算在类2进制下的表示;不断求N的二进制最后一位和右移;如果取余是1,则该位上一定是1,如果该位对于字母为‘n’,则高位应该再加1;这里对2取余可能会出错,因为对于负数,补码的表示,最后一位一定是和原码一样的每次的右移后(有时需先加1)补码表示正好符合要求(可找实例验证); #include using namespace std; __int64 N,M; char s[100],res[100]={'\0'}; int main() { int T;scanf("%d",&T); int i,j; __int64 _max,_min; char ch; while(T--) { scanf("%I64d",&N); scanf("%s",s); _max=0;_min=0; for(i=0;i_max&&_max>=0)) puts("Impossible"); //注意防止64位数的溢出; else { memset(res,'\0',sizeof(res)); for(i=N-1;i>=0;i--) { int flag=0; if(M&1) //这里不能是平常的%2; { res[i]='1';

ACM数论方面十道基础题目详解

1、公约数和公倍数 https://www.360docs.net/doc/c31818267.html,/JudgeOnline/problem.php?pid=40 这道题目是非常基础的题目,在学习了欧几里德算法之后,应该很好就能做的出来了。注意两个数的最小公倍数和最大公约数之间有关系为: a*b=gcd(a,b)*lcm(a,b); 代码如下: #include using namespace std; inline int Gcd(int m,int n) //求最大公约数 { if (m==0) return n; return Gcd(n%m,m); } int main() { int n,a,b,g; cin>>n; while(n--) { cin>>a>>b; g=Gcd(a,b); cout<

?????≡≡≡)33(mod ) 28(mod )23(mod d n e n p n 那么找到k1、k2、k3满足: k1:k1%23==0&&k1%28==0&&k1%33==1 k2:k2%33==0&&k2%28==0&&k2%23==1 k3:k3%33==0&&k3%23==0&&k3%28==1 则n=k2*p+k3*e+k1*i+k*21252; 代码如下: #include int main() { int n,a,b,c,t; while(scanf("%d%d%d%d",&a,&b,&c,&t),~a) { n=(5544*a+14421*b+1288*c)%21252-t; if(n<=0) n+=21252; printf("%d\n",n); } } 3、韩信点兵 https://www.360docs.net/doc/c31818267.html,/JudgeOnline/problem.php?pid=34 这个题目也是很经典的中国剩余问题类的题目,思路跟上面差不多这道题目因为数据范围很小实际上暴力就可以过,但是这个题目不失为练习中国剩余的很好题目,所以建议大家用中国剩余定理做一下。 直接给出代码: 暴力求解代码: #include main() { int a,b,c,n; scanf("%d%d%d",&a,&b,&c); for(n=11;n<100;n++) if(n%3==a&&n%5==b&&n%7==c) printf("%d\n",n); } 中国剩余定理思路代码:

杭州电子科技大学名人录

杭州电子科技大学名人录 来源:沈峰的日志 杭州电子科技大学名人录(不完全版) 1、何如 从杭电研究生毕业后留校任教。1988年南下深圳,原任深圳发展银行行长,现任深圳国际信托投资公司董事长。 2、赵友永 1978年进入2781班学习,现任广州无线电集团公司董事长。 3、张招兴 1978年进入2781班学习,现任广州无线电集团公司总经理。 4、王东升 1978年进入2781班学习,现任京东方集团总裁。 2003年,京东方收购韩国现代电子的LCD业务和香港冠捷科技。在2006年公布的中国电子信息企业销售收入排行榜中,京东方位居第三,仅次于联想、海尔。 5、马云 大学毕业后进入杭电先教英语,后任外事办主任。现任阿里巴巴董事局主席。2 005年,阿里巴巴收购雅虎中国。 6、戴云法 1978年进杭电3781班学习,毕业后到香港创业。现任香港荃湾工商界联合会主席、花木城集团董事长、钱江(香港)集团董事长。 7、刘体斌 杭电8022班工业经济系毕业,现任长虹集团总裁。在2006年公布的世界品牌50 0强中,长虹是入选的6个中国品牌之一,在国内仅次于海尔、联想、央视。 8、徐国飞 杭电4791班学生,现任南京熊猫集团总裁。 9、丁晖 杭电85级校友、欧洲宜家家居中国地区财务行政总监。 10、俞宝鑫 1978年进杭电2781班学习,毕业后分配至第四机械部工作,在德国获博士学位后回国创业,现任北京富屋易通电子科技有限公司总经理。 11、周子学 原杭电财经学院院长,现任信息产业部经济运行司司长。 12、董云庭 原杭电副校长、原电子工业部发展规划局局长。 13、骆建军 1991年毕业于上海交大,同年考入杭电硕士研究生,后在浙大攻读博士,2001年赴美国留学,2003年初在美国硅谷创办公司,开始数码存储技术集成电路芯片的研究开发事业。现任美国硅谷Baleen systems 公司副总裁。 14、童本立 杭电毕业后留校任教。现任中国财政学会理事、浙江省经济学会副会长、浙江省财政学会副会长、浙江省会计学会副会长、浙江财经学院党委书记等。

研究生科技文献检索(理工类)考察作业任务

科技文献检索(理工类)期末综合大作业 作业要求: 1)作业请独立完成,抄袭与被抄袭(截图雷同)均判不及格。 2)用A4纸打印,作业字体大小为五号字,请注意填写页眉信息。 3)作业上交时间与地点:2018年6月20日1:30—3:00交到上课教室。 (一)基础知识与概念 1.《中图法》的全称是什么?它将图书分为几个基本部类,多少基本大类?TP393是哪类书? 答:《中图法》的全称是《中国图书馆分类法》。 它将图书分为五个基本部类,二十二个大类。 TP393是计算机网络。 2.一次文献和二次文献有什么区别?图书馆文献数据库中哪些是一次文献库,哪些是二次

文献库,各举2个例子。 答:一次文献是指作者创作的原始文献。作者以自己的研究成果为基本素材而创作(或撰写)的文献,并向社会公开。如:图书、报纸、期刊论文、科技报告、会议论文、学位论文、专利、标准等。 二次文献是指按一定的方法对一次文献进行整理加工,以使之有序化而形成的文献。二次文献在内容上并不具有原创性,它只提供有关一次文献的内容线索,由情报人员对一次文献进行加工、整理、提炼、标引及编序后形成的工具性文献。如:各种目录、题录、索引、文摘等。二次文献是用来查找一次文献的工具。 3.在CNKI中文核心期刊要目中查找你所在专业的核心期刊一种,写出刊名、主办单位、ISSN号和CN号。 答:刊名:《软件学报》;主办单位:中国科学院软件研究所 ISSN号:1000-9825;CN号:11-2560/TP 4.文献检索时往往会出现检索结果过多、过少、或者根本不相关的情况,请问检索策略调整有哪些方法? 答:检索结果过多—--缩小检索范围; 检索结果过少----扩大检索范围; 检索结果相关度小----修改检索词、检索式、更换检索工具。

相关文档
最新文档