2010.9.oj记录(已完结)

2010年9月持续更新

 

各种水。。。

 

我太弱了。。做题目实在太慢了。。。

跟神牛差距太大。、。。

【poi2008 maf】(wa*n==>ac)

source:bzoj1124

summarize:这题我想了很久很久。。现在想想其实不算难。。思路大概是对了。最小的细节上出现了问题。。去掉环后这个就是棵内向树。一个连通图中有且仅有一个圈。。并且圈是在最底端。。最大的话就是让入度为0的点不死。其余的都死。。这个比较好处理。。。。要最小。则是每次让入度为0的并且没死的点先打。。。有一点一开始没想清楚。就是打到最后剩下的环、?环中有人死有人还没有死。。这个不可以随便选择。。到最后仅剩下环的情况如果环上每个人都可以活着。那么最少死则是环中节点个数+1的一半。。如果有人死。先从死的人拓展出其他点的生死情况。。。也就是说,,每次dfs的时候。如果一个点已经知道死了。。可以先拓展。。

这题的代码量很低

 

 

【zjoi2008 knight】(re=>ac)

source:bzoj1040

summarize:这题一开始由于没开编译开关和int64re了一下。。。这题与上题的结构类似。但是思路简单。。这题我们将。。每个环点可拓展出一颗内向树、treedp求出选择与不选择这个点的最优值。。然后对于每个环dp一下。。。

 

【usaco2010open 驱逐猪猡】(ac)

source:bzoj1778

summarize:我以前从来没有做过关于这类概率题。。觉得非常这题牛逼。。- -由于oj上没有spj。。要ac必须和他答案一模一样 - -。。

看官方的题解还不是很懂- -。。(我英语真差)。。这题是根据关系建立n个n元方程。然后高斯消元做。。非常牛非常牛。。概率是种神奇的东西 

 

【Fibonacci subsequence】(wa*20=>ac)

source:bzoj1987

summarize:我被这题完完整整虐了一天。。这题在zju上有原版题目 我一开始根据单调性搞mle。。。发觉我怎么开也开不行。然后看别人用c的开short。。我就开了shortint。。我太傻×了。。。这样根本过不了。。pascal的short所到达的数非常非常小。。。。全部是0就会wa。。。但是我还是发现了我程序很多问题。。。。我带着shortint一直交一直交。。。最后发现- -无法shortint。。不得不integer。。。zju上内存限制实在太小了太小了。。我很无奈的mle。。。这题我们不能每次找最近的。。因为这样不一定会满足位置字典序最小

 

【usaco2010open覆盖牛棚】(wa=>ac)

source:bzoj1780

summarize:仔细分析题目- -。这题我们将永远不可能用到的删掉。。然后排完序。。每个找到它可以到达的最最最远的。一开始忘记输出而wa了。。。

 

【zjoi2008 泡泡堂】(wa*3=>ac)

source:bzoj1034

summarize:这题显得我很弱。。。。我一开始思路错了而wa了。。中午回去想了很久,。。想到一种贪心。。可是无论如何都得n平方。。看了下神牛的题解。。不懂说什么。。继续想很久。。。。我们只要维护一个前缀和就可以了。。因为已经排好序了

【usaco2010 open 奶牛政坛】(mle=>ac)

source:bzoj1776

summarize:这题还是显得我很弱。。这题我没有仔细考虑。。。。。这个可以轻松证明必然有一头最深的奶牛在最长道路最中。。rmq水之。

【zjoi2007 仓库建设】(wa*4=>ac)

source:bzoj1096

summarize:这题是斜率优化的dp。。。有点忘记何为斜率优化- -。。wa了一段时间才ac的

 

【apio2007 zoo】(wa*3=>Ac)

source:bzoj1151

summarize:这题考虑清楚后便ac了。。。

 

【apio 2007 mobiles】(wa=ac)

source:bzoj1149

summarize:简单。。但是一开始由于觉得他太简单了。。少写了一句话- -。。囧。。过了一半以上。。。

 

 

 

【[Baltic2002]Bicriterial routing 双调路径】(wa*2==>ac)

source:bzoj 137

summarize:这题我一开始直接用dijstra堆优化。。(因为一开始有相同的情况没有加以考虑,所以wa了两次)。然后我发现我代码的速度很慢- -.所以又想了个优化,加了以后,速度变到第一位

首先用f[i,j]表示到第i点花费j的最少时间。。由于dijstra是每次提取最小的。。

堆顶元素必然不下降,假如有一次堆顶是f[i,j1]。。提取扩展后。。 之后有一次堆顶是f[i,j2]

要 j2<j1的时候才可能成为双调路径。。所以我们对于每次提取i后  用mincost[i]记录已经扩展过的i节点的最小花费。。

【[baltic 2001]postman】(ac)

source:bzoj1379

summarize:。。一直算不出样例结果直接去看原题。oj上的翻译太那啥了。不但漏翻译重要条件 而且还还翻译错。在bzoj上只让你输出边- -。。。欧拉回路。。。直接读入m输出m。。- -巨囧

 

【[CQOI2009]叶子的染色】(re=ac)

source:bzoj1304

summarize:这题就是 tree  dp。。一开始数组开小了。。囧。。我们可以发现无论选择任意除了叶子的节点做根都不会影响答案。

比如当前选择一个节点x为根有最优解。。y为它某一个的儿子节点。。x和y不会同色。。同色必然不为最优解。。如果不同色y转化为x的儿子。。必然不会影响最优解

 

【[CQOI2009]dance跳舞】(ac)

source:bzoj1305

summarize:好久没做网络流的题目。这题我是直接二分答案,然后将每个男孩拆成两个点 i,i'。。每个女孩也拆成两点。。j,j'

i向i'连接容量k的边。。j'向j连接容量为k的边。二分舞曲数m。。。将源点与i连容量为m的边。。j与汇点连容量为m的边。。如果i喜欢j,那么i向j连接容量为1的边,否则i'向j'连接容量为1的边。。结果这样时间花了400+ms,几乎垫底。。

看了下网络上的方法。。也是网络流构图,算出每个人最大能够跳几次舞,然后取一个最小值。。。省去二分。。

很早以前做过这道题目,当时也是这么做的,竟然ac了。。求解为何这样是对的。。。

 

【Baltic2007]序列问题Sequence】(ac)

source:bzoj1345

summarize:关于这题,我一开始的思路是找左边距他最近的比他大的,找右边距他最近的不小于(注意不是之前的大于,是不小于)他的。。这个显然从这两个中挑选一个是最优的。。然后我就这样朴素的wa了,后来发现原来要开到int64。。。然后就用int64。ac了。。竟然朴素神奇的ac了。。事实证明他是随机的数据。。当然是可以简单构造让我的朴素超时的数据。。所以我想如何用这个方法转化成o(n)的算法。。(之前这个可以用线段树优化成nlog(n)的,当然n=1000000有可能超时,o(n)的数据结构。。栈或者队列。。。就是栈。。单调栈。。我们每次将当前的数压入栈,栈保持单调下降。如果新加入的数大于栈顶元素,我们比较栈顶下的元素和新加入的数哪个小,选择栈顶被谁吃掉。。。

 

【[JSOI2007]字符加密Cipher】 (ac)

source:bzoj1031

summarize:直接字符接起来,后缀数组那样的倍增基数排序。。

 

【[HAOI2008]圆上的整点】 (ac)

source:bzoj1041

summarize:这题一开始用大步小步的方法去判断。。果断是超时了。。最后去看了如何构造勾股数

      a^2+b^2=c^2

      a=m^2-n^2

      b=2*m*n

      c=m^2+n^2

      gcd(n,m)=1

      gcd(a,b,c)=1

然后对于任意一组勾股数 可以表示成 f(n,m,k)...k是乘上的倍数。。kn,km。。。c变为k^2*(n^2+m^2)

我们枚举n^2+m^2...必然为r的倍数。。从1到 sqrt(r) 枚举。。

由于gcd(n,m)=1。。所以n和m必然一奇一偶或者都为奇。。但是由于gcd(a,b,c)=1

所以n,m必然一奇一偶。。所以c mod 4=1。。。从这些条件去判断。。

我们先枚举r。。。然后再枚举n。。(n<sqrt(r/2))。。

最后得出的答案*8+4。。

 

【[haoi2007]旅行】(wa*4=>ac)

source:bzoj1050

summarize:这题我是暴力spfa。。w[x,y]表示x节点最大边为y,的最小边的最大值。。果断wa了很久。。

orz。。我太弱了。。。太久没写spfa。。忘记写出队了。。

 

【[haoi2007]上升序列】(wa=>ac)

source:bzoj1046

summarize:这题让我很囧。。一开始看错题目,以为数字最小。。一直不知道怎么做。。不会做。后来才发现时要数位字典序最小。。囧。。变成不难了。。直接nlogn lis。。。然后就这样

 

【[haoi2007]受欢迎的牛】(ac)

source:bzoj1051

summarize:这题就是找一下强连通,根顶的强连通块个数就是答案

 

【[CQOI2009]match循环赛】(tle*3=wsac)

source:bzoj1306

summarize:这题就是各种剪枝的搜索。。我tle两个点。。非常囧。。最后cheat过的。。ws的ac了。。感谢dyj老师给我的数据。。

 

【[HAOI2008]移动玩具】(wa=>ac)

source:bzoj1054

summarize:最近写程序准确率下降不少。。这题我一开始就是两个判断写反了。。

 

【[ZJOI2007]矩阵游戏】(wa*2=>ac)

source:bzoj1059

summarize:这题让我很无奈。。我太二了。。一开始是40000写成了4000,
然后          for j:=1 to top do v[p[j]]:=false;  

写成了         for j:=1 to top do v[p[top]]:=false;  

这题我们只需要保证存在n个xi,yi使得  xi<>xj & yi<>yj.其余可以通过任意单独一种方法掉换使得满足题意..然后我们就直接构造二分图,匹配。。

对于每个g[i,j]=1连接i,j。。

 

【[scoi2007]蜥蜴】(wa=>ac)

source:bzoj1066

summarize:这题我又犯二了。。。一开始数组开小了因为点是双倍的。。囧。。。非常简单的最大流

 

【weather】(wa*n=>照着数据调ac)

source:pku2637

summarize:这题果然是很变态。。。。。像discuss里面某人说的:题目中什么都没说。数据里面什么都有。。太囧了。。。

照着数据调才发现有巨多的情况。。这题不推荐用rmq。还是线段树比较方便。。只是一开始写了rmq。。懒得改了

这题中如果用线段树,代码量可以下降很多。。。

 

更囧的是。。我pku上的变态数据过了。过不了bzoj的1067,可是bzoj上的数据是可以少考虑很多情况都可以过的。。。这让我情何以堪。。。

 

【[SCOI2007]排列perm】

source:bzoj2637

summarize:这题之后- -我写程序要注意一下了。。。不要老是犯低级的错误。。。

 

【[zjoi2004]lunch】

source:bzoj1899

summarize:继续低级错误。。这题是dp、、

 

【[poi2008]tro】

source:bzoj1132

summarize:这题我想出了n^2logn的算法。。结果之前因为排序写错wa了一段时间。。改了后一直tle。。

非常纠结,就去看别人的程序。结果跟c一样的程序。。。c的可以过。。pascal就tle。。非常纠结。。最后搞了c拿去交

 

【三维导弹拦截】

source:bzoj2044

summarize:这题我一开始没有排序- -囧。。他是随便打的,。只要值升序就行。。。。第二问最小路径覆盖。。(不知为何贪心过不了,当年vj可是过了的)。很囧。。。

 

【双亲数】

source:bzoj2045

summarize:这题就是noi2010第一题简化版。。。这个这个这个。。。而这道题目是2007年出的。。因为我之前写过。所以随便写直接交了。。。还有。这题要开int64才可以过。。。。

 

【usaco2010 feb ice】(ac)

source:bzoj1781

summarize:这题直接bfs。。分两次排序。然后转移的时候二分。。。

 

【usaco 2010 hol cowwar】(wa*2=ac)

source:一开始理解错题目。。只能走一条道路。。然后加上没有考虑到堵到路的情况。。。

summarize:

分三类点

 

 

向每个J牛连一条边

 

中间那类。。代表着J牛可以走向的点。。包括停在原位置。。。每个点拆成两个。中间一个容量1。。表示该位置最多只能有一头牛。

 

每个T牛向汇点连边

 

 

也就是第一排是初始状态。。第二类点代表每头牛站好了位置。。然后准备吃。。

 

【usaco 2009 mar cleaning up】

source:bzoj1584

summarize:如果i-j区间不同的个数大于(sqrt(j-i+1)).。。不如1个1个做。。这个我一开始没想到。。然后这题就是

nsqrt(n)的动规了。。根据单调性原则转移位置。。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值