bzoj5340/luogu p4564 [ctsc2018] 假面
概率與期望、動態規劃
code:
1 #include2 #include3 #include4#define clr(x) memset(x,0,sizeof(x))
5#define mod 998244353
6#define mn 203
7using
namespace
std;
8 inline int
in()
14int
f[mn][mn],g[mn],p[mn],res[mn],pos[mn],m[mn],inv[mn];
15int
n,q,k,op,ps,u,v,ans;
16 inline int qpow(int x,int
k)return
res;22}
23 inline void dp(int x,int
v)28 inline void
query()
42 }else
46 res[i]=(1ll*res[i]*(mod+1-f[pos[i]][0]))%mod;47}
48for (int i=1;i<=k;++i) printf("
%d ",res[i]);puts(""
);49}50
intmain()
51q=in
();57
for (int i=1;i<=q;++i)else66}
67for (int i=1;i<=n;++i)return0;
72 }
bzoj 5343/luogu p4602 [ctsc2018]混合果汁
對於每種果汁按美味度從大到小排序,以**為下標,以每種果汁為版本建立可持久化線段樹,維護果汁的體積和及**和。
對於每種需求,二分查詢果汁對應的版本,在該版本的線段樹上二分,判斷是否滿足對果汁體積要求的情況下滿足對**的要求。
code:
1 #include2 #include3 #include4#define ll long long
5#define mid ((l+r)>>1)
6#define mm 2300005
7#define mn 100005
8using
namespace
std;
9 inline ll in
()15
struct
sta[mn];
19int
l[mm],r[mm],rt[mn];
20ll sum[mm],cst[mm],g,k;
21int
n,m,mx,cnt,res;
22 inline bool cmp(st x,st y)
23 inline void build(int &x,int l,int
r)27 inline void update(int &x,int l,int r,int
p,ll v)
33 inline ll query(int x,int l,int
r,ll v)
38int
main()
39sort(a+1,a+n+1,cmp);build(rt[0],1
,mx);
45for (int i=1;i<=n;++i) rt[i]=rt[i-1],update(rt[i],1
,mx,a[i].p,a[i].l);
46for (int i=1;i<=m;++i)printf("
%d\n
",(res<0?res:a[res].d));
53 }return0;
54 }
bzoj 1076/luogu p2473 [scoi2008]獎勵關
期望dp.令f[i][s]表示f在前i-1輪已處理狀態為s,後n-i+1輪到達此狀態的期望。
列舉下一輪選擇的寶物j,若j可選,則分為選擇或不選擇,選取較大值,否則則只能不選擇。
轉移方程見程式。答案即為f[1][0]的值。
code:
1 #include2 #include3 #include4#define mk 103
5#define mn 20
6#define mm (1<<15)
7using
namespace
std;
8 inline int
in()
14double
f[mk][mm];
15int
p[mn],v[mn],k,n,x;
16int
main()
1723
for (int i=k;i;--i)
24for (int s=0;s<(1
%.6lf
",f[1][0]);return0;
30 }
bzoj 3668/luogup2114 [noi2014]起床困難綜合症
分別求出每一位是0/1的情況經過所有運算後的結果,這可以用二進位制位全0/全1的數分別模擬。
在取值範圍內從高位向低位貪心選取,若兩種操作結果相同,則選取二進位制位較小的數(即0)。否則選取使該位結果為1的數。
code:
1 #include2 #include3 #include4using
namespace
std;
5 inline int
in()
11int
n,m,x,mx,bt,b0,b1,res;
12char
ch;13
intmain()
1423
for (;mx;mx>>=1,++bt);
24for (int i=bt-1;i>=0;--i)printf("
%d",res);return0;
28 }
bzoj1086/luogu p2325 [scoi2005]王室聯邦
code:
1 #include2 #include3 #include4#define mn 1005
5using
namespace
std;
6 inline int
in()
12struct
edgee[mn<<1
];15
inth[mn],bt[mn],res[mn],cpt[mn],st[mn];
16int n,b,x,y,ct,cnt,top=0;17
bool
vis[mn];
18 inline void ins(int x,int
y)21 inline void dfs(int
u)30 }st[++top]=u;31}
32int
main()
3335
for (int i=1;ii) bt[1]=0;dfs(1
);38
while (top) res[st[top]]=ct,--top;printf("
%d\n
",ct);
39for (int i=1;i<=n;++i) printf("
%d ",res[i]);puts(""
);40
for (int i=1;i<=ct;++i) printf("
%d "
,cpt[i]);
41return0;
42 }
bzoj 1053/luogu p1463 [haoi2007]反素數
將乙個數n質因數分解,使n=∏pic
i(pi
i+1,ci≠0),則ci≥ci+1.
可以發現前12個質數之積大於2×109,故對前12個質數打表,dfs+剪枝求出不超過n的x,使得g(x)在1~n內最大即可。
code:
1 #include2 #include3 #include4#define ll long long
5#define mx 12
6using
namespace
std;
7 inline ll in
()13
const
int pri[mx+1]=;
14ll n,mx,mp;
15 inline void dfs(int step,ll sum,int num,int
fct)ll prd=1;19
for (int i=0;i<=fct;++i)23}
24int
main()
25
KMP做題記錄
題目太長不貼了 這道題很巧妙,給定乙個字串s,求最少在首尾新增幾個字元後,s變為乙個迴圈了n次的字串 n 1 假設我們有乙個迴圈串s abcabcabc 我們根據kmp求一次next陣列,就可以通過next strlen s 得到乙個迴圈節的位置從而求出迴圈節的長度,顯然,迴圈節能被s整除。如果s ...
8 25 9 25 做題記錄
2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...
8 25 9 25 做題記錄
2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...