结题报告
2020-02-03 16:00:39来源:博客园 阅读 ()
结题报告
题目:点此
优先队列思路:{
先读入,读入的数据放入优先队列,再循环:{
取出两个数,把这两堆果子合并,记录耗费体力并保存合并后果子的重量。
}
输出。
}
暴力思路:{
与优先队列没什么区别,只是放入优先队列改成了用插入排序或冒泡排序确定放的位置。
}
犯的错误:{
1.函数内要改变的值做参数时应用指针类型。
2.vector::insert的第一个参数应为iterator,而不是int。
3.插入排序读入循环没考虑i=0的情况。
4.优先队列主循环结束条件应是队列只有一个数,而不是队列空。
}(由于这次错误大多没被记载,犯的错误不止这些,敬请谅解。)
收获:{
1.函数内要改变的值做参数时应用指针类型。
2.vector::insert的第一个参数应为iterator,而不是int。
3.要考虑周全,不要想当然。
}
暴力代码(50分,冒泡排序):
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 int buble_insert_sort(int insertx,vector<int> *insert_x){ 5 insert_x->insert(insert_x->begin(),insertx); 6 for(int i=0;i<insert_x->size()-1;i++){ 7 if(insert_x->operator[](i)>insert_x->operator[](i+1)){ 8 insert_x->operator[](i)^=insert_x->operator[](i+1); 9 insert_x->operator[](i+1)^=insert_x->operator[](i); 10 insert_x->operator[](i)^=insert_x->operator[](i+1); 11 } 12 } 13 } 14 vector <int> x; 15 int main(){ 16 int n,sum=0; 17 cin >> n; 18 for(int i=0;i<n;i++){ 19 int data; 20 cin >> data; 21 buble_insert_sort(data,&x); 22 } 23 for(int i=0;i<n-1;i++){ 24 int a=x.front(); 25 x.erase(x.begin(),x.begin()+1); 26 int b=x.front(); 27 x.erase(x.begin(),x.begin()+1); 28 sum+=(a+b); 29 buble_insert_sort(a+b,&x); 30 } 31 cout << sum; 32 return 0; 33 }
暴力代码(10分,剩下的未知原因WA,插入排序):
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 int insert_insert_sort(int insertx,vector<int> *insert_x){ 5 for(int i=0;i>insert_x->size();i++){ 6 if(insert_x->operator[](i)>insertx){ 7 insert_x->insert(insert_x->begin()+i,insertx); 8 return 0; 9 } 10 } 11 insert_x->insert(insert_x->end(),insertx); 12 return 0; 13 } 14 vector <int> x; 15 int main(){ 16 int n,sum=0; 17 cin >> n; 18 for(int i=0;i<n;i++){ 19 int data; 20 cin >> data; 21 if(i==0){ 22 x.push_back(data); 23 continue; 24 } 25 insert_insert_sort(data,&x); 26 } 27 for(int i=0;i<n-1;i++){ 28 int a=x.front(); 29 x.erase(x.begin(),x.begin()+1); 30 int b=x.front(); 31 x.erase(x.begin(),x.begin()+1); 32 sum+=(a+b); 33 insert_insert_sort(a+b,&x); 34 } 35 cout << sum; 36 return 0; 37 }
优先队列(AC):
1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 priority_queue <int,vector<int>,greater<int> > x; 5 int main(){ 6 int n; 7 cin >> n; 8 int sum=0; 9 for(int i=0;i<n;i++){ 10 int data; 11 cin >> data; 12 x.push(data); 13 } 14 while(x.size()>1){ 15 int a=x.top(); 16 sum+=a; 17 x.pop(); 18 int b=x.top(); 19 sum+=b; 20 x.pop(); 21 x.push(a+b); 22 } 23 cout << sum; 24 return 0; 25 }
原文链接:https://www.cnblogs.com/eason66-blog/p/P1090.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:向量容器vector操作
- 2019.3.14解题报告&补题报告 2020-03-22
- 结题报告--hih0CoderP1041 2020-03-17
- 结题报告--P5551洛谷--Chino的树学 2020-03-13
- 结题报告--洛谷P3915 2020-03-13
- 结题报告 2020-03-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash