CSU
来源:互联网 发布:国内预科 知乎 编辑:程序博客网 时间:2024/04/30 19:07
D - 合并果子
CSU - 1588思路:O(n*nlgn),贪心思想,每次选最小的两者相加,两者的和压入之前的数组中,之后每次选出最小的两个相加类似此操作;
#include<cstdio>#include<cstring>#include<algorithm>#define max_n 1010using namespace std;int a[max_n];int main(){int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);int p=1,ans=0;for(int i=0;i<n-1;i++){a[p]=a[p-1]+a[p];ans+=a[p];sort(a+p,a+n);p++;}printf("%d\n",ans);}return 0;}
思路:O(nlgn),二叉树思想,利用优先队列动态改变树枝大小;
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<stack>#define max_n 1010using namespace std;struct node{int a;bool friend operator <(node x,node y){return x.a>y.a; }}q,q1,q2;int main(){int t,n;scanf("%d",&t);while(t--){priority_queue<node> Q;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&q.a);Q.push(q);}int ans=0,p;for(int i=0;i<n-1;i++){q1=Q.top();Q.pop();q2=Q.top();Q.pop();q.a=q1.a+q2.a;Q.push(q);ans+=q.a;}printf("%d\n",ans);}return 0;}
1 1
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- 【Linux学习笔记】七、网络命令
- 蓝桥杯 JAVA 核桃的数量
- Android跳转到支付宝转账界面
- Tab插件之 Responsive Full Width Tabs 的使用
- 堆排序
- CSU
- C#二进制文件编程实践
- 如何学习一项新的IT技术
- altera小实验——第一个demo指导书
- springmvc4中responseBody使用报406错误
- Android Studio全局搜索快捷键(Ctrl+Shift+F)失效的解决办法
- centos下安装node环境,Express,Mongodb
- ScrollView嵌套 EditText,输入多行(足够多的情况)会使ScrollView整体滚动的问题
- Java位移运算符