国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬

這篇具有很好參考價(jià)值的文章主要介紹了湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、鏈接

比賽

二、題目

題目描述

n個(gè)人要進(jìn)行比賽,比賽規(guī)則如下:

  1. 假設(shè)每輪比賽的人是m,取最大的k,k=2^t且k≤m。這k個(gè)人每2人舉行一場(chǎng)比賽,勝利者進(jìn)入一下輪,失敗者被淘汰。
  2. 余下的m-k個(gè)人,不進(jìn)行比賽,直接進(jìn)入下一輪
  3. 直到?jīng)Q出冠軍,比賽結(jié)束

比如有5個(gè)人參加比賽,第一輪舉辦2場(chǎng),剩余3人進(jìn)入第二輪,第二輪1場(chǎng),剩余2人進(jìn)入第三輪,第三輪舉辦1場(chǎng)決出冠軍,所以一共要辦4場(chǎng)比賽。 請(qǐng)問一共要舉行幾輪多少場(chǎng)比賽?

輸入

第一行是一個(gè)整數(shù)K,表示樣例的個(gè)數(shù)。 以后每行一個(gè)樣例,為n(1≤n≤1000000000)

輸出

每行輸出兩個(gè)整數(shù),輪數(shù)和比賽場(chǎng)數(shù),中間用一個(gè)空格隔開。

樣例輸入

2
1
5

樣例輸出

0 0
3 4

三、題意

有n個(gè)人進(jìn)行比賽,最后只剩下一個(gè)人,輸出比賽輪數(shù)和比賽場(chǎng)數(shù),需要找到最大的小于總?cè)藬?shù)n的2的指數(shù)函數(shù)的值k

四、代碼

c++

#include<iostream>

using namespace std;

int main()
{
	int t;//表示樣例數(shù)
	scanf("%d",&t);
	
	while(t--)
	{
		int n,k=1,a=0,b=0;//n表示總?cè)藬?shù),k表示最接近n的2的指數(shù)函數(shù)的值
		//a表示輪數(shù),b表示場(chǎng)數(shù)
		scanf("%d",&n);
		
		if(n<2)	printf("0 0\n");//只剩下一個(gè)人,就不需要比較,特判
		else
		{
			while(n>1)//只要不是剩下一個(gè)人,就一直循環(huán)
			{
				while(k<n)	k*=2;//尋找最接近n的2的指數(shù)函數(shù)的值
				
				if(k!=n)	k/=2;//跳出上面循環(huán)會(huì)多乘一次,所以除掉一個(gè)2
				//當(dāng)然,k==n不算多乘了一次,條件判斷if(k>n)也是可以的
				
				a++;//每一次算一輪
				b+=k/2;//比賽進(jìn)行k/2場(chǎng)
				n-=k/2;//淘汰k/2個(gè)人
			}
			
			printf("%d %d\n",a,b);
		}
	}
	
	return 0;
}

c語(yǔ)言

#include<stdio.h>

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int n,k=1,a=0,b=0;
		scanf("%d",&n);
		
		if(n<2)	printf("0 0\n");
		else
		{
			while(n>1)
			{
				while(k<n)	k*=2;
				if(k>n)	k/=2;
				
				a++;
				b+=k/2;
				n-=k/2;
			}
			
			printf("%d %d\n",a,b);
		}
	}
	
	return 0;
}

五、總結(jié)

1.怎么找到最大的小于總?cè)藬?shù)n的2的指數(shù)函數(shù)數(shù)值k:使用一個(gè)循環(huán),讓k從1開始循環(huán),每一次循環(huán)把k乘以2,一直到k大于n的時(shí)候跳出循環(huán)

while(k<n)	k*=2;

這個(gè)時(shí)候需要注意一個(gè)特判:如果兩個(gè)數(shù)字相等怎么辦(如果總?cè)藬?shù)n是偶數(shù))?好吧,其實(shí)是因?yàn)槲覍忣}的時(shí)候沒有仔細(xì),題目說了是k<=m,意思也就是說等于也是可以的,當(dāng)然我們模擬發(fā)現(xiàn)也是可以的......(多此一舉了)?

#include<iostream>

using namespace std;

int main()
{
	int t;//表示樣例數(shù)
	scanf("%d",&t);
	
	while(t--)
	{
		int n,k=1,a=0,b=0;//n表示總?cè)藬?shù),k表示最接近n的2的指數(shù)函數(shù)的值
		//a表示輪數(shù),b表示場(chǎng)數(shù)
		scanf("%d",&n);
		
		if(n<2)	printf("0 0\n");//只剩下一個(gè)人,就不需要比較,特判
		else
		{
			while(n>1)//只要不是剩下一個(gè)人,就一直循環(huán)
			{
				while(k<=n)	k*=2;//尋找最接近n的2的指數(shù)函數(shù)的值
				
				k/=2;//跳出上面循環(huán)會(huì)多乘一次,所以除掉一個(gè)2
				//當(dāng)然,k==n不算多乘了一次,條件判斷if(k>n)也是可以的
				
				a++;//每一次算一輪
				b+=k/2;//比賽進(jìn)行k/2場(chǎng)
				n-=k/2;//淘汰k/2個(gè)人
			}
			
			printf("%d %d\n",a,b);
		}
	}
	
	return 0;
}

改成這樣甚至不用再多加一個(gè)條件判斷,可以肯定多乘了一次2,所以直接除以一次2即可,這個(gè)就是跳出循環(huán)的臨界條件,只有k>n才會(huì)跳出循環(huán),但是這個(gè)時(shí)候k是不滿足條件的,所以需要回退一次,也就是除以2

?2.輪數(shù),場(chǎng)數(shù),總?cè)藬?shù)之間的關(guān)系是什么?

每一輪需要算出一個(gè)小于等于總?cè)藬?shù)n的一個(gè)最大的2的指數(shù)函數(shù)數(shù)值k

每一輪需要進(jìn)行k/2場(chǎng)比賽

每一輪需要淘汰k/2個(gè)人

不斷地更新輪數(shù),場(chǎng)數(shù),總?cè)藬?shù),不大于總?cè)藬?shù)的最大的2的指數(shù)函數(shù)數(shù)值k即可

3.比賽最后只要留下一個(gè)冠軍,也就是說總?cè)藬?shù)等于1是結(jié)束的標(biāo)識(shí),跳出循環(huán)的臨界條件

六、精美圖片

湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬,算法競(jìng)賽,湘大 XTU OJ,c++,算法,數(shù)據(jù)結(jié)構(gòu)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-640269.html

到了這里,關(guān)于湘大 XTU OJ 1308 比賽 題解:循環(huán)結(jié)束的臨界點(diǎn)+樸素模擬的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 湘大 XTU OJ 1291 Buying Gifts 題解(非常詳細(xì)):枚舉 維護(hù)最小值 排序

    湘大 XTU OJ 1291 Buying Gifts 題解(非常詳細(xì)):枚舉 維護(hù)最小值 排序

    1291 Buying Gifts 快到年末了,Boss Liu準(zhǔn)備在年會(huì)上發(fā)些禮物, 由于不想禮物的價(jià)格區(qū)別太大 ,Boss Liu希望 最好的禮物與最差的禮物價(jià)格相差越小越好 。 當(dāng)然, 如果存在相同的選擇,Boss Liu希望花的錢越少越好 。 Boss Liu把這個(gè)買禮物的任務(wù)給你,你決定寫個(gè)程序來幫助自己計(jì)算

    2024年02月13日
    瀏覽(20)
  • 湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫(kù)的使用 快速排序 歸并排序 冒泡排序

    湘大 XTU OJ 1097 排序 題解:c++ 函數(shù)庫(kù)的使用 快速排序 歸并排序 冒泡排序

    1097 排序 Description N個(gè)整數(shù),將其排序輸出。 輸入 第一行是一個(gè)整數(shù)K(1=K=20),表示有多少個(gè)樣例, 每個(gè)樣例的第一行是一個(gè)整數(shù)N(1=N=1,000) 和一個(gè)字符X,X為A時(shí)表示升序排序,為D時(shí)為降序排列;第二行為N個(gè)整數(shù),每個(gè)整數(shù)都可以使用int表示, 每個(gè)之間用一個(gè)空格隔開。

    2024年02月13日
    瀏覽(27)
  • 湘大 XTU OJ 1345 素?cái)?shù)字符串 題解:歐拉篩法 前綴和 ‘\0‘ sprintf

    湘大 XTU OJ 1345 素?cái)?shù)字符串 題解:歐拉篩法 前綴和 ‘\0‘ sprintf

    素?cái)?shù)字符串 我們將素?cái)?shù)從小到大依次書寫,可以得到一個(gè)字符串\\\"23571113?\\\",已知一個(gè)數(shù)碼d(0≤d≤9),求字符串在區(qū)間[L,R]之間的多少個(gè)d? 第一行是一個(gè)整數(shù)T(1≤T≤10000),表示樣例的個(gè)數(shù)。 每個(gè)樣例是一行, 為3個(gè)整數(shù),區(qū)間L,R,(1≤L≤R≤1000000)和數(shù)碼d。 區(qū)間從1開始計(jì)數(shù)。 每

    2024年02月12日
    瀏覽(22)
  • 湘大 XTU OJ 1290 Alice and Bob 題解(非常詳細(xì)):字符串 分類討論 簡(jiǎn)單模擬

    湘大 XTU OJ 1290 Alice and Bob 題解(非常詳細(xì)):字符串 分類討論 簡(jiǎn)單模擬

    1290 Alice and Bob Alice和Bob玩剪刀-石頭-布的游戲 ,請(qǐng)你寫個(gè)程序判斷一下比賽的結(jié)果。 第一行是一個(gè)整數(shù)K,表示樣例的個(gè)數(shù)。 以后每行兩個(gè)單詞, rock表示石頭,paper表示布,scissors表示剪刀 。 前面一個(gè)單詞是Alice出的拳,后面一個(gè)單詞是Bob出的拳。 平局輸出\\\"Draw\\\",否則輸出

    2024年02月13日
    瀏覽(22)
  • 湘大 XTU OJ 1148 三角形 題解(非常詳細(xì)):根據(jù)題意樸素模擬+觀察樣例分析需要計(jì)算幾輪 具體到一般

    湘大 XTU OJ 1148 三角形 題解(非常詳細(xì)):根據(jù)題意樸素模擬+觀察樣例分析需要計(jì)算幾輪 具體到一般

    1148 三角形 題目描述 給一個(gè)序列, 按下面的方式進(jìn)行三角形累加,求其和值 。 比如序列為 1,2,3,4,5 輸入 有多組樣例。每個(gè)樣例的第一行是一個(gè)整數(shù)N( 1≤N≤100 ),表示序列的大小, 如果N為0表示輸入結(jié)束。這個(gè)樣例不需要處理。 第二行是N個(gè)整數(shù),每個(gè)整數(shù)處于[0,100]之間。

    2024年02月13日
    瀏覽(31)
  • xtu oj 1522 格子

    一個(gè)n×m的網(wǎng)格,格子里最多能放一枚棋子,將k枚棋子隨機(jī)放入不同的網(wǎng)格中,使得同行同列最多只有一枚棋子,請(qǐng)問概率是多少? 第一行是一個(gè)整數(shù)T?(1≤T≤512),表示樣例的個(gè)數(shù)。 以后每行一個(gè)樣例,為三個(gè)整數(shù)n,m,k,?(1≤n,m,k≤8) 每行輸出一個(gè)樣例的結(jié)果,如果概率為0,

    2024年01月21日
    瀏覽(46)
  • xtu oj 1329 連分式

    xtu oj 1329 連分式

    連分式是形如下面的分式,已知a,b和迭代的次數(shù)n,求連分式的值。 第一行是一個(gè)整數(shù)T(1≤T≤1000),表示樣例的個(gè)數(shù)。 每行一個(gè)樣例,為a,b,n(1≤a,b,n≤9) 每行輸出一個(gè)樣例的結(jié)果,使用x/y分式表達(dá),并保證x,y互質(zhì)。 AC代碼 找規(guī)律即可,與1374連分?jǐn)?shù)類似。

    2024年02月02日
    瀏覽(20)
  • xtu oj 1327 字符矩陣

    按照示例的規(guī)律輸出字符矩陣。 比如輸入字母 D 時(shí),輸出字符矩陣如下 字符矩陣行首、尾都無(wú)空格。 每行一個(gè)大寫英文字母,如果字符為 # ,表示輸入結(jié)束,不需要處理。 依次輸出對(duì)應(yīng)的字符矩陣 AC代碼 解題思路:利用二維數(shù)組找規(guī)律進(jìn)行分塊打印即可。此題與前面1233

    2024年02月05日
    瀏覽(16)
  • xtu oj 1340 wave

    xtu oj 1340 wave

    一個(gè)n列的網(wǎng)格,從(0,0)網(wǎng)格點(diǎn)出發(fā),波形存在平波(從(x,y)到(x+1,y)),上升波(從(x,y)到(x+1,y+1)),下降波(從(x,y)到(x+1,y?1))三種波形,請(qǐng)問從(0,0)出發(fā),最終到達(dá)(n,0)的不同波形有多少種?如圖,3列網(wǎng)格有7種不同的波形。 第一行是樣例數(shù)T(1≤T≤42)。 以后每行一個(gè)整數(shù)n(1≤n≤42

    2024年02月01日
    瀏覽(16)
  • xtu oj 1526 奇因數(shù)

    如果一個(gè)數(shù)n,其素因子的個(gè)數(shù)為ω(n),如果ω(n)是奇數(shù),那么稱其為“奇因數(shù)”。 比如,數(shù)60=22?3?5,ω(60)=3,那么60是“奇因數(shù)”。 顯然,所有素?cái)?shù),必然是“奇因數(shù)”。 求區(qū)間[a,b]中“奇因數(shù)”的個(gè)數(shù)。 第一行是一個(gè)整數(shù)T?(1≤T≤10000),表示樣例的數(shù)量。 以后每行一個(gè)

    2024年01月18日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包