20190920 Tencent

Tencent

1.

n,m=map(int,input().strip().split())
la=list(map(int,input().strip().split()))
lb=list(map(int,input().strip().split()))
mina=min(la)
maxa=max(la)
minb=min(lb)
maxb=max(lb)
if max(mina*minb,mina*maxb)>max(maxa*minb,maxa*maxb):
    la.remove(mina)
else:
    la.remove(maxa)
mina=min(la)
maxa=max(la)
ans=max(max(mina*minb,mina*maxb),max(maxa*minb,maxa*maxb))
print(ans)

2.

 

n = int(input().strip())
a = list(map(int, input().strip().split()))
a = list(map(abs, a))
a.sort()
res = 0
j = 0
for i in range(n-1):
    while j < n and a[i] * 2 >= a[j]:
        j += 1
    res += (j - i - 1)
print(res)

3.

20%

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<climits>
#include<vector>
#include<queue>
#include<algorithm>
#include<stack>
#include<sstream>
#include<set>
using namespace std;
typedef long long ll;
vector<pair<int,int> > vec;
bool cmp(pair<int,int> a,pair<int,int> b){
    return b.first*(ll)b.second<a.first*(ll)a.second;
}
int main(){
    int n,k;
    cin>>n>>k;
    int x,y;
    for(int i=0;i<n;i++){
        cin>>x>>y;
        vec.push_back(pair<int,int>(x,y));
    }
    sort(vec.begin(),vec.end(),cmp);
    long long ans=0,temp;
    int min=INT_MAX,sum=0;
    for(int i=0;i<n&&k>0;i++){
        //cout<<vec[i].first<<" "<<vec[i].second<<endl;
        sum+=vec[i].first;
        if(vec[i].second<min)
        min=vec[i].second;
        temp=sum*min;
        if(temp>ans){
            ans=temp;
            k--;
        }
    }
    cout<<ans<<endl;
    system("PAUSE");
    return 0;
}

 

4.

20%

#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
using namespace std;
int main(){
	//freopen("E:\\data.txt","r", stdin);
	int n,m;
	scanf("%d %d\n", &n,&m);
	string str;
	vector<string> dic;
	//set<string> dic;
	map<string, bool> visit;
	for(int i=0;i<n;i++){
	   //scanf("%s",str);
	getline(cin,str);
	   dic.push_back(str);
	   //dic.insert(str);
	   visit[str]=false;
	}
	sort(dic.begin(), dic.end());
	string pre, end;
	for(int i=0;i<m;i++){
	  //scanf("%s %s", pre, end);
		cin>>pre>>end;
	    bool flag=false;
	    for(int j=0;j<n;j++){
	     string now = dic[j];
		 string nowpre = now.substr(0, pre.size());
		 string nowend = now.substr(0, end.size());
		 if(nowpre==pre&&nowend!=end&&visit[now]==false){
		     //printf("%s\n",now);
			 cout<<now<<endl;
			 visit[now]=true;
			 flag=true;
			 break;
		 }
	  }
	  if(flag==false){
	     printf("-1\n");
	  }
	}
	return 0;
}

5.

Not all A  

#include<iostream>
#include<string>
#include<vector>
#include<cmath>
using namespace std;

long long power(int k, int n){
	long long ans=1;
	for(int i=0;i<n;i++){
	   ans*=k;
	}
	return ans;
}

long long convert(string str, int k){
	int len=str.length();
	long long ans=0;
	for(int i=0;i<len;i++){
		if(str[i]>='0'&&str[i]<='9'){
		   ans += (str[i]-'0')*power(k,len-1-i);
		}else{
			ans += (str[i]-'A'+10)*power(k,len-1-i);
		}
	}
	return ans;
}

string out(long long ans, int k){
	string temp;
	do{
	  int t = ans%k;
	  ans /= k;
	  if(t<10){
		  temp.insert(temp.begin(),t+'0');
	  }else{
	      temp.insert(temp.begin(),(t-10)+'A');
	  }
	}while(ans);
	return temp;
}
int main(){
	//freopen("E:\\data.txt","r",stdin);
	int T;
	scanf("%d", &T);
	long long num1=0,num2=0;
	char op;
	int k;
	string str1,str2;
	long long ans;
	for(int i=0;i<T;i++){
	  cin>>k;
	  cin>>str1>>str2>>op;
	  //if(k!=10){
	     num1 = convert(str1,k);
		 num2 = convert(str2,k);
	 // }
	  if(op=='+'){
	     ans= num1+num2;
	  }else if(op=='-'){
		ans = num1 -num2;
	  }else{
	     ans = num1* num2;
	  }
	  string output = out(ans,k);
	  cout<<output<<endl;

	}
	
	return 0;
}

 

Guess you like

Origin blog.csdn.net/LXQ1071717521/article/details/101940682