第六周總結

2021-10-04 18:00:32 字數 3815 閱讀 5254

(2), 關於register(提高速度)

儲存型別說明符 register要求變數儲存在cpu暫存器中,所以不能用取位址符& 取其位址,並且,在全域性變數的地方不能出現register 防止儲存型別不唯一引起的衝突。

同時,register 變數必須是能被cpu暫存器所接受的型別。這就意味著,register 必須是乙個單個的值,且長度應小於等於整型長度。

例題九:

小zc現在有三個字串,他想知道前兩個字串能不能生成第三個字串,生成規則如下:第乙個串的每個字元都可以往第二個串的任意位置插入(包括首尾位置),但必須保證**於第乙個串中的字元在生成後的串中的相對順序不可以改變。

舉個例子:

string a: cu

string b: mt

那麼,a和b可以生成的所有字串是,而不能生成ucmt,因為uc**於a串,但改變了a中字元原來的相對順序。

但小zc覺得這個問題太簡單,於是他想讓你計算對於給定的a, b, c串,共有多少種方案能夠生成c串。方便起見,你只需要輸出最後答案對1000000007取模的值。

這題題意不難理解,老師說作業不難,可......總算做出來了

#include#include#includeusing namespace std;

typedef long long ll;

const int mod=1e9+7;//求模

const int n=3000;

int l1,l2,l3,dp[n][n] ;//dp陣列表示已經匹配了s1的前i個字元,s2的前j個

char s1[n],s2[n],s3[n*2];

void go()

for(i=1;i<=l2;i++)

for(i=1;i<=l1;i++)

if(s2[i]==s3[i+1])}}

cout<>t;

while(t--)

return 0;

}

例題十:

線段覆蓋  

數軸上有n條線段,線段的兩端都是整數座標,座標範圍在0~1000000,每條線段有乙個價值,請從n條線段中挑出若干條線段,使得這些線段兩兩不覆蓋(端點可以重合)且線段價值之和最大。n<=1000

輸入描述 input description第一行乙個整數n,表示有多少條線段。

接下來n行每行三個整數, ai bi ci,分別代表第i條線段的左端點ai,右端點bi(保證左端點《右端點)和價值ci。

輸出描述 output description輸出能夠獲得的最大價值

樣例輸入 sample input3

1 2 1

2 3 2

1 3 4

樣例輸出 sample output4

#include#include#include#includeusing namespace std;

int res;

int dp[1010];

struct ff

a[1010];

bool cmp(ff x,ff y)

sort(a+1,a+t+1,cmp);

memset(dp,0,sizeof(dp));

res=0;

for(i=2;i<=t;i++)

dp[i]=maxm+a[i].c;

res=max(res,dp[i]);}}

cout《例題十一:

尼克的任務

尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。

尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個來做,而其餘的則由他的同事完成,反之如果只有乙個任務,則該任務必需由尼克去完成,假如某些任務開始時刻尼克正在工作,則這些任務也由尼克的同事完成。如果某任務於第p分鐘開始,持續時間為t分鐘,則該任務將在第p+t-1分鐘結束。

寫乙個程式計算尼克應該如何選取任務,才能獲得最大的空暇時間。

輸入格式

輸入資料第一行含兩個用空格隔開的整數n和k(1≤n≤10000,1≤k≤10000),n表示尼克的工作時間,單位為分鐘,k表示任務總數。 

接下來共有k行,每一行有兩個用空格隔開的整數p和t,表示該任務從第p分鐘開始,持續時間為t分鐘,其中1≤p≤n,1≤p+t-1≤n。 

輸出格式

輸出檔案僅一行,包含乙個整數,表示尼克可能獲得的最大空暇時間。 

輸入 15 6

1 21 6

4 11

8 58 1

11 5

輸出  

4今天做的題目可能題目理解上來說都不是很難,比較好理解,但是我還是覺得思維量很大,可能如果老師不講我自己也想不明白,說實話吧,講了我也沒明白,

所以現在是在看回放一題一題整理呢

用dp[i] 表示i~n 最大空閒時間

dp[i] 等於dp[i+任務時長]

欲知dp[i+任務時長] 的值->則需要倒序遞推從n~1 

假設i時刻為空閒狀態,則有兩種情況

1. 當前時間點無任務開始

dp[i] = dp[i+1] +1;

2. 當前時間點有任務開始

dp[i]=max(dp[i+任務時長],dp[i])

#includeusing namespace std;

int n,k;

struct node

n[10001];

int dp[10005];

bool cmp(node x,node y)

mapmp;

int main()

int now=0;

sort(n,n+n,cmp);

for(i=k;i>=1;i--)

,她想知道其中有多少個子序列(1 ≤ m ≤ n, 1 ≤ p1 < p2 ,..., < pm ≤ n),滿足對於所有的i,j(1 ≤ i < j ≤ m), apipj < apjpi成立。

輸入描述:

第一行乙個整數n (1≤n≤100)表示序列長度。

接下來一行n個整數(1≤ai≤100)表示序列。

輸出描述:

輸出一行表示滿足條件的子串行的數目。因為答案可能很大,請輸出答案mod 1,000,000,007。

設dp[i]表示以第i個數結尾的滿足條件的子串行的個數,然後全加在一起就是答案。

例如輸入

21 2輸出3

滿足條件的子串行為,,。

#includeusing namespace std;

#define mod 1000000007

int a[105],flag[105][105];

long long dp[105],ans;

int main()

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

ans=(ans+dp[i])%mod;

cout《例題十三:

#includeusing namespace std;

int f[1005][1005],n,a[1005],ans;

int main()

{    cin>>n;

for(register int i=1;i<=n;i++)//暫存器型別,提高速度

cin>>a[i];

f[0][0]=0;

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

for(register int j=0;j<=i;j++)

{f[i][j]=f[i-1][j-1];

if(a[i]==i-j&&f[i][j]三:感想

與他們相比,我們面對一點一點學習的壓力又算得了什麼?幾道題不會又算得了什麼?

總結第六周

這一周從時間意義上也算是國慶假期後的第一周,學弟學妹也正式踏入了校園,我們工作室的招新工作也相繼展開,截止到此時此刻,還有資料專業和物聯專業的學弟學妹沒有來到我們工作室進行參觀,這兩天也挺累的,但也從中收穫到了許多東西,比如 在人多的時候講話可以更淡定一點,沒有那麼緊張 跟學弟學妹交流用怎樣的方式更...

第六周總結

這週呢,雖然完成了地鐵的測試,面勉強強過關了,但是我總覺得如果我不完善一下的話,會對不起自己的苦勞,所以我就繼續完善了一下。完成了地鐵的展示,其實心裡還是有一絲小激動的。老師說我們的注釋寫的不錯,這個,嗯,值得發揚光大。本週主要是繼續完善地鐵售票系統,因為以前寫的bug還是很多的,還有演算法的完善,...

第六周總結

1第六周實驗的內容 1 根據下面的要求實現圓類circle。1.圓類circle的成員變數 radius表示圓的半徑。2.圓類circle的方法成員 circle 構造方法,將半徑置0 circle double r 構造方法,建立circle物件時將半徑初始化為r double getradius...