191021基礎練習

2021-09-28 20:39:18 字數 4317 閱讀 6055

今天來了一場所謂基礎檢驗的突擊測試,雖然這次有2道題之前都做過,但是因為掌握不熟練,導致依舊丟分嚴重。

傳送門

#include

#define ll long long

#define db double

#define re register

#define cs const

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return f*x;

}struct node

a[10005];

bool

cmp(node x,node y)

int l,r,b[10]

,c[10

],top;

intmain()

a[++top]

.sum=x;

a[top]

.num=i;

}sort

(a+1

,a+1

+top,cmp)

;for

(int i=

1;i<=top;i++

)printf

("%d\n"

,a[i]

.num)

;}

傳送門

回溯法,用二維陣列或鄰接表儲存關係均可,用乙個計數器記錄仇敵,但必須加上最優化剪枝,不然會爆,這道題其實是special judge,但教練沒加上去,而我的方法是記錄最後一次最大的可能,不僅有可能超時,而且前面還有可能wa,所以下次要想到更好的處理方法。

**:

#include

#define ll long long

#define db double

#define re register

#define cs const

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return f*x;

}int n,m,u,v,ans,first[

105]

,net[2*

3005

],to[2*

3005

],tot,b[

105]

,d[105

],cnt[

105]

,maxn;

void

dfs(

int now)

return;}

if(!cnt[now]

) b[now]=0

;dfs

(now+1)

;}void

add(

int x,

int y)

intmain()

dfs(1)

;printf

("%d\n"

,ans)

;for

(int i=

1;i<=n;i++

)printf

("%d "

,d[i]);

return0;

}

傳送門

一眼暴力,拿了60pts,正解是二分答案,兩次二分,首先二分出第k個數,再二分判斷它是否為第k個;

**

#include

#define ll long long

#define db double

#define re register

#define cs const

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return f*x;

}int a[

10005

],b[

10005];

int n,m,k,l,r;

intcnt

(int x)

ans+

=l1;

}return ans;

}int

main()

printf

("%d"

,l);

return0;

}

傳送門

我們使用ac自動實現。注意要記錄單詞的出現位置和結束位置,但不能在最後查詢,因為單詞出現的次數是從它出現的位置開始算起,即所有單詞合成的這篇文章中,處於當前單詞之前可能還合成了當前單詞,但不計入最後結果。

巨佬wyh說還可以用fail反向建邊,用fail樹來做,因為本人菜雞,就不再詳述

**:

#include

#define ll long long

#define db double

#define re register

#define cs const

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return f*x;

}string s;

vector<

int>loc,order;

int n,tri[

1000005][

26],fail[

1000005

],tot,cnt[

1000005];

void

build

(string s)

loc.

push_back

(p);

return;}

void

failure()

fail[x]

=tri[fail[u]

][i]

; q.

push

(x);}}

}int

main()

failure()

;for

(int i=order.

size()

-1;i>=

0;i--

)for

(int i=

0;i)}

fail樹(來自wyh巨佬)

#include

using

namespace std;

int n;

struct nodet[

2000003];

int belong[

2000003];

int cnt;

int first[

2000003

],nxt[

2000003

],to[

2000003

],tot;

void

add(

int a,

int b)

char ch[

2333333];

int l[

1000003

],r[

1000003

],key[

2000003];

intinsert

(char s,

int len)

rt=t[rt]

.ch[s[i]

-'a'];

t[rt]

.key++;}

return rt;

}queue<

int> q;

void

getfail()

while

(!q.

empty()

)else}}

}void

query

(char s,

int st,

int ed)

}void

dfs(

int u)

}signed

main()

getfail()

;//for(int i=1;i<=cnt;i++)cout(int i=

1;i<=cnt;i++

)add

(t[i]

.fail,i)

;dfs(0

);for(

int i=

1;i<=n;i++

)return0;

}

練習題 基礎練習

第一題 需求 1 計算 5 個月的生活大概開銷 spending 比如 rent 房租 800.00 mealcost 吃飯 900.00 clothingcosts 買衣服 300.00 othercosts 其他費用 300.00 public class dome1 第二題 需求 2 計算 1...

19 10 21 Python 正規表示式 爬蟲

正規表示式 由一些特定字元及其組合所組成的字串表示式,用於對目標字串進行過濾。正規表示式的常見基本符號 基本符號 含 釋d數字 d為非數字 w單詞字元 大小寫字母或數字 w為非單詞字元 單個字元 代表除換行符以外的任意單個字元。例如 a.c 可以代表 abc acc 但不能代表 abbc 多個字元 ...

Python基礎練習

1.python 為什麼不需要變數名和變數型別宣告?python語言中物件的型別和記憶體都是執行時確定的。在建立也就是賦值時,直譯器會根據語法和右側的運算元來決定新物件的型別。2.python 為什麼不需要宣告函式型別?待補充3.python 為什麼應當避免在變數名的開始和結尾使用雙下劃線?合法識別...