10月1日水题记录

 

学校神奇地给了7天假,又可以刷一阵子题了,happy

第一天嘛,就随便做了几道水题了

 

昂贵的聘礼:枚举等级最小的点再最短路就可以了

 

钉子与小球:题目本身是超级水的。但有个细节需注意,给两个分数通分相加时,要先约掉一点,不然就会爆int64

     假设a/b+c/d=e/f,令k=gcd(b,d),那么e=a*d div k+c*b div k ,f=b div k*d,再对e、f约分这样才不会215

 

pku1552:超级水题

 

pku1742:可以看成物品数量有限制的完全背包吧,处理每个物品的时候,转移时带个辅助数组g[j]表示拼出j这个价值用了几个该物品。可是本题十分恶心地需要卡常数才不会tle,for j=1 to m会超,改成for j=c[i] to m才行

 

pku2983-差分约束系统(bellman-ford比spfa还快。。)对于P A B X,连(A,B,-X)和(B,A,X),对于V A B,连(X,Y,-1),再判有没有负权环就可以了,spfa的话特别要注意,可能有V 1 1这样子的信息,所以取出队首时,要先把队首那个点的进队标记去掉才判得出这种情况

 

pku2186-求强连通分量缩点,看最低强连通分量(就是出度为0的),如果有多个,那就输0,如果只有1个,就输出这个分量包含的点个数

感觉我缩点那里好像编丑了点。。

 

pku1112(分类练习题dp之分组):题解见http://www.cppblog.com/linyangfei/archive/2008/08/08/58295.htm

    太巧妙了,就是自己想不到。一点总结:这题无非就是想快速得出两个点能不能被分到同一组中,然后就能利用反图的性质设计dp算法来求解了。构造解有点恶心,我卡了好久。。

这题贴个代码吧,虽然慢了点:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值