关闭
当前搜索:

bzoj 1216: [HNOI2003]操作系统

→题目链接← 【想说的话】 听说03年不让用stl... 所以就会产生这样的题... 【题解】 用优先队列按照题意模拟就好了 【代码】 #include using namespace std; struct node{ int num,ti,t,x; friend bool operator < (node a,node b){ if(a.x==...
阅读(79) 评论(0)

bzoj 3196: Tyvj 1730 二逼平衡树 树套树

→题目链接← 【想说的话】 不知道为什么这么晚了突然就想写了... 这是我第一颗树套树了,其实算半颗?有一半用pb_ds水的=.= 但是写出来还是很有成就感的...但是也同时也非常的虚平衡树... 【题解】 线段树套平衡树 用pbds搞得平衡树,这种东西需要编译器版本好高...bzoj上null_type还不行,必须换成旧版的null_mapped_type (如果...
阅读(107) 评论(0)

bzoj 1208: [HNOI2004]宠物收养所 stl

→题目链接← 【想说的话】 又是一道stl可以水过的好题 本来有输入输出优化的...但是为了缩代码,删掉了 【题解】 不用管是宠物还是人来了,如果另一方有剩余,那就直接找最接近的加进答案,否则把他放进这一方的set 咋找set搞一搞就好了,代码应该挺可看的-___- 【代码】 #include #define ll long long #define mo...
阅读(86) 评论(0)

bzoj 3364: [Usaco2004 Feb]Distance Queries 距离咨询 LCA

→题目链接← 【想说的话】 TLE了3遍后我深刻的认识到了.... 跑最短路果然不可行... 【题解】 显然是裸的LCA 【代码】 #include #include #include #include using namespace std; struct node{ int to,len; node(int x,int y){to=x,len=...
阅读(65) 评论(0)

bzoj 3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 树的直径

→题目链接← 【想说的话】 一开始以为还要像前面一题那样搞带权并查集 然后我就不会了... 后来突然发现我zz了 最后一个方向没用了...直接建双向边然后跑树的直径就行了... 幸亏这个题保证边不交叉,要不然就彻底不会了 【题解】 建双向边然后跑树的直径 找树的直径:随便从一个点跑bfs,找到距离它最远的那个点,再从那个点跑bfs,最长路就是树的直径 ...
阅读(71) 评论(0)

bzoj 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 带权并查集

→题目链接← 【想说的话】 一道带权并查集好(水)题 以前觉得带权并查集挺屌的... 但是写过才发现就是正常的并查集顺便维护点什么东西... 好像我写的有点暴力啊...跑的好慢啊 【题解】 做并查集的过程中找根时不做路径压缩 然后对于每个点保存它到它的父亲节点需要在x轴和y轴上移动多少 每次合并x、y时找到y的根并记录从y移动到跟需要在x轴和y轴上移动多少 然后...
阅读(73) 评论(1)

bzoj 1230: [Usaco2008 Nov]lites 开关灯

→题目链接← 正解是线段树... 然而暴力能过为什么要费劲呢=.= 代码: #include #include #include #include #include using namespace std; bool f[100010]; int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0...
阅读(68) 评论(0)

bzoj 1232: [Usaco2008Nov]安慰奶牛cheer

→题目链接← 读题就可以看出肯定用最小生成树 只按照边权找到最小生成树后,计算最后的时间是 Σ边权*2+Σ点权*出度+我们要选的过夜的点的权值 然后发现,如果只按照边权找最小生成树是不正确的 因为我们正常跑kruskal的时候每次会将边权*2+两边点的点权加进答案 所以我们可以在排序前把每条边两边点的点权都加进这个边权之中,并且把原边权*2 这样再跑kruskal就每...
阅读(65) 评论(0)

树链剖分 模板

bzoj 1036 #include #include #include #include #include #define inf 999999999 using namespace std; struct node{ int Max,sum; int l,r; }tree[120020]; int n; int w[30030],son[30030],totree[30030],...
阅读(74) 评论(0)

bzoj 3368: [Usaco2004]Farmer John's View 约翰看山

→题目链接← 我觉得这个题主要就是要处理好每个山的边界问题 对于横跨0°的要特殊处理 我是把它拆成两段,最后一定是每个山的端点都是秒数从小到大的 然后以左端点从小到大排序,再乱搞一搞统计答案就好了,具体看代码吧 代码: #include #include #include #define inf 180*60*60 using namespace std; str...
阅读(81) 评论(0)

bzoj 3359: [Usaco2004 Jan]矩形

→题目链接← 先令所有的矩形的x,y都是x 再以x为第一关键字,y为第二关键字,从小到大排序 然后就变成了找一个二维的最长上升子序列 n *注意两个矩形全等不算包含 代码: #include #include #include #include #include using namespace std; struct node{ int x,y; friend...
阅读(80) 评论(0)

bzoj 3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四

→题目链接← 一眼最短路 但是建边是问题,n^2建边一定是不可行的 所以我们以高度为关键字排下序,然后对于每个点,只需要向两边扫,能建边就建边,直到高度相差超过2 注意:建边要建双向边 代码: #include #include #include #include #include #define inf 23333333 using namespace std; ...
阅读(84) 评论(0)

bzoj 3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

→题目链接← 裸线段树 查询最小值 代码: #include #include #include using namespace std; struct node{ int l,r,Min; }tree[30000*4]; void build(int num,int l,int r){ tree[num].l=l; tree[num].r=r; if(l==...
阅读(74) 评论(0)

bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛

→题目链接← 最开始看到是USACO就想n^2搞,但是看到100000就虚了... 先以左端点从小到大为第一关键字,右端点从大到小为第二关键字排序 这样就会保证,当我们从扫到 i 时,如果MaxRight大于等于 i 的right,那么 i 一定是不可行的 所以如果碰到这样的状况,就令ans=min(ans,i)  *下标从0开始 复杂度nlogn 这...应该算贪心吧...
阅读(80) 评论(0)

bzoj 3361: [Usaco2004 Jan]培根距离

→题目链接← 双向边! 然后就从1开始跑SPFA 最后对于每个点的dis值取max 代码: #include #include #include #include #include #include #define inf 233333333 using namespace std; int n,m; vectorv[20020]; bool vis[20020];...
阅读(90) 评论(0)
128条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    -广告-
    一个极其温馨的提示
    个人资料
    • 访问:48796次
    • 积分:1745
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:23条
    最新评论