A - 今年暑假不AC
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<stdio.h>
#define MAXN 3000
using namespace std;
struct node
{
int start,end;
}record[MAXN];
//结束时间早的优先
bool cmp(const node& a,const node& b){ return a.end<b.end; }
int main()
{
int n;
while(1)
{
cin>>n;
if(n==0)break;
for(int i=0;i<n;++i)
cin>>record[i].start>>record[i].end;
sort(record,record+n,cmp);
int count=0;
int lastend=-1;
for(int i=0;i<n;++i)
{
if(record[i].start>=lastend)
{
count++;
lastend = record[i].end;
}
}
cout<<count<<endl;
}
return 0;
}

B - 迷瘴
我可烦死这道题了,精度哪里老是死,气死了
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<stdio.h>
#define MAXN 105
using namespace std;
int record[MAXN];
int n,V,W;
struct node
{
float e;//分子
int v;//分母
}med;
int main()
{
int C;cin>>C;
while(C--)
{
cin>>n>>V>>W;
for(int ii=0;ii<n;++ii)
cin>>record[ii];
sort(record,record+n);
int i;med.e=0,med.v=0;
for(i=0;i<n;++i)
{
if((float)(med.e*med.v+record[i]*1.0/100*V)*1.0/(med.v+V)>W*1.0/100)
{
printf("%d %.2lf
",med.v,med.e);
break;
}
else
{
med.e =(float)(med.v*med.e+record[i]*1.0/100*V)*1.0/(med.v+V);;//分子
med.v +=V;
}
}
if(i==n)
printf("%d %.2lf
",med.v,med.e);
}
return 0;
}
#handwriting
- 任一面值的硬币,大于比他小的所有硬币的面值之和。可以用贪心法,例如以2的倍数递增的1、2、4、8等,这样的面值就符合条件