其他分享
首页 > 其他分享> > 端午节做题记录

端午节做题记录

作者:互联网

前言

艹原来本来十六点就写好了,突然洛谷的博客功能不能全选了,一Ctrl+A就tm内容全没,调了半天,还得从写啊啊啊。

然后还看到一个退役的高二学长回关我了,,,55555好感动

目录

//--------------------------------------------------------------------------------------------------------------------------

P2417 课程

二分图最大匹配

但我想了想,可不可以直接暴力算出sum之后跟p比大小呢?

如果不卡常不吸氧好像都可以过,

然后。。。。

真过了!

AC record

//--------------------------------------------------------------------------------------------------------------------------

P3722 [AH2017/HNOI2017] 影魔

通过线段树求解出这一个东西。对于i,找到右边大于他的第一个数,如果没有,自然是最后一个数,但是这样不好,于是我们加一个第n+1个数为+∞。然后设ri为右边大于他的第一个数,那么[i,i+1]、[i,i+2]、......[i,ri]都符合条件,于是在线段树中对于[i+1,ri]+=p2。对于全部询问排序,给以i为左端点的区间加上贡献,查询[i+1,R]的和。反过来再搞一遍,注意询问区间也要反过来。

AC record

//--------------------------------------------------------------------------------------------------------------------------

P4568 [JLOI2011] 飞行路线

分层图最短路板子

跑个Dijkstra就行

AC Record

//--------------------------------------------------------------------------------------------------------------------------

P4495 [HAOI2018] 奇怪的背包

重点是题目转化:

题目转化成了求有多少个子集满足\(gcd(v_1,v_2..v_n,P)\)

核心转移方程

dp[k]=(dp[k]+(f[a[i]]-1)*fdp[j])%mod;

AC record

//--------------------------------------------------------------------------------------------------------------------------

P4728 [HNOI2009] 双递增序列

核心转移方程

dp[i][j]=min(dp[i][j],a[i-1]);

AC record

//--------------------------------------------------------------------------------------------------------------------------

P4719 【模板】"动态 DP"&动态树分治

这道题就是没有上司的舞会动态。

首先DP的状态转移方程一般很好推。

f[x][0]=a[0][0],f[x][1]=a[0][1];

但维护起来特别麻烦,很容易超时

AC record

//--------------------------------------------------------------------------------------------------------------------------

P4751 【模板】"动态DP"&动态树分治(加强版)

在P4719的基础上,不使用树剖套线段树来维护矩阵,而是改为使用\(LCT\)来维护矩阵

AC record

//--------------------------------------------------------------------------------------------------------------------------

P4922 [MtOI2018] 崩坏3?非酋之战!

贪心 + Dp + 滚动数组

cnt = min(r,i+j+max((int)0,(l-f[i&1][j]+dp-1)/dp));

AC record

//--------------------------------------------------------------------------------------------------------------------------

P3224 [HNOI2012] 永无乡

启发式合并就是在合并两个集合时,把size小集合中的所有元素一个一个加入到size大的集合。这个操作是\(nlogn\)的。

这个题目是并查集和Treap的综合题。

用并查集来维护哪些岛屿已经联通了。

Treap用来求第\(K\)大的岛。

AC record

//--------------------------------------------------------------------------------------------------------------------------

P8376 [APIO2022] 排列

这种新式儿的题目(可能是我孤陋寡闻)我真是第一次见,就因为一个int 64 CE了好几次。。。。

核心代码

a.push_back(deque_news++);
a.insert(a.begin()+2,deque_news++)

AC record

//--------------------------------------------------------------------------------------------------------------------------

P8378 [PFOI Round1] Two Sequences

结论题:\(((n-1)*n/2*(n-2)*(n-2))\)

注意开long long

AC record

//--------------------------------------------------------------------------------------------------------------------------

P8379 [PFOI Round1] Two Operations

赛时写的数据点4的部分分,就吃饭去了。后来现在把100的写了一下,但是刚开始自己在在线IDE跑了一个自己hack的数据,270多MB,后来调了很久。

核心代码

printf("%lld",q1.top()*inv);

当然,还需要快速幂。

AC record

//--------------------------------------------------------------------------------------------------------------------------

P8366 [LNOI2022] 题

核心状态转移方程

dp(f[i+1&1][1][2][3][21-1][13][32],21*x);

AC record

//--------------------------------------------------------------------------------------------------------------------------

P6563 [SBCOI2020] 一直在你身旁

一道非常烦的细节dp题

然后也是因为长度越长,花费越大,所以当最大值是 dp[l][k]时,肯定是 k 越小,dp[l][k] 越小, a[k] 越小,所以 dp[l][k] + a[k] 越小,所以此时的总的最小值直接取我们找到的那个中间点的位置就好了。

而当最大值是dp[k+1][r]时,我们直接对这一部分维护一个单调队列就好了。

核心转移方程

dp[l][r]=min(dp[l][r],dp[q[x]+1][r]+a[qx]]);

AC record

//--------------------------------------------------------------------------------------------------------------------------

P5851 [USACO19DEC] Greedy Pie Eaters P

满足更新一个点不用没有更新的点

因为都是长度短的更新长度长的,按照长度枚举

AC record

//--------------------------------------------------------------------------------------------------------------------------

P2583 地铁间谍

核心转移方程

f[j][i]=min(f[j][i],f[j+1][i-dp[j]]);

AC record

//--------------------------------------------------------------------------------------------------------------------------

AT5761 Odd Sum Rectangles

刚开始写的dp写挂了后改的深搜,结果过不了样例,但还是AC了,,,,,

但它不是spj吧。。。

AC record

//--------------------------------------------------------------------------------------------------------------------------

LibreOJ #2461. 「2018 集训队互测 Day 1」完美的队列

双二分题目

在循环结构中同时存储两份l,r即可。

//--------------------------------------------------------------------------------------------------------------------------

UOJ #93. 【集训队互测2015】上帝之手

线段树板子

只需要加个前缀和优化

for(f[n]=0,i=n-1;i;i--)
    f[i]+=f[i+1];

//--------------------------------------------------------------------------------------------------------------------------

P2183 [国家集训队]礼物

先用组合数进行化简

然后就可以直接扩展卢卡斯了!

AC record

//--------------------------------------------------------------------------------------------------------------------------

LibreOJ #3258. 「ROIR 2020 Day 1」超速

这个题比完美的队列那个题还要水。。。。

一层二分就可以了

但是很麻烦,要开三个数组进行维护

t+=l[i]/1.0/(v[i]+a[m]);

//--------------------------------------------------------------------------------------------------------------------------

P2350 [HAOI2012] 外星人

这个题非常考验数学基础

幸好最近在学导数的应用这一段,老师还带我们刷了好多导数题,快一百了吧。所以很快的就算出来了。

AC Record

//--------------------------------------------------------------------------------------------------------------------------

AT5695 [AGC041D] Problem Scores

常见背包问题。

多了几个限制而已

f[j-a[i]]=(f[j-a[i]]+f[j]);

AC record

//--------------------------------------------------------------------------------------------------------------------------

LibreOJ #6031 「雅礼集训 2017 Day1」字符串

后缀自动机+dfs

//--------------------------------------------------------------------------------------------------------------------------

标签:AC,LibreOJ,记录,端午节,record,-------------------------------------------------------
来源: https://www.cnblogs.com/spaceswalker/p/16412383.html