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

秒懂百科,C++如此簡(jiǎn)單丨第二十天:貪心算法2

這篇具有很好參考價(jià)值的文章主要介紹了秒懂百科,C++如此簡(jiǎn)單丨第二十天:貪心算法2。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

Everyday English

前言

洛谷 P1031 均分紙牌

題目描述

思路點(diǎn)撥

AC代碼

洛谷 P1094 紀(jì)念品分組

題目描述

樣例輸入

樣例輸出?

思路點(diǎn)撥

AC代碼

洛谷 P2660 zzc 種田?

題目描述

思路點(diǎn)撥

AC Code

結(jié)尾


Everyday English

Don't miss the opportunity.

機(jī)不可失,時(shí)不再來(lái)。

前言

這節(jié)課是貪心算法的習(xí)題課,我們會(huì)講解三道題目。

貪心算法1:貪心算法第一節(jié)課

洛谷 P1031 均分紙牌

題目網(wǎng)址:[NOIP2002 提高組] 均分紙牌 - 洛谷

題目描述

有?N?堆紙牌,編號(hào)分別為?1,2,……,N。每堆上有若干張,但紙牌總數(shù)必為?N?的倍數(shù)??梢栽谌我欢焉先∪舾蓮埣埮?,然后移動(dòng)。

移牌規(guī)則為:在編號(hào)為?1?堆上取的紙牌,只能移到編號(hào)為?2?的堆上;在編號(hào)為?N?的堆上取的紙牌,只能移到編號(hào)為?N?1?的堆上;其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。

現(xiàn)在要求找出一種移動(dòng)方法,用最少的移動(dòng)次數(shù)使每堆上紙牌數(shù)都一樣多。

例如?N=4?時(shí),4堆紙牌數(shù)分別為?9,8,17,6。

移動(dòng)?3 次可達(dá)到目的:

  • 從第三堆取?4 張牌放到第四堆,此時(shí)每堆紙牌數(shù)分別為?9,8,13,10。
  • 從第三堆取?3 張牌放到第二堆,此時(shí)每堆紙牌數(shù)分別為?9,11,10,10。
  • 從第二堆取?1?張牌放到第一堆,此時(shí)每堆紙牌數(shù)分別為?10,10,10,10。

思路點(diǎn)撥

首先,我們得知道每堆牌應(yīng)有多少?gòu)?。題目保證了總牌數(shù)是堆數(shù)的倍數(shù),那么最終每一堆的牌數(shù)應(yīng)該是(a[1]+a[2]+……+a[N])/N,也就是N堆牌的平均數(shù)。

比如有4堆牌,分別是有2、3、4、7張,而平均數(shù)就是4,也就是最后每堆牌所分得的張數(shù)。

每一堆牌的張數(shù)只可能有三種情況:

1.比平均值?。荷賻讖垼妥層疫叺囊欢呀o幾張。

2.和平均值相同:不需要給,判斷下一個(gè)。

3.比平均值大:多幾張,就把多的給右邊。

情況一時(shí),右邊一堆的張數(shù)可能會(huì)出現(xiàn)負(fù)數(shù),但沒(méi)有關(guān)系,最終還是會(huì)有其他堆補(bǔ)回來(lái)的。

AC代碼

#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int n,a[maxn],cnt;
int main()
{
    int mean,sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
    {
		cin>>a[i];
		sum+=a[i];
	}
	mean=sum/n; //☆總和÷堆數(shù)=平均每堆牌數(shù) 
	for(int i=1;i<=n-1;i++)
	{
		if(a[i]!=mean) 
        {
			a[i+1]+=a[i]-mean;//a[i]少的話會(huì)加上負(fù)數(shù),相當(dāng)于減少右邊的牌
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}

洛谷 P1094 紀(jì)念品分組

題目網(wǎng)址:[NOIP2007 普及組] 紀(jì)念品分組 - 洛谷?

題目描述

元旦快到了,校學(xué)生會(huì)讓樂(lè)樂(lè)負(fù)責(zé)新年晚會(huì)的紀(jì)念品發(fā)放工作。為使得參加晚會(huì)的同學(xué)所獲得的紀(jì)念品價(jià)值相對(duì)均衡,他要把購(gòu)來(lái)的紀(jì)念品根據(jù)價(jià)格進(jìn)行分組,但每組最多只能包括兩件紀(jì)念品, 并且每組紀(jì)念品的價(jià)格之和不能超過(guò)一個(gè)給定的整數(shù)。為了保證在盡量短的時(shí)間內(nèi)發(fā)完所有紀(jì)念品,樂(lè)樂(lè)希望分組的數(shù)目最少。

你的任務(wù)是寫(xiě)一個(gè)程序,找出所有分組方案中分組數(shù)最少的一種,輸出最少的分組數(shù)目。

樣例輸入

100 
9 
90 
20 
20 
30 
50 
60 
70 
80 
90

樣例輸出?

6

思路點(diǎn)撥

相信各位都學(xué)過(guò)首尾配對(duì)吧,比如計(jì)算下面這道題:

1+2+3+4+5+6+7+8+9

除了利用公式計(jì)算,我們還可以首尾配對(duì),觀察首和尾,很容易想到1+9=10,而總共有4組余下一個(gè)5,即4×10+5=45。

而這一題要盡可能的平均不就是首尾配對(duì)嗎?但要注意一點(diǎn),不能超過(guò)給定范圍。

既然要首尾配對(duì),首先得排個(gè)序吧,這就要用到我們學(xué)過(guò)的sort函數(shù)了。

接著我們分析一下樣例,先把樣例排序一下:

20?20?30?50?60?70?80?90 90?

利用配對(duì)的思想:最小+最大=20+90=110,超過(guò)了限制,也就是說(shuō),最大的只能單獨(dú)一個(gè)組。

再次利用配對(duì)的思想:最小+第二大=20+90=110,還是大了,第二大也只能單獨(dú)一組。

再次利用配對(duì)的思想:最小+第三大=20+80=100,沒(méi)有超過(guò)限制,可以為一組。

再次利用配對(duì)的思想:第二小+第四大=20+70=90,沒(méi)有超過(guò)限制,可以為一組。

以此類推,我們便可得出答案。

而模擬兩邊不斷往里縮小范圍的不就是指針嗎!上代碼!

AC代碼

#include<bits/stdc++.h>
using namespace std;
int n, w, ans;
int a[30010];
int main() 
{
    cin>>w>>n;
    for (int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);//要想配對(duì),先排序
    int i=1,j=n;//i,j為兩個(gè)指針
    while(i<=j) 
    {
        if (a[i]+a[j]<=w)//兩個(gè)紀(jì)念品可以為一組
        {
            i++;
            j--;
            ans++;
        } 
        else//最大單獨(dú)為一組
        {
            j--;
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}


洛谷 P2660 zzc 種田?

題目網(wǎng)址:zzc 種田 - 洛谷

題目描述

田地是一個(gè)巨大的矩形,然而 zzc 每次只能種一個(gè)正方形,而每種一個(gè)正方形時(shí) zzc 所花的體力值是正方形的周長(zhǎng),種過(guò)的田不可以再種,zzc 很懶還要節(jié)約體力去泡妹子,想花最少的體力值去種完這塊田地,問(wèn)最小體力值。

思路點(diǎn)撥

很明顯的一道貪心題,要想耗費(fèi)力氣最小,肯定是每次劃分盡可能大的正方形。

比如2×2的一個(gè)田地,如果你劃分成4個(gè)1×1的需要周長(zhǎng):1×4×4=16cm

而劃分成1個(gè)2×2的只需要周長(zhǎng):2×4=8cm

所以,貪心策略是:每次劃分盡可能大的正方形。?

對(duì)于3×5的正方形,最省力氣的劃分如下:

秒懂百科,C++如此簡(jiǎn)單丨第二十天:貪心算法2,秒懂百科,C++如此簡(jiǎn)單,c++,貪心算法,開(kāi)發(fā)語(yǔ)言

注意:最大的正方形應(yīng)該已較短的一條邊作為邊長(zhǎng)。

90分?

#include<bits/stdc++.h>
using namespace std; 
typedef long long ll;
signed main()
{
	ll x,y,l,ans=0;
	cin>>x>>y;
	l=x*y;//l為剩余面積
	if(x>y) swap(x,y);//始終保持小的是x
	while(l!=0)
	{
		l-=x*x;//畫(huà)一個(gè)盡可能大的正方形
		y-=x;
		ans+=x*4;
		if(x>y) swap(x,y);
	}
	cout<<ans<<endl;
}

優(yōu)化:不一定一個(gè)一個(gè)地劃分,可以一起劃分。?

AC Code

#include<bits/stdc++.h>
using namespace std; 
typedef long long ll;
signed main()
{
	ll x,y,ans=0;
	cin>>x>>y;
	if(x>y) swap(x,y);
	while(x!=0&&y!=0)
	{
		ans+=x*4*(y/x);
		y%=x;
		swap(x,y);
	}
	cout<<ans<<endl;
}

結(jié)尾

本節(jié)課我們精講了三道題,記得去洛谷完成哦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829094.html

到了這里,關(guān)于秒懂百科,C++如此簡(jiǎn)單丨第二十天:貪心算法2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • C++學(xué)習(xí)第二十天----簡(jiǎn)單文件輸入/輸出

    1.寫(xiě)入到文本文件中 ? ? ? ? 必須聲明自己的ofstream對(duì)象,為其命名,并將其同文件關(guān)聯(lián)起來(lái); ????????方法open()接受一個(gè)c-風(fēng)格字符換作為參數(shù),可以是一個(gè)字面字符串,也可以是存在數(shù)組中的字符串。 ????????聲明一個(gè)ofstream對(duì)象并將其同文件關(guān)聯(lián)起來(lái)后,用于

    2024年02月11日
    瀏覽(16)
  • 學(xué)習(xí)JAVA的第二十天(基礎(chǔ))

    目錄 字符集 ?編碼和解碼 字符流 FileReader FileWriter 緩沖流? 字節(jié)緩沖流 字符緩沖流 轉(zhuǎn)換流? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 序列化流? ? ? ?? 反序列化流? ?打印流 字節(jié)打印流? ?字符打印流 解壓縮流? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年03月15日
    瀏覽(22)
  • 【MySQL進(jìn)階之路丨第二篇】數(shù)據(jù)庫(kù)的安裝與配置

    【MySQL進(jìn)階之路丨第二篇】數(shù)據(jù)庫(kù)的安裝與配置

    下載地址:MySQL下載地址 進(jìn)入網(wǎng)址后,點(diǎn)擊 MySQL Community Server : 選擇版本: 我們選擇歷史版本中的5.7.24版本 安裝到D盤的MySQL文件夾中 解壓后復(fù)制bin目錄路徑 在系統(tǒng)變量的Path中添加bin目錄路徑 接著在D:SoftwareMySQLmysql-5.7.24-winx64目錄下新增加一個(gè)配置文件mysql.ini和一個(gè)data文

    2024年02月10日
    瀏覽(20)
  • 【微信小程序丨第二篇】小程序的基本目錄結(jié)構(gòu)與文件作用剖析

    【微信小程序丨第二篇】小程序的基本目錄結(jié)構(gòu)與文件作用剖析

    小程序框架的?標(biāo)是通過(guò)盡可能簡(jiǎn)單、?效的?式讓開(kāi)發(fā)者可以在微信中開(kāi)發(fā)具有原?APP體驗(yàn)的服務(wù)。 ?程序框架提供了??的視圖層描述語(yǔ)? WXML 和 WXSS ,以及 JavaScript ,并 在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng) ,讓開(kāi)發(fā)者能夠?qū)W⒂跀?shù)據(jù)與邏輯。 傳統(tǒng)web 微信

    2024年02月09日
    瀏覽(22)
  • 30天精通Nodejs--第二十天:express-操作mysql

    在Node.js中使用Express框架進(jìn)行開(kāi)發(fā)時(shí),經(jīng)常會(huì)需要持久化數(shù)據(jù),與關(guān)系型數(shù)據(jù)庫(kù)MySQL的集成是至關(guān)重要的一步。本文將詳細(xì)闡述如何在Express項(xiàng)目中連接MySQL數(shù)據(jù)庫(kù),并通過(guò)實(shí)例代碼演示如何執(zhí)行基本的增刪改查(CRUD)操作。

    2024年01月18日
    瀏覽(18)
  • 【C++刷題】經(jīng)典簡(jiǎn)單題第二輯

    【C++刷題】經(jīng)典簡(jiǎn)單題第二輯

    回文排列 URL化 配對(duì)交換 遞歸乘法 階乘尾數(shù) 二進(jìn)制鏈表轉(zhuǎn)整數(shù) 從鏈表中刪去總和值為零的連續(xù)節(jié)點(diǎn) 括號(hào)的最大嵌套深度 整理字符串 奇偶樹(shù) 將句子排序 最長(zhǎng)和諧子序列

    2024年02月09日
    瀏覽(18)
  • 【三十天精通Vue 3】 第二十二天 Vue 3的UI框架詳解

    【三十天精通Vue 3】 第二十二天 Vue 3的UI框架詳解

    ?創(chuàng)作者:陳書(shū)予 ??個(gè)人主頁(yè):陳書(shū)予的個(gè)人主頁(yè) ??陳書(shū)予的個(gè)人社區(qū),歡迎你的加入: 陳書(shū)予的社區(qū) ??專欄地址: 三十天精通 Vue 3

    2024年02月02日
    瀏覽(21)
  • 【三十天精通Vue 3】第二十一天 Vue 3的安全性詳解

    【三十天精通Vue 3】第二十一天 Vue 3的安全性詳解

    ?創(chuàng)作者:陳書(shū)予 ??個(gè)人主頁(yè):陳書(shū)予的個(gè)人主頁(yè) ??陳書(shū)予的個(gè)人社區(qū),歡迎你的加入: 陳書(shū)予的社區(qū) ??專欄地址: 三十天精通 Vue 3

    2024年02月01日
    瀏覽(22)
  • 【Spring進(jìn)階系列丨第二篇】Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)

    【Spring進(jìn)階系列丨第二篇】Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)

    我們都知道Spring 框架主要的優(yōu)勢(shì)是在 簡(jiǎn)化開(kāi)發(fā) 和 框架整合 上,至于如何實(shí)現(xiàn)就是我們要學(xué)習(xí)Spring 框架的主要內(nèi)容,今天我們就來(lái)一起學(xué)習(xí)Spring中的兩大核心技術(shù)IoC(控制反轉(zhuǎn))與DI(依賴注入)。 以經(jīng)典的三層架構(gòu)MVC作為案例,以前我們都是這么干的,看如下代碼: 按照

    2024年02月05日
    瀏覽(34)
  • 【三十天精通Vue 3】第二十七天 如何用Vue 3和TensorFlow.js實(shí)現(xiàn)人臉識(shí)別Web應(yīng)用?

    【三十天精通Vue 3】第二十七天 如何用Vue 3和TensorFlow.js實(shí)現(xiàn)人臉識(shí)別Web應(yīng)用?

    ?創(chuàng)作者:陳書(shū)予 ??個(gè)人主頁(yè):陳書(shū)予的個(gè)人主頁(yè) ??陳書(shū)予的個(gè)人社區(qū),歡迎你的加入: 陳書(shū)予的社區(qū) ??專欄地址: 三十天精通 Vue 3

    2024年02月03日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包