日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8月6日小练

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8月6日小练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網站:CSUST小練習1

以后每天21:30~23:30都有小練

A?Max Sum? ? ?HDU 1003

大意是:給出n個數,找出最大的和,輸出起點和終點的編號

本來是暴力做,不出所料的超時了Orz....

代碼: ? ? ? 15MS

1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 int main() 5 { 6 int T,a,k=0; 7 scanf("%d",&T); 8 while(T--) 9 { 10 k++; 11 int n,st=0,max=-999999999,i,j,sum=0,end=0; 12 scanf("%d",&n); 13 for(i=j=1;j<=n;j++) 14 { 15 scanf("%d",&a); 16 sum+=a; 17 if(sum>max) //更新最大值 18 { 19 max=sum; 20 st=i; //更新起點 21 end=j; //更新終點 22 } 23 if(sum<0) //sum<0,拋棄前面的點 24 { 25 i=j+1; //更新起點 26 sum=0; //和清0 27 } 28 } 29 printf("Case %d:\n%d %d %d\n",k,max,st,end); 30 if(T) 31 printf("\n"); 32 } 33 return 0; 34 }

B ?To the Max??POJ 1050

這一題和A很像,A是一維的求最大和,B是二維的求最大和。 ? ? ?16MS

1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 using namespace std; 5 int main() 6 { 7 int n,a[105][105],b[105],max,i,j,k,f; 8 while(~scanf("%d",&n)) 9 { 10 max=-100000000; 11 for(i=1;i<=n;i++) 12 for(j=1;j<=n;j++) 13 scanf("%d",&a[i][j]); 14 for(i=1;i<=n;i++) 15 { 16 memset(b,0,sizeof(b)); 17 for(j=i;j<=n;j++) //開始的行 18 { 19 for(k=1;k<=n;k++) // 20 b[k]+=a[j][k]; 21 f=0; 22 for(k=1;k<=n;k++) 23 { 24 if(f+b[k]>0) 25 f+=b[k]; 26 else 27 f=0; //f<=0時,f清0 28 if(f>max) 29 max=f; //更新最大值 30 31 } 32 } 33 } 34 printf("%d\n",max); 35 } 36 return 0; 37 }

C ? ? Flying to the Mars? ? ?HDU 1800? ? ? ? ?就是求下降子序列的最少個數,不過這道題可以先排序再求,因為不想再寫個函數,直接用sort,升序排列,所以我這是求上升子序列最少的個數。 ? ? ? ?296MS

1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<iostream> 5 using namespace std; 6 int main() 7 { 8 int n,i,a[3005],map[3005]; 9 while(~scanf("%d",&n)) 10 { 11 int number=0,minn; 12 memset(map,0,sizeof(map)); 13 for(i=1;i<=n;i++) 14 scanf("%d",&a[i]); 15 sort(a+1,a+n+1); //升序排序 16 for(i=1;i<=n;i++) 17 { 18 if(map[i]==0) //未被標記 19 { 20 number++; //個數+1 21 map[i]=1; //標記 22 minn=a[i]; 23 for(int j=i+1;j<=n;j++) 24 if(a[j]>minn && map[j]==0) 25 { 26 minn=a[j]; 27 map[j]=1; 28 } 29 } 30 } 31 printf("%d\n",number); 32 } 33 return 0; 34 }

D?改革春風吹滿地? ? ?HDU 2036? ?求多邊形的面積,給出的是n邊形的逆時針頂點坐標。 ?

坑爹啊,這道題有公式!!!!!公式詳見:http://www.cnblogs.com/dramstadt/p/3199299.html ? ?

S = 0.5 * ( (x0*y1-x1*y0) + (x1*y2-x2*y1) + ... + (xn*y0-x0*yn) )
其中點(x0, y0), (x1, y1), ... , (xn, yn)為多邊形上按逆時針順序的頂點。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0ms

1 #include <stdio.h> 2 #include <iostream> 3 #include <math.h> 4 using namespace std; 5 int main() 6 { 7 int n,x1,y1,x2,y2,sum,i; 8 while(~scanf("%d",&n)&&n) 9 { 10 sum=0.0; 11 scanf("%d%d",&x1,&y1); 12 int a=x1,b=y1; //記錄下第一組數據 13 for(i=2;i<=n;i++) 14 { 15 scanf("%d%d",&x2,&y2); 16 sum+=x1*y2-x2*y1; //加和 17 x1=x2; 18 y1=y2; //更新數據 19 } 20 sum+=x1*b-y1*a; //最后一組數據&第一組數據 21 printf("%.1lf\n",sum/2.0); //取一半,保留一位小數 22 } 23 return 0; 24 }

F ?滑雪? ??POJ 1088? ?這道題是求最長的距離......我還以為是求高度差.....Orz ? ? ? ? ? ? ? ? ? ? ? ? 32MS

1 #include <iostream> 2 #include <string.h> 3 #include <stdio.h> 4 using namespace std; 5 const int MAXN = 110; 6 int map[MAXN][MAXN],dp[MAXN][MAXN]; 7 int r,c,move[4][2]={-1,0,1,0,0,-1,0,1}; 8 inline int MAX(int x,int y) 9 { 10 return x>y ? x : y; 11 } 12 int dfs(int x,int y) 13 { 14 if(dp[x][y]!=-1) //已被標記 15 return dp[x][y]; 16 int i,xx,yy,max=0; 17 for(i=0;i<4;i++) 18 { 19 xx=x+move[i][0]; 20 yy=y+move[i][1]; 21 if(map[x][y]>map[xx][yy] && xx>=0 && yy>=0 && xx<r && yy<c) 22 max=MAX(max,dfs(xx,yy)+1); //更新最大值 23 } 24 return max; 25 } 26 int main() 27 { 28 int i,j,max=0; 29 scanf("%d %d",&r,&c); 30 for(i=0;i<r;i++) 31 for(j=0;j<c;j++) 32 scanf("%d",&map[i][j]); 33 memset(dp,-1,sizeof(dp)); 34 for(i=0;i<r;i++) 35 for(j=0;j<c;j++) 36 { 37 dp[i][j]=dfs(i,j); //記錄這一點的最長距離 38 max=MAX(max,dp[i][j]); //更新最大值 39 } 40 printf("%d\n",max+1); 41 return 0; 42 }

?

轉載于:https://www.cnblogs.com/riddle/p/3243102.html

總結

以上是生活随笔為你收集整理的8月6日小练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。