洛谷 1204 [USACO1.2]挤牛奶Milking Cows
程序员文章站
2022-07-12 17:32:04
...
题目:
https://www.luogu.org/problem/show?pid=1204
提交了三遍才过……;
可见,水题的”水准”因人而异;
思路:
贪心;
按左端点从小到大排序;
若相同则按右端点从大到小排序;
第一次0分,因为忘了去注释……;
第二次13分,因为贪错了;
我以为和引水入城的贪心一样,其实有差别;
第三次A了;
总结:
1.想好后再打,争取一遍A掉;
2.想方法证明贪心策略的正确性;
3.不要以为自己做过原题,noip没有原题!
4.即使样例过了,也无法保证程序的正确性;
5.注意题目限制;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=20001;
struct hh
{
int x,y;
}ma[MAXN];
int n,ans1,ans2;
bool cmp(hh a,hh b)
{
if(a.x<b.x) return true;
else if(a.x==b.x && a.y>b.y) return true;
else return false;
}
void solve()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&ma[i].x,&ma[i].y),ans1=max(ans1,ma[i].y-ma[i].x);//注意这里要取max,因为所有的区间可能都没有交点;
sort(ma+1,ma+n+1,cmp);
int x=ma[1].x,y=ma[1].y;
for(int i=2;i<=n;i++)
{
if(ma[i].x<=y)
{
if(ma[i].y>y)
{
y=ma[i].y;
ans1=max(ans1,y-x);
}
}
else
{
ans2=max(ans2,ma[i].x-y);
x=ma[i].x,y=ma[i].y;
}
}
cout<<ans1<<" "<<ans2;
}
int main()
{
solve();
return 0;
}
上一篇: [USACO1.2]挤牛奶Milking Cows 差分
下一篇: leetcode 灯泡开关
推荐阅读
-
洛谷 P1204 [USACO1.2]挤牛奶Milking Cows(模拟)
-
【题解】Luogu P1204 [USACO1.2]挤牛奶Milking Cows
-
【洛谷P1204】【USACO1.2】挤牛奶Milking Cows
-
java P1204 [USACO1.2]挤牛奶Milking Cows
-
【模拟】洛谷 P1204 [USACO1.2]挤牛奶Milking Cows
-
洛谷--------P1204 [USACO1.2]挤牛奶Milking Cows
-
[USACO1.2]挤牛奶Milking Cows 差分
-
洛谷 1204 [USACO1.2]挤牛奶Milking Cows
-
P1204 [USACO1.2]挤牛奶Milking Cows(差分)