关闭
当前搜索:

bzoj 4781: [Usaco2017 Open]Paired Up

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

bzoj 3890: [Usaco2015 Jan]Meeting Time bfs

→题目链接← 对于每个点我们维护两个bool数组 vis[0][i][j]=true表示第j时刻Bessie来过点i vis[0][i][j]=true表示第j时刻Elsie来过点i 然后我们从1号点开始,每当vis[0或1][i][j]==false时就变成true,并放到队列里 最后vis[0][n][1~maxm]与vis[1][n][1~maxm]都为true时,第三维的...
阅读(87) 评论(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 4397: [Usaco2015 dec]Breed Counting 前缀和/线段树

→题目链接← 这个题我傻逼了 看到区间查询我下意识地打了线段树 然后一发A了后发现其他人的代码都好快啊 找题解发现都是用的前缀和 靠! 然后又搞了一发前缀和 我把两个代码都放上来吧 前缀和: #include #include using namespace std; int n,m; int sum1[100010],sum2[100010],sum...
阅读(117) 评论(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 3366: [Usaco2004 Feb]Breeding 奶牛饲育

特别鸣谢+膜拜ljss →题目链接← 题目大意就是有多少种不同的方案能乘出n 把所有的约数都暴力地找出来,然后dp[i]表示n=a[i]时有多少种方法可以得到这个数 显然的是如果a[i]%a[j]==0那么dp[i]+=dp[j] 初始时dp[i]都为1 最后那个dp就是答案 代码: #include #include #include using nam...
阅读(123) 评论(0)

bzoj 3358: [Usaco2004 Jan]洪水

→题目链接← 保存每个高度有多少个 如果目前剩的水的体积大于目前最矮的高度的数量,那么会使水面高度整体上升1,然后把目前的高度+1 然后再判断下以前是否已经有了+1后的高度,如果有把这两堆合并,再推进优先队列 直到最终高度后,只要初始高度小于等于最终高度,都加进ans 最后输出 最终高度 和 ans 代码: #include #include #include #in...
阅读(111) 评论(0)

bzoj 1083: [SCOI2005]繁忙的都市 并查集

→题目链接← 使n个点联通显然的是n-1条边 将边以长度从小到大排序,如果目前的边的两端点不在同一集合中,就选择这个边,这显然是最优的 代码: #include #include #include using namespace std; struct edge{ int s,t,len; friend bool operator < (edge a,edge b)...
阅读(73) 评论(0)

bzoj 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路 SPFA

→题目链接← 裸最短路 代码: #include #include #include #include #include #define inf 90000000 using namespace std; int n,m; int a[110][110]; int Min[110][110]; int to[10010]; queueq; int ma...
阅读(92) 评论(0)

bzoj 1293: [SCOI2009]生日礼物 STL

→题目链接← 对于每个彩珠我们保存它的下标和颜色,然后按下标排序 之后用set存对于每个颜色我们选中的彩珠的下标 如果insert的时候碰到set的size为0,说明这是一个新的颜色,我们就令difcol++ 每次使右端点向右移动1 然后如果左端点的彩珠的颜色的set的size大于1,说明这个彩珠我们不需要了,就从set中erase掉 不用考虑相同坐标中的重复彩珠,因为对于一个...
阅读(76) 评论(0)

bzoj 2748: [HAOI2012]音量调节 dp

→题目链接← 很水的一道题 如果第i首歌时音量为j是可行的,那么dp[i][j]=true 最初dp[0][beginLevel]=true; 之后每次暴力扫上一次的状态,转移就好 代码: #include #include #include #include #include #include #define ll long long #define inf 10...
阅读(70) 评论(0)

bzoj 1218: [HNOI2003]激光炸弹 暴力

→题目链接← val[i][j]表示0~第i行,0~第j列所有炸弹价值的和 然后我们暴力枚举所有的正方形左上角那个点 (我是认为左上角为0,0  右下角为5000,5000) 每个正方形的价值可以O(1)算出 简单来说就是二位前缀和 没啦~~ 代码: #include #include #include #include #include ...
阅读(78) 评论(0)

bzoj 1270: [BeijingWc2008]雷涛的小猫 dp

→题目链接← 一看到题就可以想到是动态规划 首先不作任何优化的dp时间复杂度显然是n^3的 dp[i][j]表示第i棵树,高度为j时最多可以吃到多少个柿子 num[i][j]表示第i棵树,高度为j的位置上有几个柿子 显然dp[i][j]=max(dp[i][j+1]+num[i][j] , dp[1~n][j+delta]+num[i][j]) 但是n^3是过不了的 我们发现...
阅读(69) 评论(0)

bzoj 2019: [Usaco2009 Nov]找工作 最长路

→题目链接← 显然就是找一个最长路 两个城市有路径就建一个权值为d的边 如果有航线就建一个权值为d-z的边 边的权值表示经过这个边可以获得多少钱 最后从起点开始跑最长路就好,答案对于每个点取max 有正环就是无解,跟判负环一样 代码: #include #include #include #include #include #include #...
阅读(96) 评论(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)
39条 共3页1 2 3 下一页 尾页
    -广告-
    一个极其温馨的提示
    个人资料
    • 访问:48796次
    • 积分:1745
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:23条
    最新评论