Codeforces Round #311
来源:互联网 发布:怎么查看电脑ip端口 编辑:程序博客网 时间:2024/06/05 14:30
昨天晚上的Codeforces 写的有点逗,无状态呀~
A题:
题意:满足三个条件的等级数量分配,尽量让一级的最多,二等其次,输出答案 。
暴力
const int maxn=1000+5;using namespace std;int main(){ int n; while(cin>>n) { int a,b,c; int aa,bb,cc; cin>>a>>aa>>b>>bb>>c>>cc; for(int i=aa;i>=a;i--) { int yu=n-i; if(yu<(b+c))continue; for(int j=bb;j>=b;j--) { int d=yu-j; if(d>=c&&d<=cc) { cout<<i<<" "<<j<<" "<<d<<endl; return 0; } } } } return 0;}
B题:
题意:给n个男生和给n个女生倒水,给你2*N个杯子的容量,倒水的总量不超过W,求最多倒水。
解法:二分判断
判断是否总量小于w,并且杯子容量够用,当然排序后,只需要判断w[0]是否满足女生,w[n]是否满足男生就可以了。
我的写法要控制二分的次数,否则会T掉
const int maxn=200000+5;using namespace std;const double eps=1e-12;double a[maxn];int n;double w;int getbool(double x){ if(3*n*x>w)return false; if(a[0]<x)return false; if(a[n]<2*x)return false; return true;}int main(){ while(cin>>n>>w) { for(int i=0;i<2*n;i++) { scanf("%lf",&a[i]); } sort(a,a+2*n); double ans=0; int num=0; double l=0;double r=w*3.0; while(r-l>=eps) { num++;if(num>10000000)break; double mid=(r+l)/2.0; if(getbool(mid)) { l=mid; ans=mid; } else r=mid; } ans=ans*3.0*(double)n; printf("%.8lf\n",ans); } return 0;}
C题:
题意:砍掉一些桌子腿,是桌子稳固,稳固的条件,1:最长的腿数量最多 2:最长的腿数量占一半以上
解法:贪心
答案肯定是某种长度的腿全部留下,个数为len个,还可以保留len-1个长度比选择的腿短的,贪心选择花费最大的就好了。题中给出的花费<=200,所以暴力200进行选择就好了。
#define ll long longconst int maxn=100000+5;using namespace std;int n;struct node{ int l,d;}a[maxn];int b;bool cmp(node a,node b){ return a.l<b.l;}int main(){ while(cin>>n) { b=0; for(int i=0;i<n;i++) { scanf("%d",&a[i].l); } for(int i=0;i<n;i++) { scanf("%d",&a[i].d); b+=a[i].d; } sort(a,a+n,cmp); int ans=0x5fffffff; int num[250]; memset(num,0,sizeof(num)); for(int i=0;i<n;i++) { int len=0; int sum=0; for(;i<n;i++) { sum+=a[i].d;len++; if((i+1)<n){ if(a[i].l!=a[i+1].l)break; } else break; } int t=len-1; for(int j=200;j>=1;j--) { if(t<=num[j]){ sum+=(t*j); break; } else{ t-=num[j]; sum+=(num[j]*j); } } for(int j=0;j<len;j++) { num[a[i-j].d]++; } ans=min(ans,b-sum); } cout<<ans<<endl; } return 0;}
0 0
- Codeforces Round #311
- Codeforces Round 311 div2
- Codeforces Round 311 div2
- 【Codeforces Round #185】Codeforces 311E Biologist
- Codeforces Round #311 (Div. 2)
- 【codeforces】Codeforces Round #363
- Codeforces Round #311 (Div. 2) 完整题解
- Codeforces Round #311 (Div. 2) Problem B
- Codeforces Round #311 (Div. 2)题解
- Codeforces Round #311 (Div. 2) D
- Codeforces Round #311 (Div. 2) C 贪心
- 【codeforces】Codeforces Round #311 (Div. 2)only 【题解】
- Codeforces Round #270 Codeforces Round #270
- 【Codeforces】Codeforces Round #271 div2
- 【CODEFORCES】 Educational Codeforces Round 1
- Codeforces Educational Codeforces Round 5
- Codeforces Round #403 div2 (CodeForces
- Codeforces Round #404 div2 (CodeForces
- spring mvc 上传文件 常见问题及解决办法
- tolua++入门
- ulimit -c unlimited
- <重构:改善即有代码的设计>读书分享
- mysql5.6.24更改character-set-server的字符集
- Codeforces Round #311
- 黑马程序员——Objective-C语言知识整理——匿名类与self/super关键字
- 个人Sublime Text 3使用的插件和配置
- start_kernel----lcokdep_init
- Struts2.3动态调用报 No result defined for action 错误
- GreenDAO数据库版本升级
- Cookie的用法
- Contains Duplicate II
- SEAndroid架构