• Bio

    image image image image Wrongman Answer `#include<bits/stdc++.h> using namespace std; /*结构体 单一元素的数组 已经不能满足我们做题目的需求

    struct 结构体类型(自己定义){

    int a;
    char b;
    double c; //自己去填需要的变量 
    

    }; 具体例子: */ struct student{ char name[10]; int age; int yuwen; int shuxue; }; //这是一个结构体类型
    int main(){ student x[100]; //结构体数组 for(int i=1;i<=5;i++){ cin>>x[i].name+1>>x[i].age>>x[i].yuwen>>x[i].shuxue; } for(int i=1;i<=5;i++){ cout<< x[i].name+1<<" "<<x[i].age<<" "<<x[i].yuwen<<" "<<x[i].shuxue<<'\n'; }

    return 0;
    

    }`

    #include<bits/stdc++.h>
    using namespace std;
    struct student{
    	int id;
    	int age;
    	int yuwen;
    	int shuxue;
    };     
    bool cmp(student x,student y){
    	if(x.age!=y.age)return x.age<y.age;
    	else if(x.yuwen!=y.yuwen)return x.yuwen>y.yuwen;
    	else if(x.shuxue!=y.shuxue)return x.shuxue>y.shuxue;
    	else return x.id>y.id;
    }
    int main(){
    	student x[100];
    	for(int i=1;i<=6;i++){
    		cin>>x[i].age>>x[i].yuwen>>x[i].shuxue;	
    		x[i].id=i;
    	}
    	sort(x+1,x+6+1,cmp);
    	for(int i=1;i<=6;i++){
    	cout<<x[i].id<<" "<<x[i].age<<" "<<x[i].yuwen<<" "<<x[i].shuxue<<'\n';				
    	}
    
    	return 0;
    }
    
    using namespace std;
    int A[100];
    int main() {
    	int n;
    	cin>>n;//1 2 3 3 3 4 5 6
    	for(int i=1; i<=n; i++) {
    		cin>>A[i];
    	}
    	int L=1,R=n; // L  R的初始值  是你的答案可能的区间   
    	int m=3;
    //假设m就是我们要找的目标数字
    	while(L<R) {
    		int mid=(L+R)/2;//取一半,来划分 
    		if(A[mid]>=m) {
    			//	[L  mid   R]  为了寻找更靠前的解  区间应该缩小 R=mid
    			R=mid;
    		} else {
    			L=mid+1;//A[mid]<m 
    		}
    	}
    	if(A[R]==m)cout<<R;
    	else cout<<"无解";
    	return 0;
    }
    
    // 寻找最小的可能答案   
    
    
    
    有N  1e5 个糍粑  每个糍粑宽度是A[i] 
    两个不同的糍粑可以叠在一起 但  要满足   上面的糍粑至多只能为另一个糍粑的一半
    题目想问,有多少种不同的糍粑叠起来的方案
    
    暴力
    int ans=0;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=n;j++){
    		//假设i糍粑是上面的,j糍粑是下面的   
    		if(A[i]*2<=A[j])ans++;
    	}
    }    
    n*n=1e10
    
    先对糍粑排序  从小到大  
    
    对于i糍粑,如果我知道了它合适的糍粑的第一个位置j  
    因为所有糍粑的大小已经排序了, [j,n] 这些糍粑 是不是都可以跟i 叠起来  
    问题变为:  对于每个糍粑i   寻找第一个>=2*A[i] 的位置  
    糍粑不是排序   二分一次 Nlog(N)    1e5*20   2e6 
     [i+1     N] 
     int L=i+1,R=N;
     while(L<R){
     	int mid=(L+R)/2;
     	if(A[mid]>=2*A[i]){
     	// [L  mid   R] 
    	 R=mid;	
    	}
    	else{// 意味着A[mid]<2*A[i]  
    	L=mid+1;	
    	}
    	
     }
     if(A[R]>=2*A[i]) {
     	//[R~N] 
     	ans+=N-R+1;
     }
     
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ```
    `
    
  • Recent Activities