2 条题解
-
0
by hansang:
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e5+10; struct node{LL s, e;} a[N]; bool cmp(node n1, node n2){ if(n1.s!=n2.s) return n1.s<n2.s; else return (n1.e-n1.s)<(n2.e-n2.s); } LL calc(node no){ return (no.e-no.s)*(no.e-no.s); } int main(){ int n; scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%lld%lld", &a[i].s, &a[i].e); sort(a+1, a+n+1, cmp); LL ans=0; ans+=calc(a[1]); int t=1; for(int i=2; i<=n; i++){ if(a[i].e<=a[t].e) continue; if(a[t].e<=a[i].s) ans+=calc(a[i]), t=i; else ans+=calc(a[i])-calc({a[i].s, a[t].e}), t=i; } printf("%lld\n", ans); return 0; } -
0
by hansang:
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e5+10; struct node{LL s, e;} a[N]; bool cmp(node n1, node n2){ if(n1.s!=n2.s) return n1.s<n2.s; else return (n1.e-n1.s)<(n2.e-n2.s); } LL calc(node no){ return (no.e-no.s)*(no.e-no.s); } int main(){ int n; scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%lld%lld", &a[i].s, &a[i].e); sort(a+1, a+n+1, cmp); LL ans=0; ans+=calc(a[1]); int t=1; for(int i=2; i<=n; i++){ if(a[i].e<=a[t].e) continue; if(a[t].e<=a[i].s) ans+=calc(a[i]), t=i; else ans+=calc(a[i])-calc({a[i].s, a[t].e}), t=i; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2618
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 11
- 已通过
- 5
- 上传者