upper_bound以及lower_bound详解
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
struct p{
double a1;
int a2;
}num[1000];
bool cmp(p u,p v){
if(u.a1==v.a1)
return u.a2>v.a2;
else
return u.a1<v.a1;
}
int main(){
int N,T,i;
while(cin>>N>>T){
for(i=0;i<N;i++){
cin>>num[i].a1>>num[i].a2;
}
sort(num,num+N,cmp);
double ans=0.0;
for(i=0;i<N;i++){
int k;
k=min(T,num[i].a2);
ans+=double(k*num[i].a1);
T-=k;
if(T<0)
break;
}
if(T>0)
ans+=(double)T;
printf("%.2lf\n",ans);
}
return 0;
}
#include<iostream>
#include<cmath>
#include<cstdio>
#include<string>
using namespace std;
int main()
{int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char check[]={'1','0','x','9','8','7','6','5','4','3','2'};
string id;
cin>>id;
if(id.size()!=18)
cout<<"输入错误"<<endl;
int num=0;
for(int i=0;i<17;i++){
num+=(id[i]-'0')*w[i];
}
int x=num%11;
int y=check[x]-'0';
if(y==id[17]-'0')
cout<<id<<" 正确"<<endl;
else{
for(int i=0;i<16;i++)
cout<<id[i];
cout<<check[x]<<endl;
}
return 0;
}
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
using namespace std;
int a[100010];
int main(){
int n;
cout<<"请输入样例的个数"<<endl;
cin>>n;
while(n--){
int x,y;
int len;
cout<<"输入数字长度"<<endl;
cin>>len;
cout<<"输入数字"<<endl;
for(int i=0;i<len;i++)
cin>>a[i];
sort(a,a+len);
cout<<"输入要对数字操作的次数"<<endl;
int q;
cin>>q;
while(q--){
cout<<"输入操作区间"<<endl;
cin>>x>>y;
int p1=(int)(lower_bound(a,a+len,x)-a);
int p2=(int)(upper_bound(a,a+len,y)-a);
cout<<p2-p1<<endl;
}
}
return 0;
}
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
using namespace std;
#define maxnum2 100010
int a[maxnum2],b[maxnum2],c[maxnum2],d[maxnum2],ab[maxnum2],cd[maxnum2];
int main(){
int n;
int num=0;
while(cin>>n){
for(int i=0;i<n;i++)
cin>>a[i]>>b[i]>>c[i]>>d[i];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
ab[num]=-(a[i]+b[j]);
cd[num]=c[i]+d[j];
num++;
}
}
sort(cd,cd+num);
int count=0;
int p1,p2;
for(int i=0;i<num;i++){
p1=(int)(lower_bound(cd,cd+num,ab[i])-cd);
p2=(int)(upper_bound(cd,cd+num,ab[i])-cd);
count+=(p2-p1);
}
cout<<count<<endl;
}
return 0;
}