今天來了一場所謂基礎檢驗的突擊測試,雖然這次有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 為什麼應當避免在變數名的開始和結尾使用雙下劃線?合法識別...