尺取法1 加set,map

2021-07-16 04:48:36 字數 867 閱讀 1146

繼續上節;

poj3320;

題目大意;求複習最少的連續頁數,但包含所有的知識點;

輸入為;有幾頁,每頁包含什麼知識點;(1 ≤ p ≤ 1000000);

輸出;最少連續的但可以全部複習到的頁數;

首先要確定要使用set,map,和尺取法;

set;因為知識都是單一的;滿足用set來儲存;————set的大小就是知識點的個數;

map;因為每頁都對應著乙個知識點;存在對映關係;————map對應著每個知識點有多少頁了;

尺取法;應用於求最優連續子串行;所以他也當仁不讓;————查詢最優子串行;

先看**;

//尺取法加set,map; 

#include

#include

#include

#include

#include

using

namespace

std;

int a[1000005];

int main()

m = c.size();

int l = 0 , r = 0 , ans = n+1,sum = 0;

while(1)

printf("%d\n",ans);

}return

0;}

主要還是來研究尺取法吧;

while(1)
大迴圈while(1);是為了進行多次查詢;

中間的小while是為了進行移動查詢;

1,直到找到所有知識點也就是sum=m時,則進行下面的記錄最小頁數並考慮是否向前移動;

2,或者是直到搜尋完畢,r=n並且存在sum

演算法 尺取法

我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。題目翻譯 給定長度為n的數列整數a0,a1,a2,a3 an 1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。限制條件 100s 10 8 這裡我們拿第一組測試資料舉例子,即 n 10,s 15,...

尺取法練習

mr wolfram 的csdn 部落格 hopeforbetter的csdn部落格,尺取法顧名思義就像尺子一樣,當測量乙個物體時,你不一定從開始的位置測量,你可以從任意乙個位置st開始,當然前提是尺子夠長,然後你再讀出尾部en的數,尾部減去開始的位置en st,就是這個物體的長度。尺取法就是這個思...

尺取法基礎

p1638 逛畫展 題意 求最短區間包含所有畫家。思路 利用兩個變數來維護區間,如果區間不滿足條件r 滿足的話,l 直到區間最小。includeusing namespace std int a 1000005 b 1000005 int main b a l if b a l 0 k l else...