10 条题解

  • 2
    @ 2023-5-7 18:04:13
    #include <iostream>
    #include <set>
    #include <map>
    using namespace std;
    map <pair<int,int>,bool> existed;
    int height[10001];
    int main()
    {
    	int n,r,i,h;
    	cin>>n>>i>>h>>r;
    	height[1]=h;
    	for(int i=0;i<r;i++)
    	{
    		int x,y;
    		cin>>x>>y;
    		if(x>y)
    		{
    			swap(x,y);
    			// cout<<x<<" "<<y<<endl;
    		}
    		if(!existed[make_pair(x,y)])
    		{
    			existed[make_pair(x,y)] = 1;
    			height[x+1] --;
    			height[y]++;
    		}
    
    	}
    	for(int i=1;i<=n;i++)
    	{
    		height[i] += height[i-1];
    		cout<<height[i]<<endl;
    	}
    	return 0;
    }
    
    • 2
      @ 2023-5-5 19:23:31

      题意:让牛的身高尽可能大

      思路:首先我们肯定是由最高的那头牛来推出其他牛,身高为了保证尽可能高,所以我们让身高每次减一,每对关系其实说明一个事情,那对关系中间的牛都要比这两个牛矮

      思路一:

      我们可以把所有牛初始身高设为h,然后每给一对关系我们都区间-1,最后得出答案

      思路二

      我们差分算区间-1,然后最后把差值加上h就是答案

      #include<bits/stdc++.h>
      #define maxn 100005
      #define mod 1000000007
      using namespace std;
      typedef long long ll; 
      struct sss
      {
          int x,y; 
      }a[maxn];
      ll n,p,h,m,num,d[maxn]; 
      map<ll,ll> mp[10005];
      ll c[maxn];
      int main()
      {
          cin>>n>>p>>h>>m;
          ll x,y;
          for(int i=0;i<m;i++){
              cin>>x>>y;
              if(mp[x][y]||mp[y][x]) continue;
              if(x>y){
                  int t=x;
                  x=y;
                  y=t;
              }
              a[num].x=x;
              a[num++].y=y;
              mp[x][y]=1;
              mp[y][x]=1;
          }
          for(int i=0;i<num;i++){
              d[a[i].x+1]--;
              d[a[i].y]++;
          }
          for(int i=1;i<=n;i++){
              c[i]=c[i-1]+d[i]; 
              cout<<c[i]+h<<"\n";
          }
      }
      
      
      • 0
        @ 2023-12-24 18:21:23

        #include<iostream> using namespace std; const int N=1e5+10; int n,p,h,m,a[N],x,y; int main(){ cin>>n>>p>>h>>m; for(int i=1;i<=n;i++)a[i]=h; while(m--){ cin>>x>>y; if(x>y)swap(x,y); if(x+1==y)continue; int k=min(a[x],a[y]); bool flag=false; for(int i=x+1;i<=y-1;i++) if(a[i]>=k){ flag=true; break; } if(flag) for(int i=x+1;i<=y-1;i++)a[i]--; } for(int i=1;i<=n;i++)cout<<a[i]<<"\n"; return 0; }

        • 0
          @ 2023-12-24 18:20:46
          #include<iostream>
          using namespace std;
          const int N=1e5+10;
          int n,p,h,m,a[N],x,y;
          int main(){
          cin>>n>>p>>h>>m;
          for(int i=1;i<=n;i++)a[i]=h;
          while(m--){
          cin>>x>>y;
          if(x>y)swap(x,y);
          if(x+1==y)continue;
          int k=min(a[x],a[y]);
          bool flag=false;
          for(int i=x+1;i<=y-1;i++)
          if(a[i]>=k){
          flag=true;
          break;
          }
          if(flag)
          for(int i=x+1;i<=y-1;i++)a[i]--;
          }
          for(int i=1;i<=n;i++)cout<<a[i]<<"\n";
          return 0;
          }
                          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          • 0
            @ 2023-12-24 18:20:01
            int n,p,h,m,a[N],x,y;
            int main(){cin>>n>>p>>h>>m;
            for(int i=1;i<=n;i++)a[i]=h;
            while(m--){
            cin>>x>>y;
            if(x>y)swap(x,y);
            if(x+1==y)continue;
            int k=min(a[x],a[y]);
            bool flag=false;
            for(int i=x+1;i<=y-1;i++)
            return 0;
            }                 ```
            
            • 0
              @ 2023-12-24 18:16:41

              #include<iostream> using namespace std; const int N=1e5+10; int n,p,h,m,a[N],x,y; int main(){ cin>>n>>p>>h>>m; for(int i=1;i<=n;i++)a[i]=h; while(m--){ cin>>x>>y; if(x>y)swap(x,y); if(x+1==y)continue; int k=min(a[x],a[y]); bool flag=false; for(int i=x+1;i<=y-1;i++) if(a[i]>=k){ flag=true; break; } if(flag) for(int i=x+1;i<=y-1;i++)a[i]--; for(int i=1;i<=n;i++)cout<<a[i]<<"\n"; return 0; }

              • 0
                @ 2023-12-24 9:49:45

                #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e4 + 10; const int INF = 0x3f3f3f3f; int n,p,h,m,x,y; bool v[N][N]; int cf[N],a[N]; int main() { cin>>n>>p>>h>>m; while(m--) { cin>>x>>y; if(v[x][y]) continue; if(x>y) swap(x,y); cf[x+1]--; cf[y]++; v[x][y]=1; } for(int i=1;i<=n;i++) { a[i]=a[i-1]+cf[i]; cout<<a[i]+h<<endl; }

                return 0;
                

                }

                • 0
                  #include<bits/stdc++.h>
                  using namespace std;
                  const int N=1e4+10;
                  const int INF=0x3f3f3f3f;
                  bool v[N][N];
                  int n,p,h,m,a[N],cf[N],x,y;
                  int main(){
                  	cin>>n>>p>>h>>m;
                  	while(m--){
                  		cin>>x>>y;
                  		if(x>y)
                  			swap(x,y);
                  		if(v[x][y]){
                  			continue;
                  			
                  		}
                  		cf[x+1]--;
                  		cf[y]++;
                  		
                  		v[x][y]=1;
                  		
                  	}
                  	for(int i=1;i<=n;i++){
                  		a[i]=a[i-1]+cf[i];
                  		cout<<a[i]+h<<endl;
                  	}
                  	return 0;
                  }
                  
                  • 0

                    #include<bits/stdc++.h> using namespace std; const int N=1e4+10; const int INF=0x3f3f3f3f; bool v[N][N]; int n,p,h,m,a[N],cf[N],x,y; int main(){ cin>>n>>p>>h>>m; while(m--){ cin>>x>>y; if(x>y) swap(x,y); if(v[x][y]){ continue;

                    }
                    	cf[x+1]--;
                    	cf[y]++;
                    	
                    	v[x][y]=1;
                    	
                    }
                    for(int i=1;i<=n;i++){
                    	a[i]=a[i-1]+cf[i];
                    	cout<<a[i]+h<<endl;
                    }
                    return 0;
                    

                    }

                    • 0
                      @ 2023-12-18 17:20:33

                      凑个热闹

                      #include<iostream>
                      using namespace std; 
                      const int N=1e5+10;
                      int n,p,h,m,a[N],x,y;
                      int main(){
                      	cin>>n>>p>>h>>m;
                      	for(int i=1;i<=n;i++)a[i]=h;
                      	while(m--){
                      		cin>>x>>y;
                      		if(x>y)swap(x,y);//小在前大在后
                      		if(x+1==y)continue;//相邻的直接跳过
                      		int k=min(a[x],a[y]);
                      		bool flag=false;//是否见不到对方
                      		for(int i=x+1;i<=y-1;i++)
                      			if(a[i]>=k){
                      				flag=true;
                      				break;
                      			}
                      		if(flag)
                      		for(int i=x+1;i<=y-1;i++)a[i]--;区间减1
                      	}
                      	for(int i=1;i<=n;i++)cout<<a[i]<<"\n";
                      	return 0;
                      }
                      
                      • 1

                      信息

                      ID
                      13
                      时间
                      1000ms
                      内存
                      128MiB
                      难度
                      4
                      标签
                      递交数
                      397
                      已通过
                      177
                      上传者