水题
文章平均质量分 64
everlasting__
'-'
展开
-
bzoj 4159: [Neerc2009]Business Center 水题
新博客链接:https://www.everlasting.wang/archives/231原创 2017-12-27 16:45:10 · 439 阅读 · 0 评论 -
bzoj 3393: [Usaco2009 Jan]Laserphones 激光通讯
→题目链接←每个点的dis要保存4个,分别为从四个方向到达这个点需要的镜子数然后正常跑spfa就好了代码:#include#include#include#define inf 233333333using namespace std;struct point{ int x,y; friend bool operator == (point a,原创 2017-09-12 20:44:13 · 405 阅读 · 0 评论 -
bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛
→题目链接←最开始看到是USACO就想n^2搞,但是看到100000就虚了...先以左端点从小到大为第一关键字,右端点从大到小为第二关键字排序这样就会保证,当我们从扫到 i 时,如果MaxRight大于等于 i 的right,那么 i 一定是不可行的所以如果碰到这样的状况,就令ans=min(ans,i) *下标从0开始复杂度nlogn这...应该算贪心吧原创 2017-09-28 10:07:59 · 268 阅读 · 0 评论 -
bzoj 3359: [Usaco2004 Jan]矩形
→题目链接←先令所有的矩形的x,y都是x再以x为第一关键字,y为第二关键字,从小到大排序然后就变成了找一个二维的最长上升子序列n*注意两个矩形全等不算包含代码:#include#include#include#include#includeusing namespace std;struct node{ int x,y; friend原创 2017-09-28 13:50:14 · 271 阅读 · 0 评论 -
bzoj 3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四
→题目链接←一眼最短路但是建边是问题,n^2建边一定是不可行的所以我们以高度为关键字排下序,然后对于每个点,只需要向两边扫,能建边就建边,直到高度相差超过2注意:建边要建双向边代码:#include#include#include#include#include#define inf 23333333using namespace std;原创 2017-09-28 13:07:01 · 337 阅读 · 0 评论 -
3301: [USACO2011 Feb] Cow Line 康托展开
→题目链接←就是一道裸的康托展开开始写的时候我发现我并没有写过并且也不太会然后开始了自己YY居然一发A了!!!!代码:#include#include#include#define ll long longusing namespace std;int n,m;ll num[22];void cal(){ int sum[22原创 2017-09-11 20:45:28 · 236 阅读 · 0 评论 -
bzoj 3361: [Usaco2004 Jan]培根距离
→题目链接←双向边!然后就从1开始跑SPFA最后对于每个点的dis值取max代码:#include#include#include#include#include#include#define inf 233333333using namespace std;int n,m;vectorv[20020];bool vis[20020];原创 2017-09-27 20:36:05 · 270 阅读 · 0 评论 -
bzoj 4749: [Usaco2016 Dec]Moocast dfs
→题目链接←很水的dfs题n^2的dfs,把每个点都当作起点跑一遍,最后取max代码:#include#include#include#includeusing namespace std;struct node{ int x,y,p;};int n;node a[220];bool f[220];int ans=0;double c原创 2017-09-02 13:25:06 · 450 阅读 · 0 评论 -
bzoj 4996: [Usaco2017 Feb]Why Did the Cow Cross the Road II
bzoj没有题面....链接是到洛谷的→题目链接←维护有多少坏掉的路灯的前缀和然后对于每个sum[i]-sum[i-k]取max就好代码:#include#include#include#includeusing namespace std;int n,k,m;int sum[100010];bool f[100010];in原创 2017-09-02 01:41:37 · 335 阅读 · 0 评论 -
bzoj 4511: [Usaco2016 Jan]Subsequences Summing to Sevens
→题目链接←维护一个前缀和,但是它维护的是前缀和%7然后如果存在sum[i]==sum[j],显然的是这中间的一段是可以被7整除的所以枚举余数,每次找到左右端点,取一个max就好代码:#include#include#include#includeusing namespace std;int n;int sum[50050];bool f[7原创 2017-09-02 01:24:47 · 392 阅读 · 0 评论 -
bzoj 3385: [Usaco2004 Nov]Lake Counting 数池塘
→题目链接←从左上角开始扫,扫到一个W时就开始dfs把经过的地方W都变成.只要有W在周围就接着dfs然后这么一次dfs下来就找到了一个池塘最后统计下数量代码:#include#include#include#includeusing namespace std;char c[110][110];int tox[8]={-1,-1,0,1,原创 2017-09-25 15:20:29 · 422 阅读 · 2 评论 -
bzoj 3386: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
→题目链接←终于从silver进化成gold啦!裸的最短路居然WA了两发...第一次没看到是无向边...第二次没看到这道题n m居然是反的...裸的SPFA→我的板子←代码:#include#include#include#include#include#include#define inf 233333333using n原创 2017-09-25 15:06:10 · 482 阅读 · 0 评论 -
bzoj 4781: [Usaco2017 Open]Paired Up
→题目链接←每次把最大的牛与最小的牛合并,最终结果一定是最大值最小的所以我们用优先队列维护一个大根堆,再维护一个小根堆,每次合并更新下答案就好代码:#include#include#include#include#include#includeusing namespace std;struct node1{ int sum,val,num;原创 2017-08-30 09:25:56 · 369 阅读 · 0 评论 -
bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
→题目链接←对于每个点我们维护两个bool数组vis[0][i][j]=true表示第j时刻Bessie来过点ivis[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时,第三维的原创 2017-08-29 20:37:06 · 361 阅读 · 0 评论 -
bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易 最短路
→题目链接←裸最短路代码:#include#include#include#include#include#define ll long long#define inf 233333using namespace std;int n,m;vectorv[50050];int dis[50050];queueq;int main(){ s原创 2017-09-06 20:01:32 · 340 阅读 · 0 评论 -
bzoj 4396: [Usaco2015 dec]High Card Wins
→题目链接←每个牌肯定是管第一个比它小的牌是最优的所以我们只需要从小到大记录对面目前还剩几张牌,手里只要有能管的就管上一个代码:#include#includeusing namespace std;int n;bool f[100010];int ans=0;int main(){ scanf("%d",&n); for(int i=0; i原创 2017-08-28 20:28:15 · 486 阅读 · 0 评论 -
bzoj 3368: [Usaco2004]Farmer John's View 约翰看山
→题目链接←我觉得这个题主要就是要处理好每个山的边界问题对于横跨0°的要特殊处理我是把它拆成两段,最后一定是每个山的端点都是秒数从小到大的然后以左端点从小到大排序,再乱搞一搞统计答案就好了,具体看代码吧代码:#include#include#include#define inf 180*60*60using namespace std;str原创 2017-09-29 14:16:01 · 335 阅读 · 0 评论 -
bzoj 1232: [Usaco2008Nov]安慰奶牛cheer
→题目链接←读题就可以看出肯定用最小生成树只按照边权找到最小生成树后,计算最后的时间是Σ边权*2+Σ点权*出度+我们要选的过夜的点的权值然后发现,如果只按照边权找最小生成树是不正确的因为我们正常跑kruskal的时候每次会将边权*2+两边点的点权加进答案所以我们可以在排序前把每条边两边点的点权都加进这个边权之中,并且把原边权*2这样再跑kruskal就每原创 2017-10-04 23:02:24 · 256 阅读 · 0 评论 -
bzoj 2761: [JLOI2011]不重复数字
→题目链接←新博客连接:https://www.everlasting.wang/archives/208【想说的话】水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水【题解】直接用map保存某个数是否出现过注意:不能一边扫一边输出,末尾有空格原创 2017-12-20 19:44:06 · 260 阅读 · 0 评论 -
bzoj 4499: 线性函数 线段树
→题目链接←【想说的话】没什么想说的-____-【题解】我们都知道 f2(f1(x))=k2(k1*x+b1)+b2=k1*k2*x+k2*b1+b1然后用线段树去维护连续的一段最终的f(x)是什么查询修改就都很简单了...【代码】#include#define mod 1000000007#define MAXN 200020ty原创 2017-11-23 10:13:38 · 319 阅读 · 0 评论 -
bzoj 4756: [Usaco2017 Jan]Promotion Counting
→题目链接←【想说的话】没有写过树状数组...这算是我 树状数组初体验 ?【题解】先按能力值从大到小排序,然后找到每个牛的名次之后一边dfs,一边用树状数组统计【代码】#include#define MAXN 100010using namespace std;inline int rd(){ int x=0,y=1;char原创 2017-12-01 14:48:47 · 308 阅读 · 0 评论 -
bzoj 3391: [Usaco2004 Dec]Tree Cutting网络破坏
→题目链接←【想说的话】果然我还是比较喜欢树【题解】原创 2017-11-15 20:30:02 · 254 阅读 · 0 评论 -
bzoj 3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助 二分
→题目链接← 【想说的话】期中考试gg了...写发水题压压惊 【题解】用两个数组,一个按分数从小到大排序,一个按价格从小到大排序在按分数排序的数组上进行二分,把它当作中位数,然后在另一个数组中扫一遍找到两边的数,判断是否合法复杂度O(nlogn) [2018-10-21]:突然发现没有单调性,所以二分是假的,但是数据太弱了所以过了,还是优先队列吧......原创 2017-11-05 19:47:10 · 289 阅读 · 0 评论 -
bzoj 1925: [Sdoi2010]地精部落
→题目链接←【题解】a[ 0 ][ 0 ]=1;a[ i ][ j ]=a[ i ][ j-1 ]+a[ i-1 ][ i-j ]; (i从1~n j从1~i)ans=a[ n ][ n ]*2;中间%一%就好【代码】#include#define ll long longusing namespace std;int n,mod;ll原创 2017-10-26 11:34:40 · 211 阅读 · 0 评论 -
bzoj 1216: [HNOI2003]操作系统
→题目链接←【想说的话】听说03年不让用stl...所以就会产生这样的题...【题解】用优先队列按照题意模拟就好了【代码】#includeusing namespace std;struct node{ int num,ti,t,x; friend bool operator < (node a,node b){ if(a.x==原创 2017-10-22 17:14:30 · 270 阅读 · 0 评论 -
bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会
→题目链接←【想说的话】没有什么想说的=.=周末没什么事不刷题感觉不太好【题解】两遍dfs(树形dp)将点1当作根第一遍dfs计算出每个点子节点总数,还有将它作为集会地点时它的子树中的点满足条件需要的代价第二遍计算出答案,点1的答案就是dfs1时处理出的代价,剩下的点的答案就对于它与它父亲节点的那条边计算一下就好具体看代码吧【代码】原创 2017-10-29 22:18:00 · 248 阅读 · 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=原创 2017-10-12 11:22:49 · 297 阅读 · 0 评论 -
bzoj 1208: [HNOI2004]宠物收养所 stl
→题目链接←【想说的话】又是一道stl可以水过的好题本来有输入输出优化的...但是为了缩代码,删掉了【题解】不用管是宠物还是人来了,如果另一方有剩余,那就直接找最接近的加进答案,否则把他放进这一方的set咋找set搞一搞就好了,代码应该挺可看的-___-【代码】#include#define ll long long#define mo原创 2017-10-20 10:58:09 · 321 阅读 · 0 评论 -
bzoj 1230: [Usaco2008 Nov]lites 开关灯
→题目链接←正解是线段树...然而暴力能过为什么要费劲呢=.=代码:#include#include#include#include#includeusing namespace std;bool f[100010];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0原创 2017-10-05 22:21:52 · 269 阅读 · 0 评论 -
bzoj 3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 树的直径
→题目链接←【想说的话】一开始以为还要像前面一题那样搞带权并查集然后我就不会了...后来突然发现我zz了最后一个方向没用了...直接建双向边然后跑树的直径就行了...幸亏这个题保证边不交叉,要不然就彻底不会了【题解】建双向边然后跑树的直径找树的直径:随便从一个点跑bfs,找到距离它最远的那个点,再从那个点跑bfs,最长路就是树的直径原创 2017-10-11 14:29:06 · 553 阅读 · 0 评论 -
bzoj 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
→题目链接←裸的最大生成树写了两种算法,算是模板吧kruskal:#include#include#include#include#include#define ll long longusing namespace std;struct node{ int s,t,len; friend bool operator < (node a,原创 2017-09-06 15:45:42 · 256 阅读 · 0 评论 -
bzoj 3943: [Usaco2015 Feb]SuperBull
→题目链接←又是一道水题,又是一道翻译及其坑人的题翻译里每个数是1~230...原文是1~2^30太差劲了暴力建边然后跑最大生成树代码:#include#include#include#include#define ll long long using namespace std;struct node{ int s,t,le原创 2017-09-07 20:30:20 · 210 阅读 · 0 评论 -
bzoj 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 带权并查集
→题目链接←【想说的话】一道带权并查集好(水)题以前觉得带权并查集挺屌的...但是写过才发现就是正常的并查集顺便维护点什么东西...好像我写的有点暴力啊...跑的好慢啊【题解】做并查集的过程中找根时不做路径压缩然后对于每个点保存它到它的父亲节点需要在x轴和y轴上移动多少每次合并x、y时找到y的根并记录从y移动到跟需要在x轴和y轴上移动多少然后原创 2017-10-10 21:38:36 · 336 阅读 · 1 评论 -
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#includeusing nam原创 2017-08-24 11:04:21 · 471 阅读 · 0 评论 -
bzoj 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
→题目链接←跑一遍SPFA然后就完事了代码:#include#include#include#include#include#include#define inf 233333333using namespace std;int n,m;vectorv[20020];bool vis[20020];int dis[20020];void原创 2017-09-13 20:29:30 · 280 阅读 · 0 评论 -
bzoj 2530: [Poi2011]Party
→题目链接←bzoj玄妙的评测机究竟是什么道理...交一发TLE后怎么也找不到原因...然后删掉了一个不起眼的东西后A了,我感觉不太对啊...就又交了一边最开始的代码?????总之A掉了就好虽然这个题解有很多人写了,但是我还是要来蹭访问量既然你来了那咱们俩就是有缘我还是说一说做法吧每次把没有连边的两点删掉可以看出至多删掉2N/3个点最后输出没被删原创 2017-08-10 19:40:27 · 241 阅读 · 0 评论 -
bzoj 4292: [PA2015]Równanie 暴力枚举
→题目链接←最开始以为要什么高端无比的东西搞一搞...然后觉得一点都不水,不想做了再然后发现可以暴力枚举f(n),然后判断k*f(n)是否在[a,b]区间内,然后再判断k*f(n)的平方和是否等于f(n)如果都符合,ans++然后就很棒棒了代码:#include#include#define ll long longusing namespace st原创 2017-08-10 15:59:34 · 293 阅读 · 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是过不了的我们发现原创 2017-08-17 16:15:50 · 267 阅读 · 0 评论 -
bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 暴力
→题目链接←最长上升子序列暴力搞就能过,并且才140ms数据太水了。。。代码:#include#include#include#include#include#include#define inf 999999999#define ll long longusing namespace std;int n;int a[5050];int dp原创 2017-08-15 10:39:17 · 333 阅读 · 0 评论 -
bzoj 1720: [Usaco2006 Jan]Corral the Cows 奶牛围栏 二分
→题目链接←先按奶牛的横坐标排序,然后二分答案判断圈住多少奶牛暴力搞就好,N代码:#include#include#include#include#include#include#define inf 999999999using namespace std;struct point{ int x,y; friend bool operator <原创 2017-08-16 09:28:07 · 330 阅读 · 0 评论