【年后的胡策】训练2.22(dp+分块+数学相关)
2018-02-23 18:37
447 查看
T1
BZOJ3688 折线统计题解:
考试的时候想着乱搞结果也没搞出什么东西,写个暴力走人。T2
题解:
这个40pts送的啊,然后自己写了线段树和分块两种还对拍实际上是SDOI2014省队集训题目?
让苍天知道我不认输
T3
题解:
这题目的60pts是送的了,f[i]表示前i头牛的最小时间,考场上自己脑抽开了二维数组还M了?!遇到这种不同个数的问题要多考虑考虑维护一个pre
优化?
第二维不用n个全枚举,枚举到种类数超过sqrt(n)就不枚举了
那样肯定不会更优,因为每个都单独一组才需要n的时间
#include <cstdio> #include <cstring> #include <cmath> #define LL long long using namespace std; int co[50010],n,m,a[50010],pre[50010],s[50010]; LL f[50010]; int main() { freopen("order.in","r",stdin); freopen("order.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); pre[i]=co[a[i]]; co[a[i]]=i; } memset(f,0x7f,sizeof(f)); f[0]=0;int o=sqrt(n); for(int i=1;i<=n;i++) { s[pre[i]]--; s[i]++; LL now=0; for(int j=i;j>=1;j--) { now+=s[j]; if (now>=o) break; if(now*now+f[j-1]<f[i]) f[i]=now*now+f[j-1]; } } printf("%lld",f ); }
让苍天知道我不认输
然而事实上这道题的时限只有1s,但按照ta说的满分算法只能拿到80pts
如何进一步优化呢?这里仅提供思路,代码真的不想写了
不难发现种类数是递增的,我们就可以直接找到这些种类增加的断点,从这些断点转移即可
相关文章推荐
- 【瞌睡的胡策】训练2.23(数学相关+矩阵快速幂+dp)
- [NOI1999][openjudge]棋盘分割(数学相关+dp)
- 【loli的胡策】训练1.14(组合数学+概率期望+乱搞)
- [BZOJ1025][SCOI2009]游戏(置换+背包dp+数学相关)
- [UOJ#206][Apio2016]Gap(分块+数学相关)
- <队内胡策>2017.10.18 (DP+tarjan、SPFA+字符串+脑洞、数学)
- [BZOJbegin][NOIP十连测第九场]小P的单调数列(数学相关+dp+bit)
- 【ISA的胡策】联校11.7(数学相关)
- [SD2014集训]查询(分块+数学相关)
- 【平安夜的胡策】训练12.24(复数预处理+矩阵快速幂+dp)
- 【loli的胡策】NOIP训练8.12(二分?+dp?)
- 【学姐的胡策】训练8.18(KMP+dp)
- [BZOJ1089][SCOI2003]严格n元树(dp+数学相关+高精度)
- 【loli的胡策】NOIP训练8.10(数论+树形dp+贪心)
- [BZOJbegin][NOIP十连测第五场]Walk(数学相关+树形dp)
- 10.12 新一波高能胡策题 贪心+状压DP+分块+魔性DP
- 【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP
- 周六日常训练,背包dp,树形dp,简单dp以及很多数学?
- [SD2014集训]查询(分块+数学相关)
- [POJ3088]Push Botton Lock(dp||数学相关)