关闭
当前搜索:

bzoj 1709: [Usaco2007 Oct]Super Paintball超级弹珠

→题目链接← 显然的是如果对于每个点都判断一次是否能打到所有的敌人是会TLE的 所以我们可以换一种想法 我们维护一个点可以打到多少敌人 然后对于每个敌人,我们令所有能打到他的地方的值+1 所以最后只要那个地方的值>=m,就一定是可行点 代码: #include #include #include #include using namespace std; int ...
阅读(95) 评论(0)

bzoj 3397: [Usaco2009 Feb]Surround the Islands 环岛篱笆

→题目链接← 令人一看样例就不想做的题... 题面说的很麻烦..但是仔细想一想就是问一个点到其它点距离的和的最小值 用并查集将岛屿处理出来 将每个岛屿看作一个点 然后一边输入就能一边处理出岛屿间的距离 最后暴力求和取min就好 代码: #include #include #define inf 233333333 using namespace std; in...
阅读(91) 评论(0)

bzoj 3396: [Usaco2009 Jan]Total flow 水流 网络流

→题目链接← 看到题面后感觉可能有什么奇技淫巧...? 但是懒得想 数据辣么小 直接网络流搞一搞就行了 代码: #include #include #include #include #include #define ll long long #define inf 10000001 using namespace std; struct node{ ...
阅读(70) 评论(0)

bzoj 3479: [Usaco2014 Mar]Watering the Fields 最小生成树

→题目链接← 裸的最小生成树...只会prim算法 n^2暴力建边 然后跑最小生成树 学了这么长的时间终于第一次写最小生成树 真棒啊 代码: #include #include #include #include #include using namespace std; struct node{ int s,t; int len; node(int x,i...
阅读(98) 评论(0)

bzoj 4749: [Usaco2016 Dec]Moocast dfs

→题目链接← 很水的dfs题 n^2的dfs,把每个点都当作起点跑一遍,最后取max 代码: #include #include #include #include using namespace std; struct node{ int x,y,p; }; int n; node a[220]; bool f[220]; int ans=0; double c...
阅读(163) 评论(0)

bzoj 4996: [Usaco2017 Feb]Why Did the Cow Cross the Road II

bzoj没有题面.... 链接是到洛谷的 →题目链接← 维护有多少坏掉的路灯的前缀和 然后对于每个sum[i]-sum[i-k]取max就好 代码: #include #include #include #include using namespace std; int n,k,m; int sum[100010]; bool f[100010]; in...
阅读(123) 评论(0)

bzoj 4511: [Usaco2016 Jan]Subsequences Summing to Sevens

→题目链接← 维护一个前缀和,但是它维护的是前缀和%7 然后如果存在sum[i]==sum[j],显然的是这中间的一段是可以被7整除的 所以枚举余数,每次找到左右端点,取一个max就好 代码: #include #include #include #include using namespace std; int n; int sum[50050]; bool f[7...
阅读(97) 评论(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 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)
128条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    -广告-
    一个极其温馨的提示
    个人资料
    • 访问:48794次
    • 积分:1745
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:23条
    最新评论