第一次雙周賽+基礎存圖-創(chuàng)新互聯

第一次雙周賽+基礎存圖

成都創(chuàng)新互聯公司致力于成都網站設計、網站制作,成都網站設計,集團網站建設等服務標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務水平進行質量交付,讓企業(yè)網站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯公司,就選擇了安全、穩(wěn)定、美觀的網站建設服務!

#include

using namespace std;

char str1[1005],str2[1005];

int a[1005],b[1005],c[2010];

int zhuan(char c) //寫個函數把字符轉換為十進制

{

if(c>='0' && c<='9')

return c-'0';

else

return c-'A'+10;

}

int main()

{

cin>>str1>>str2;

int len1=strlen(str1);

for(int i=0;i

???a[i+1]=zhuan(str1[len1-i-1]);

int len2=strlen(str2);

for(int i=0;i

b[i+1]=zhuan(str2[len2-i-1]);//把兩個字符串倒序放入

int flag=0;//進位數

for(int i=1;i<=len1;++i)

{

?????? flag=0;//注意每次清零

for(int j=1;j<=len2;++j)

{

c[i+j-1]+=a[i]*b[j]+flag;

flag=c[i+j-1]/16;

c[i+j-1]%=16;

}

c[i+len2]=flag;

}//高精度相乘

int len3=len1+len2;

while(c[len3]==0 && len3>1) len3--;

for(int i=len3;i>=1;i--)

{

if(c[i]>=0 && c[i]<=9)

cout<

else

cout<<(char)(c[i]-10+'A');?

}//再把這個數轉為16進制

return 0;

}

查找每一個答案即可

#include

using namespace std;

int n,m,a[100005],y;

bool? check(int x)

{

int t = 0;

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

{

if (a[i]< t)//裝不完彈就掛了

return false;

if (a[i]<= t + m)//裝完彈且在射程內

t += x;

else

{

t += (a[i] - t - m);//裝完彈還不在射程內

t += x;

}

}

return true;

}

int main()

{

cin>>n>>m;

for (int i=1;i<=n;i++) cin>>a[i];

sort(a+1,a+n+1);

int L=0,R=a[n];

while (L+1

{

?? int mid=(L+R)/2;

?? if (check(mid)) L=mid;

?? else R=mid;

}//二分答案

cout<

}

第四題:反向鏈表

#include

const int X=1e5+5;

using namespace std;

int main(){

int Data[X],Next[X],list[X];

int FirstAdd,N,K;

cin>>FirstAdd>>N>>K;

for(int i=0;i

{

?? int tmpAdd,tmpData,tmpNext;

?? cin>>tmpAdd>>tmpData>>tmpNext;

?? Data[tmpAdd] = tmpData;

?? Next[tmpAdd] = tmpNext;

}

int sum=0;?? // 累計有效結點數

while(FirstAdd!=-1)

{?? // 當尾結點為 -1 時結束

?? list[sum++] = FirstAdd;?? // 記錄所有Address

?? FirstAdd = Next[FirstAdd];? // 找下一個結點

}

for(int i=0;i

){? // 每 K 個結點一個區(qū)間

?? for(int j=0;j

?? {? // 反轉鏈表

????????? int t = list[i+j];

????????? list[i+j] = list[i+K-j-1];

????????? list[i+K-j-1] = t;

?? }

}

for(int i=0;i

?? printf("%05d %d %05d\n",list[i],Data[list[i]],list[i+1]);

printf("%05d %d -1\n",list[sum-1],Data[list[sum-1]]);

return 0;

}

#include

using namespace std;

const double N=1e-7;

double a,b,c,d,p,q;

int T;

double check(double l,double r)

{

double x1=a*r*r*r+b*r*r+c*r+d;//右邊界驗證

while(r-l>N)

{

?? double mid=(r+l)/2;

?? double x2=a*mid*mid*mid+b*mid*mid+c*mid+d;//判斷中點

?? if (x1*x2<0) l=mid;//兩點乘積小于零那么往右找

?? else r=mid;//否則往左找

}

}

int main()

{

cin>>T;

while(T--)

{

cin>>a>>b>>c>>d>>p>>q;

? double j1=((-2*b)-sqrt(4*b*b-12*a*c)) / (6*a);????

? double j2=((-2*b)+sqrt(4*b*b-12*a*c)) / (6*a);??? //先求導然后就可以分出三個區(qū)間

? if (j1>j2) swap(j1,j2);//確保區(qū)間區(qū)間是遞增的

? printf("%.6lf %.6lf %.6lf",check(p,j1),check(j1,j2),check(j2,q));//分區(qū)間查找一下

}?

}

看了學長的教學就會了

#include

using namespace std;

const int N=1005;

vectorG[N];

bool vis[N];

int st,ed,sum,cnt[N],n,m,x,y;

void dfs(int now)

{

if (now==ed)//走到終點

{

?? sum++;

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

?? if (vis[i]) cnt[i]++;//標記走過幾次

?? return;

}

for (int i=0;i

{

?? int to =G[now][i];//下一步

?? if (!vis[to])//判斷沒走過

?? {

????????? vis[to]=true;//標記為走過

????????? dfs(to);//接著搜下一步

????????? vis[to]=false;//再次標記為沒走過

?? }

}

}

int main()

{

cin>>n>>m;

for (int i=1;i<=m;i++)

{

?? cin>>x>>y;

?? G[x].push_back(y);

?? G[y].push_back(x);//無向圖基礎存圖

}

cin>>st>>ed;

vis[st]=true;//把起點標記為走過

dfs(st);

int ans=0;

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

{

?? if (cnt[i]==sum) ans++;

}

ans=ans-2;//減去起點和終點

cout<

return 0;

}

這題知道反向dfs后就簡單了,連我都獨立搞定了

#include

using namespace std;

const int N=100005;

int u,v,n,m,vis[N],ans[N];

vectorG[N];

void dfs(int x,int y)

{

if (vis[x]) return;

ans[x]=y;//把第幾個點序號放入ans數組

vis[x]=true;//標記為走過

for (int i=0;i

?? ?dfs(G[x][i],y);//把第x行的圖搜一遍

}

int main()

{

cin>>n>>m;

for (int i=1;i<=m;i++)

{

??? cin>>u>>v;

?? G[v].push_back(u); //反向存

}????? //有向圖基礎存圖

for (int i=n;i>=1;i--) dfs(i,i);//從后往前搜

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

return 0;

}

#include

using namespace std;

const int N = 10010;

int n, m;

vectorg[N];

bool vis[N];

int a[N],sum[3];

bool dfs(int now, int col)

{

vis[now] = true;//標記走過

a[now] = col;

sum[col]++;

for (int i = 0; i< g[now].size(); i++)

??{

int to = g[now][i];//下一步

if (vis[to] && a[to] == a[now])

return false;//相鄰了,不行

else if (!vis[to])

{

if (!dfs(to, 3 - col))

???? return false;

}

}

return true;

}

int main()

{

cin>>n>>m;

for (int i = 1; i<= m; i++)

{

int u, v;

cin>>u>>v;

g[u].push_back(v);

g[v].push_back(u);

}//存圖

int ans = 0;

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

if (!vis[i])//沒走過

{

?sum[1] = sum[2] = 0;

if (!dfs(i,1))

{

???? printf("Impossible");

???? return 0;

}//沒有符合條件的情況

ans += min(sum[1], sum[2]);//加上小的那個

}

cout<

return 0;

}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

當前題目:第一次雙周賽+基礎存圖-創(chuàng)新互聯
當前地址:http://muchs.cn/article20/dpdico.html

成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計靜態(tài)網站、App設計、關鍵詞優(yōu)化、動態(tài)網站網站制作

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

綿陽服務器托管