2 条题解

  • 0
    @ 2025-10-8 17:01:41

    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
      @ 2025-10-8 17:01:35

      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

      *【排序】雄伟的山峦[USACO02Open]Mountain Majesties

      信息

      ID
      2618
      时间
      1000ms
      内存
      128MiB
      难度
      9
      标签
      递交数
      11
      已通过
      5
      上传者