耐心爱上你

来源:互联网 发布:40部网络禁书在线阅读 编辑:程序博客网 时间:2024/04/28 16:32

贪心。。。排序。。。动态规划。。。待续。。。  下面的3个题是我从周一就开始做的,怎奈基础太薄弱,到现在也没能独立写下来。这周马上就要结束了,连模仿带创造性的试探,算是把代码给折腾出来了,但是还是生生的。。。不是很懂。。。 七点按最近的那个计划 完成任务 开会一个多小时。。。。明天继续。。。加班ing~~

//喷水装置(二)//一下午一直在处理 字符问题 算法问题。。。慢慢的学着耐心。。。#include<iostream>#include<algorithm>#include<cmath>using namespace std;//#define max(a,b) (a)>(b)?(a):(b);//由大到小 最右struct nodle{float x,y;}a[10001];bool cmp(const nodle &a,const nodle &b){return a.x<b.x;}//由小到大排序 最左int main(){int N;cin>>N;while(N--){int n;float len,width,xx,ri,l;cin>>n>>len>>width;for(int i=0;i<n;i++){cin>>xx>>ri;if(ri<=width/2.0){i--;n--; continue;}l=sqrt(ri*ri-width*width/4.0);a[i].x=xx-l>0?xx-l:0;a[i].y=xx+l<len?xx+l:len;}sort(a,a+n,cmp);//从最左开始//double l=0,r=0,count=0;//for(int i=0;i<n&&r<=len;i++)//{//if(a[i].x<=l) {//r=max(a[i].y,r);//点儿的限制呀呀。。。。//}count++;//l=r;//if(a[i].x<=l) {//r=max(a[i].y,r);}//else break;////}float start=0;int count=0,i,k=-1;  while(start <len && a[k+1].x <= start)          {              float mmax = -1;              for(i = k+1;a[i].x<= start && i<n;i++)                  if(mmax < a[i].y)                  {                      mmax = a[i].y;                      k = i;                  }              start = mmax;  count++;  }if(start>=len)cout<<count<<endl;else cout<<"0"<<endl;}return 0;}//背包问题//思路很简单 取单位价值最大的物品 使其不超过背包最大容量//代码实现能力弱爆了 这个是借用的人的外壳 那个类和函数都还木用熟//不用函数调用比较循环太多 很随意的就超时了。。。#include<iostream>#include<algorithm>using namespace std;struct Tool{int v,w;}tool[11];bool cmp(const Tool &a,const Tool &b){return a.v>b.v;}int main(){int n;cin>>n;while(n--){int s,m,sum=0,total=0;cin>>s>>m;for(int i=0;i<s;i++)cin>>tool[i].v>>tool[i].w;sort(tool,tool+s,cmp);//这到底是神魔问题 编译器不喜欢for(int i=0;i<s;i++){sum+=tool[i].w;if(sum<m)total+=tool[i].w*tool[i].v;else{total+=tool[i].v*(m-sum+tool[i].w);break;}}cout<<total<<endl;}return 0;}//会场安排//狗血 清楚的知道我对你缺乏耐心 但真的是一点点儿的愈来愈有耐心。。。//模仿的 希望自己完全独立的 用新的方法写几个#include<iostream>#include<algorithm>#include<string>using namespace std;struct activity{int b,e;}act[10000];bool cmp(activity a,activity b){ return a.e<b.e;}//结束由早到晚int main(){int N;cin>>N;while(N--){int n,count=1,end;cin>>n;for(int i=0;i<n;i++)cin>>act[i].b>>act[i].e;sort(act,act+n,cmp);//这里编译器上显示有问题 可是允许处理???end=act[0].e;for(int i=1;i<n;i++){    //和喷水装置不同 不要覆盖if(act[i].b>end){end=act[i].e;count++;}}cout<<count<<endl;}return 0;}


原创粉丝点击