1.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//贪心
const int N=1e5;
struct meet{
int b;
int e;
int re;
};
bool cmp(meet& a,meet& b)
{
return a.e<b.e;
}
int main()
{
int i=0,j=0,count=1;
int n;cin>>n;
vector<meet> cl(n);
for(int i=0;i<n;++i)
{
cin>>cl[i].b>>cl[i].e;
cl[i].re=0;
}
sort(cl.begin(),cl.end(),cmp);
cl[0].re=1;
for(i=1;i<n;++i)
{
if(cl[j].e>=cl[i].b)
{
cl[i].re=1;
j=i;
count++;
}
}
cout<<count;
}
算法分析
2.
bool cmp1(int a,int b)
{
return a>b;
}
int main()
{
int n,ans;cin>>n;
vector<int>a(n); vector<int>b(n);
for(int i=0;i<n;++i) {cin>>a[i];b[i]=a[i];}
sort(a.begin(),a.end());
sort(b.begin(),b.end(),cmp1);
for(int i=1;i<n;i++)
{
a[i]=a[i-1]*a[i]+1;
sort(a.begin()+i,a.end());
b[i]=b[i-1]*b[i]+1;
sort(b.begin()+i,b.end(),cmp1);
}
ans=a[n-1]-b[n-1];
cout<<ans;
return 0;
}
分析:
3.
int main()
{
int n,c,ans=0;cin>>n>>c;
int w[n];
for(int i=0;i<n;++i) cin>>w[i];
sort(w,w+n-1);
int j=0;
for(int i=0;i<n&&w[i]<=c;++i)
{
c-=w[i];ans++;
}
cout<<ans;
return 0;
}
分析:
4.
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
int n,i,j,k;
cin>>a>>n;
int len=a.size();
for(k=0;k<n;k++) //这个循环控制删数的次数
{
for(i=0;i<len-1;i++) //这个循环比较此位和下一位的大小
{
if(a[i]>a[i+1]) //删数
{
for(j=i;j<len-1;j++)
a[j]=a[j+1];
break; //删完数后,应该跳出循环,进行下一次找数删数(break不能跳出if);n次删数;
}
}
len--; //如果不满足条件 (都是递增的数),那么长度直接减1;适用于123456这种情况;其实不管满不满足比较的条件,长度都会减1
}
i=0;
while(i<=len-1&&a[i]=='0')
i++;
if(i==len)
cout<<"0"<<endl;
else
for(j=i;j<=len-1;j++)
cout<<a[j];
return 0;
}