#include<stdio.h>

#include<string.h>

#define N  100

#define INF  2000000000 

int b[N];

char s[100001];

struct nodee{

   int parent,lson,rson,visit,weight;

}a[N];

int main() {

         int t,n,m,count,i,j,max1,max2,total,sum;

scanf("%d",&t);

while(t--) {

scanf("%d",&total);

scanf("%s",s); 

count=0;

memset(b,0,sizeof(b));

for(i=0;s[i];i++)

b[s[i]-'a']++;

j=1;

for(i=0;i<26;i++)

if(b[i]) {

a[j].lson=a[j].rson=a[j].parent=a[j].visit=0;

a[j].weight=b[i];

j++;

}

count=j-1;



for(i=1;i<count;i++) {//creat  哈夫曼树

                   max1=max2=INF;

  n=m=0;

  for(j=1;j<count+i;j++) {

  if(!a[j].visit&&a[j].weight<max1) {

  m=n;

  max2=max1;

  n=j;

  max1=a[j].weight;

  }

  else

  if(!a[j].visit&&a[j].weight<max2) {

   m=j;

max2=a[j].weight;

  } 

  }

  a[count+i].weight=a[n].weight+a[m].weight;

  a[count+i].lson=n;

  a[count+i].rson=m;

  a[count+i].visit=0;//这个要初始化,不然不对

  a[n].parent=count+i;

  a[m].parent =count+i;

  a[n].visit=1;

  a[m].visit=1;

}

sum=0;

for(i=count+1;i<=count*2-1;i++)//相当于求所有叶节点的带权路径长度

sum+=a[i].weight; 

if(count==1) 

                sum=a[1].weight;

if(sum<=total)

printf("yes\n");

else 

printf("no\n");

}

return 0;

}

最新文章

  1. Masonry介绍与使用实践:快速上手Autolayout
  2. 微信支付-“申请退款”接口遇到curl出错,错误码:58
  3. 生成Excel直接以流或字节形式发给客户端,无需在服务生成一个实体文件。
  4. JS 学习笔记--11---内置对象(Global/Math)
  5. 【ERROR】---Error executing &quot;adb devices&quot;:ADB server didn&#39;t ACK
  6. A记录、CNAME记录、MX记录
  7. C#实现微信开发
  8. 快速创建InfoPath表单
  9. python爬虫学习--防盗链
  10. 介绍一个全局最优化的方法:随机游走算法(Random Walk)
  11. 【工具相关】Web-ionic-npm的安装
  12. python之tkinter使用-单级菜单
  13. CodeChef - MRO Method Resolution Order(打表)
  14. python-selenium 并发执行用例的问题
  15. 4G模块ME3760_V2 端口映射
  16. 再不学会这些技巧,你就OUT了!
  17. redux源码阅读之compose,applyMiddleware
  18. [原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法
  19. arch搭建SVN服务器
  20. FusionCharts使用教程:为JavaScript图表提供数据

热门文章

  1. 8.2 OSI模型
  2. Django day31 contentType组件,Django的缓存
  3. 【洛谷1117_BZOJ4650】[NOI2016] 优秀的拆分(哈希_后缀数组_RMQ)
  4. hdu2030
  5. action=&quot;post&quot; 、 servletconfig 、 servletcontext 、getPrintWiter() 、context-param、 init-param(第一个完整的servlet)
  6. myeclipse配置tomcat后,无法正常使用的问题
  7. Java系列学习(零)-写在前面的话
  8. Java编程思想读书笔记_第二章
  9. MVC5+EasyUI+EF6+Linq通用权限系统出炉(1)
  10. hibernate注解之@Onetomany、@Manytoone、@JoinColumn