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

第一次雙周賽+基礎(chǔ)存圖

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

#include

using namespace std;

char str1[1005],str2[1005];

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

int zhuan(char c) //寫個(gè)函數(shù)把字符轉(zhuǎn)換為十進(jìn)制

{

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]);//把兩個(gè)字符串倒序放入

int flag=0;//進(jìn)位數(shù)

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');?

}//再把這個(gè)數(shù)轉(zhuǎn)為16進(jìn)制

return 0;

}

查找每一個(gè)答案即可

#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)//裝完彈且在射程內(nèi)

t += x;

else

{

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

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;?? // 累計(jì)有效結(jié)點(diǎn)數(shù)

while(FirstAdd!=-1)

{?? // 當(dāng)尾結(jié)點(diǎn)為 -1 時(shí)結(jié)束

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

?? FirstAdd = Next[FirstAdd];? // 找下一個(gè)結(jié)點(diǎn)

}

for(int i=0;i

){? // 每 K 個(gè)結(jié)點(diǎn)一個(gè)區(qū)間

?? for(int j=0;j

?? {? // 反轉(zhuǎn)鏈表

????????? 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;//右邊界驗(yàn)證

while(r-l>N)

{

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

?? double x2=a*mid*mid*mid+b*mid*mid+c*mid+d;//判斷中點(diǎn)

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

?? 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);??? //先求導(dǎo)然后就可以分出三個(gè)區(qū)間

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

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

}?

}

看了學(xué)長(zhǎng)的教學(xué)就會(huì)了

#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)//走到終點(diǎn)

{

?? sum++;

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

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

?? return;

}

for (int i=0;i

{

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

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

?? {

????????? vis[to]=true;//標(biāo)記為走過

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

????????? vis[to]=false;//再次標(biāo)記為沒走過

?? }

}

}

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);//無向圖基礎(chǔ)存圖

}

cin>>st>>ed;

vis[st]=true;//把起點(diǎn)標(biāo)記為走過

dfs(st);

int ans=0;

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

{

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

}

ans=ans-2;//減去起點(diǎn)和終點(diǎn)

cout<

return 0;

}

這題知道反向dfs后就簡(jiǎn)單了,連我都獨(dú)立搞定了

#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;//把第幾個(gè)點(diǎn)序號(hào)放入ans數(shù)組

vis[x]=true;//標(biāo)記為走過

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); //反向存

}????? //有向圖基礎(chǔ)存圖

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;//標(biāo)記走過

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]);//加上小的那個(gè)

}

cout<

return 0;

}

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

當(dāng)前題目:第一次雙周賽+基礎(chǔ)存圖-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article20/dpdico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、App設(shè)計(jì)、關(guān)鍵詞優(yōu)化動(dòng)態(tài)網(wǎng)站、網(wǎng)站制作

廣告

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

綿陽服務(wù)器托管