关闭
当前搜索:

bzoj 3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助 二分

→题目链接← 【想说的话】 期中考试gg了,,, 写发水题压压惊 【题解】 用两个数组,一个按分数从小到大排序,一个按价格从小到大排序 在按分数排序的数组上进行二分,把它当作中位数,然后在另一个数组中扫一遍找到两边的数,判断是否合法 复杂度O(nlogn) 【代码】 #include #define MAXN 100010 using namespac...
阅读(54) 评论(0)

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

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

→题目链接← 每次把最大的牛与最小的牛合并,最终结果一定是最大值最小的 所以我们用优先队列维护一个大根堆,再维护一个小根堆,每次合并更新下答案就好 代码: #include #include #include #include #include #include using namespace std; struct node1{ int sum,val,num;...
阅读(119) 评论(0)

bzoj 4396: [Usaco2015 dec]High Card Wins

→题目链接← 每个牌肯定是管第一个比它小的牌是最优的 所以我们只需要从小到大记录对面目前还剩几张牌,手里只要有能管的就管上一个 代码: #include #include using namespace std; int n; bool f[100010]; int ans=0; int main(){ scanf("%d",&n); for(int i=0; i...
阅读(191) 评论(0)

bzoj 3412: [Usaco2009 Dec]Music Notes乐谱

→题目链接← 维护前缀和,对于每次询问找到第一个大于它的数(也就是upper_bound)的下标,就是答案 手写可以二分找 用stl可以用upper_bound 代码: #include #include #include using namespace std; int n,m; int sum[50050]; int main(){ scanf("%d%d",...
阅读(92) 评论(0)

bzoj 1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 二分+最大流

→题目链接← 二分答案,每次把边长小于mid的边放到图中,正反的边容量都为1,跑最大流 然后用最大流和T判断一下,如果大于T返回true,否则false 代码: #include #include #include #include #include #define ll long long #define inf 10000001 using namespace std;...
阅读(80) 评论(0)

bzoj 1720: [Usaco2006 Jan]Corral the Cows 奶牛围栏 二分

→题目链接← 先按奶牛的横坐标排序,然后二分答案 判断圈住多少奶牛暴力搞就好,N 代码: #include #include #include #include #include #include #define inf 999999999 using namespace std; struct point{ int x,y; friend bool operator <...
阅读(70) 评论(0)

bzoj 1687: [Usaco2005 Open]Navigating the City 城市交通 bfs

→题目链接← bfs时,对于每个点,显然最多只能访问一次,并且只要访问到了就一定是最短路径 记录一下到达每个点的步数,最后从终点每次找周围步数比它小1的点,就可以找到我们需要的那个路径 已经知道路径了,反着搞回去就可以了,每次判断一下行走方向是否改变就好 懒得反着记录答案,所以用了个双向队列,真是方便啊 代码: #include #include #include #inclu...
阅读(66) 评论(0)

bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线 二分+最短路

→题目链接← 二分ans,小于等于ans的边的距离看作0,大于ans的看作1 每次跑一下最短路,dis[n]代表有多少边是需要免费的 所以如果dis[n] 别忘了输出-1 代码: #include #include #include #include using namespace std; struct node{ int to,len; int now; }; v...
阅读(92) 评论(0)

bzoj 4096: [Usaco2013 dec]Milk Scheduling 贪心

→题目链接← 从后往前扫deadline,每次找到一个符合条件并且贡献最大的,就算进答案 代码: #include #include #include #include #include #include using namespace std; struct node{ int g,d; friend bool operator < (node a,node b){ i...
阅读(138) 评论(0)

BZOJ1651--[Usaco2006 Feb]Stall Reservations 专用牛棚

1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 849  Solved: 484 [Submit][Status][Discuss] Description Oh those picky N (1 <= N <= 50,000) cows! T...
阅读(756) 评论(0)
    -广告-
    一个极其温馨的提示
    个人资料
    • 访问:48796次
    • 积分:1745
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:23条
    最新评论