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等,这样的面值就符合条件