马上NOIP2018啦,突然发现自己比去年还菜,写水题时出现了很多错误,记录一下。
2018.7.8
luoguP2016 战略游戏
节点从0编号。
所以以i为根时不能设i的根为0,应设为-1
for(int i=0;i<n;i++) dp(i,-1),ans=min(ans,min(f[i][0],f[i][1]));
2018.7.9
luoguP1171 售货员的难题
开始时开数组过大导致MLE,改小后90分,TLE一点,被卡常了QWQ
2018.7.10
luoguP1154 奶牛分厩
本来想切一切水题的,结果还WA了
不过还想是前面想复杂了QwQ
2018.7.16
luoguP1922 女仆咖啡厅桌游吧
树形DP,开始状态转移方程推错了
2018.7.21
luoguP2422 良好的感觉
没开longlong见祖宗
luoguP2627 修剪草坪
前面一直没有想好单调队列的入队和出队的条件,还是思维太差。
luoguP3146 [USACO16OPEN]248
状态转移的顺序+边界条件没有想清楚
2018.7.22
NOIP2013 车站分级
一次AC,然而调试了很久。读题+思路的问题:一辆车没经过的车站在起始站与终点站之间
NOIP2009 最优贸易
一次AC,然而还是调试了很久,主要是反向建边时和正向的用的一个head数组。
NOIP2013 转圈游戏
把快速幂写成这样,然后还过样例了??!
inline ll qpow(int a,int b) { ll ans=1,mul=a; while(b) { if(b&1) ans*=mul,ans%=n; mul*mul,mul%=n; b>>=1; } return ans%n; }
2018.7.23
NOIP2013 火柴排队
忘取模了都有80分qwq
NOIP2014 寻找道路
BFS+SPFA
坑题:我们一开始反向bfs,把终点能走的点记录到一个vis数组里;
然后遍历一遍不和终点连接的点,把vis数组置为false。
把vis数组置为false之前一定要备份一份vis数组
如果一个点一开始被标记,它通过一个不和终点连接的点删除了,那么有可能过一会被当作一开始就没有标记的点!
CF19A World Football Cup
模拟。本身就不擅长这种题,错误如下:
1.题意有问题
2.对于字符串操作不熟
2018.7.24
NOIP2010 关押罪犯
数组开小
CF1009B Minimum Ternary String
多次调用strlen函数导致TLE,拿一个变量记录lena就行了
[USACO16Jan]建门 gates
有一些细节没有讨论好
2018.7.25
[JLOI2014]松鼠的新家
线段树空间开4倍,add数组开4倍
[NOI2015]软件包管理器
update的时候写下了这样的代码:
inline void update(int o,int x,int y,int z) { int l=tree[o].l,r=tree[o].r; if(x<=l&&y>=r) { add[o]=z; tree[o].sum=(tree[o].r-tree[o].l+1)*add[o]; return; } else { if(add[o]!=-1) pushdown(add[o]); if(x>r||y<l) return; update(lc,x,y,z); update(rc,x,y,z); tree[o].sum=tree[lc].sum+tree[rc].sum; } }
luoguP3384 【模板】树链剖分
dfs2的时候写下了dfs2(root,1)的神奇代码。
正确的是dfs2(root,root)
P3387 【模板】缩点
数组开小
2018.7.26
luoguP1529 回家
SPFA写错,少写了inq[u]=0
inline void spfa() { for(int i=1;i<=200;i++) dis[i]=1<<30; queue<int>q; dis['Z']=0; q.push('Z'); inq['Z']=1; while(q.size()) { int u=q.front(); q.pop(); inq[u]=0; for(int i=head[u];i;i=g[i].next) { int v=g[i].to; if(dis[v]>dis[u]+g[i].val) { dis[v]=dis[u]+g[i].val; if(!inq[v]) { q.push(v); inq[v]=1; } } } } }
2019 初三升高一 暑假
[NOI2004] 郁闷的出纳员
不会输入字符串了
记得刚开始加入一个INF节点防止树空了
暴力修改
[HNOI2010]弹飞绵羊
不要把变量搞混