NEUQ2022第一次雙周賽題解-創(chuàng)新互聯(lián)

7-1 Lily

百合花(Lily)是一種美麗的花。她通常一年只開(kāi)一次花,所以如果你看到百合花盛開(kāi),它會(huì)非常珍貴。然而,她對(duì)貓有劇毒,所以你必須注意讓好奇的貓遠(yuǎn)離可愛(ài)的百合花。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比萬(wàn)山網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式萬(wàn)山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋萬(wàn)山地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

你有n個(gè)網(wǎng)格的土壤土地排成一行,從1到n,其中一些是百合花。我們不想傷害百合,也不想傷害貓。你可以在網(wǎng)格上放一些貓糧,但對(duì)于任何有貓糧的網(wǎng)格i,在區(qū)域[i?1,i+1]不得含有百合花。你喜歡貓和百合,所以你想大限度地增加有貓糧的格子。

設(shè)計(jì)滿足上述要求的計(jì)劃。

輸入格式:
有一個(gè)整數(shù)n(1≤n≤1000)表示網(wǎng)格的數(shù)量。

第二行包含僅由“L”和“.”組成的字符串R,表示有和沒(méi)有百合花的格子。

輸出格式:
輸出包含一行,字符串R′僅由“L”、“”組成和“C”,其中“C”表示在滿足上述要求的同時(shí)分配給R中空網(wǎng)格的貓糧。

輸入樣例:
在這里給出一組輸入。例如:

5
..L..

輸出樣例:
在這里給出相應(yīng)的輸出。例如:

C.L.C
思路

二分答案,先二分出放貓糧的格子的數(shù)量,再驗(yàn)證放這么多數(shù)量的貓糧是否可行

代碼
#includeusing namespace std;
int n;
char a[1010],b[1010];
void coutt()
{for (int i=1;i<=n;i++) cout<int cnt=0;
	for (int i=1;i<=n;i++) b[i]=a[i];
	for (int i=1;i<=n;i++) 
	{if (b[i+1]!='L'&&b[i-1]!='L'&&b[i]!='L')
		{	b[i]='C';
			cnt++;
		} 
		if (cnt>=k) return true; 
	}
	return false;
}
void half(int l,int r)
{while (l+1int mid=(l+r)/2;
		if (check(mid)==true) l=mid;
		else r=mid;
	} 
	if (check(r)==true) coutt();
	else 
	{check(l);
		coutt();
	}	
	return ;
} 
int main()
{cin>>n;
	for (int i=1;i<=n;i++) cin>>a[i];
	half(0,n);
	return 0;
}
7-2 a * b

給出兩個(gè)不超過(guò)1000位的十六進(jìn)制數(shù)a,b。
求a?b的值

輸入格式:
輸入共兩行,兩個(gè)十六進(jìn)制的數(shù)

輸出格式:
輸出一行,表示a?b

輸入樣例:
在這里給出一組輸入。例如:

1BF52
1D4B42

輸出樣例:
在這里給出相應(yīng)的輸出。例如:

332FCA5924
思路

考察進(jìn)制轉(zhuǎn)換和高精度乘法,先把輸入的十六進(jìn)制轉(zhuǎn)換為十進(jìn)制,再高精度乘法,最后輸出

代碼
#includeusing namespace std;
#define N 5010
int a[N],b[N],ans[N],l1,l2,l3=5000;
string s1,s2;
void trans(string s,int t[],int l)//將字符串s轉(zhuǎn)換為數(shù)字存進(jìn)t數(shù)組中 
{for (int i=1;i<=l;i++)
	{if (s[i-1]=='A') t[l-i+1]=10;
		else if (s[i-1]=='B') t[l-i+1]=11;
		else if (s[i-1]=='C') t[l-i+1]=12;
		else if (s[i-1]=='D') t[l-i+1]=13;
		else if (s[i-1]=='E') t[l-i+1]=14;
		else if (s[i-1]=='F') t[l-i+1]=15;
		else t[l-i+1]=s[i-1]-'0';
	}
	return;
}
void cheng(int a[],int b[])//高精度乘法 
{for (int i=1;i<=l1;i++)
	  for (int j=1;j<=l2;j++)
	  {  	  ans[i+j-1]+=a[i]*b[j];
	  	  ans[i+j]+=ans[i+j-1]/16;
	  	  ans[i+j-1]%=16;
	  }
	while (ans[l3]==0) 
	  l3--;
	return;
}
void ccout()
{for (int i=l3;i>=1;i--)
	{if (ans[i]==10) cout<<"A";
		else if (ans[i]==11) cout<<"B";
		else if (ans[i]==12) cout<<"C";
		else if (ans[i]==13) cout<<"D";
		else if (ans[i]==14) cout<<"E";
		else if (ans[i]==15) cout<<"F";
		else cout<cin>>s1>>s2;
	l1=s1.length();
	l2=s2.length();
	l3=5000;
	trans(s1,a,l1);
	trans(s2,b,l2);
	//for (int i=1;i<=l2;i++) cout<
7-3 山頭狙擊戰(zhàn)

題目描述
小明為了掩護(hù)大部隊(duì),單槍匹馬同敵人周旋,后來(lái)被敵人包圍在某山頭……等等,為什么怎么聽(tīng)怎么像狼牙山五壯士!不過(guò)不用著急,這次小明攜帶了足夠的彈藥,完全可以將涌上來(lái)的敵人一個(gè)一個(gè)干掉。小明是個(gè)神槍手,只要他的槍膛中有子彈,他就能將在他射程m(用從敵人位置到山頭的直線距離算)以內(nèi)的一個(gè)敵人瞬間射殺。但如果在射程內(nèi)沒(méi)有敵人,出于節(jié)約子彈考慮和面子問(wèn)題,小明會(huì)等待敵人靠近然后射擊。
正當(dāng)小明為自己的強(qiáng)大而自我膨脹時(shí),他忽然發(fā)現(xiàn)了一個(gè)致命的失誤:他攜帶的槍是單發(fā)槍,每射出一發(fā)子彈都必須花k秒鐘的時(shí)間裝子彈。而兇殘的敵人才不會(huì)花時(shí)間等你換子彈呢。他們始終在以1m/s的速度接近山頭。而如果在一個(gè)敵人到達(dá)山頭時(shí)小明無(wú)法將他擊斃,那么我們可憐的小明就將犧牲在敵人的刺刀下?,F(xiàn)在小明用心靈感應(yīng)向你發(fā)出求助:要保住自己的性命并且殲滅所有敵人,小明最多只能用多少時(shí)間給槍裝上一發(fā)子彈?
說(shuō)明:假設(shè)一開(kāi)始小明的槍中就有一發(fā)子彈,并且一旦確定一個(gè)裝彈時(shí)間,小明始終會(huì)用這個(gè)時(shí)間完成子彈的裝卸。希望你能幫助小明脫離險(xiǎn)境。

輸入格式
每組輸入數(shù)據(jù),第一行有兩個(gè)整數(shù)n和m,(2≤n≤100,000; 1≤m≤10,000,000)n代表敵人個(gè)數(shù),m代表小明的射程。
接下來(lái)有n行,每行一個(gè)整數(shù)mi,(1≤mi≤10,000,000),代表每個(gè)敵人一開(kāi)始相對(duì)山頭的距離(單位為米)。

輸出格式
每組輸出數(shù)據(jù)僅有一個(gè)整數(shù),代表小明的換彈時(shí)間(單位為秒)。

樣例輸入

6 100
236
120
120
120
120
120

樣例輸出

25
思路

用二分答案尋找最佳換彈時(shí)間,check()函數(shù)檢查當(dāng)前二分的換彈時(shí)間能否全部擊中敵人

#includeusing namespace std;
#define N 100010
int n,m,a[N];
bool check(int k)
{int t=max(0,a[1]-m);//t:時(shí)間
	for (int i=2;i<=n;i++)
	{t+=k;//裝填子彈
		if (a[i]while (l+1int mid=(l+r)/2;
		if (check(mid)==true) l=mid;
		else r=mid;
	}
	if (check(r)==true) return r;
	else return l;
}
int main()
{cin>>n>>m;
	for (int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+1+n);
	cout<
7-4 Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.

Input Specification:
Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (≤10
5
) which is the total number of nodes, and a positive K (≤N) which is the length of the sublist to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.

Then N lines follow, each describes a node in the format:

Address Data Next
where Address is the position of the node, Data is an integer, and Next is the position of the next node.

Output Specification:
For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.

Sample Input:

00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

Sample Output:

00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1
思路

用數(shù)組模擬鏈表

#includeusing namespace std;
#define N 1000010
int st,ed,n,m,temp,id[N],nnext[N],llist[N];
int main()
{cin>>st>>n>>m;
    for (int i=1;i<=n;i++)
    {cin>>temp;
        cin>>id[temp]>>nnext[temp];
    }
    int cnt=0,now=st;        
    while (now!=-1) 
    {cnt++;
        llist[cnt]=now; 
        now=nnext[now];
        //list[i]=nnext[list[i-1]]
    }
    for (int i=1;i<=(cnt-cnt%m);i+=m) 
	{//if (i+m>n) break;
		reverse(llist+i,llist+i+m);
	}
    for (int i=1;i<=cnt-1;i++) printf("%05d %d %05d\n",llist[i],id[llist[i]],llist[i+1]);
    printf("%05d %d -1",llist[cnt],id[llist[cnt]]);
	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)前題目:NEUQ2022第一次雙周賽題解-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://muchs.cn/article18/pcjgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃、網(wǎng)站改版、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)