DescribeDescribeDescribe

合并果子


SolutionSolutionSolution

题目看起来跟合并果子没有半毛钱关系,竟然是哈夫曼树。我这种菜鸡根本看不懂,打了个spfaspfaspfa,然后50附近的大佬用dpdpdp做了50分太强了%%%

#include<queue>
#include<cstdio>
#include<cctype>
#include<cstring>
#define id(a,b) ((a-1)*n+b)
using namespace std;int a[100001],t,n,l[1000001],dis[1000001],tot=0;
bool vis[1000001];
struct node{int next,to,w;}e[2000001];
inline void add(register int u,register int v,register int w){e[++tot]=(node){l[u],v,w};l[u]=tot;return;}
inline long long read()
{char c;int d=1;long long f=0;while(c=getchar(),!isdigit(c))if(c=='-')d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
inline void write(long long x){if(x>9)write(x/10);putchar(x%10+48);return;}
void spfa()
{queue<int>q;q.push(id(n,1));dis[id(n,1)]=0;while(q.size()){int x=q.front();q.pop();vis[x]=true;for(register int i=l[x];i;i=e[i].next){int y=e[i].to,w=e[i].w;if(dis[y]>dis[x]+w){dis[y]=dis[x]+w;if(!vis[y]) q.push(y),vis[y]=true;}}vis[x]=false;}return;
}
signed main()
{t=read();while(t--){memset(l,0,sizeof(l));memset(dis,0x3f3f3f3f,sizeof(dis));memset(vis,0,sizeof(vis));n=read();tot=0;for(register int i=1;i<=n;i++) a[i]=read();for(register int i=n-1;i>0;i--) a[i]+=a[i+1];for(register int i=1;i<=n;i++)for(register int j=1;j<=n;j++) {if(i>1&&j<n) add(id(i,j),id(i-1,j+1),0);add(id(i,j),id(i,(j+1)/2),a[i]);}spfa();write(dis[1]);putchar(10);}
}

满分的做法用O(n)O(n)O(n)的队列做即可


CodeCodeCode

#include<cstdio>
#include<cctype>
#include<algorithm>
#include<cstring>
using namespace std;
int k,x,n,n1,n2,t[10001],m;
long long w,sum,a1[200001],a2[200001];
inline long long read()
{char c;int d=1;long long f=0;while(c=getchar(),!isdigit(c))if(c=='-')d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
inline void write(long long x){if(x>9)write(x/10);putchar(x%10+48);return;}
int main()
{m=read();while(m--){sum=0;n1=n2=0;n=read();memset(t,0,sizeof(t));memset(a1,0x3f3f3f3f,sizeof(a1));    memset(a2,0x3f3f3f3f,sizeof(a2));for(int i=1;i<=n;i++) t[read()]++;for(int i=0;i<=10000;i++) while(t[i]) t[i]--,a1[++n1]=i;int i=1,j=1;k=1;while (k<n){if(a1[i]<a2[j]) w=a1[i++];else w=a2[j++];if(a1[i]<a2[j]) w+=a1[i++];else w+=a2[j++];a2[++n2]=w;k++;sum+=w;}write(sum);putchar(10);}
}

2019.1.21【NOIP提高组】模拟B组 JZOJ 4210 我才不是萝莉控呢相关推荐

  1. JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点

    Description Input Output Sample Input 4 4 2 a a b b a a b b c c d d c c d d 1 1 3 3 2 2 3 1 1 3 2 2 ...

  2. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  3. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八

    题目大意 给定斐波那契的第aaa项,求出第b" role="presentation">bbb项,默认第0项为1 解题思路 方法一:递推 找到规律后O(b)O(b) ...

  4. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  5. JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树

    梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...

  6. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  7. {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C

    2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...

  8. 6271. 2019.8.4【NOIP提高组A】锻造 (forging)

    6271. 2019.8.4[NOIP提高组A]锻造 (forging)  (File IO): input:forging.in output:forging.out Time Limits: 15 ...

  9. 2021.01.14【NOIP提高B组】模拟 总结

    2021.01.14[NOIP提高B组]模拟 总结 第一题 Candy 奇奇怪怪的题目. 一开始没有理解题目,其实就是同时变换. 打了一个暴力. 本人随机生成50000组数据,都过了,时间没超.希望出 ...

最新文章

  1. HTML5原生拖拽/拖放 Drag Drop 详解
  2. idea/eclipse下Maven工程集成web服务(tomcat、jetty)
  3. VMware快照管理器
  4. 03 Oracle分区表
  5. 简述html的3种列表uloldl,语义化HTML:ul、ol和dl
  6. 在Airtest中如何使用无线模式控制手机
  7. pl/sql developer 设置oracle的date类型默认显示样式
  8. 2017.8.11 OSU 失败总结
  9. 对话富通科技CEO赵伟:企业上云潮下 MSP正步入『黄金时代』...
  10. jxl java mer_导出报表出错,有没有大神懂得
  11. 获取a标签的文本 asp.net_Python小程序2获取href的值
  12. python自动生成采集规则_python 织梦自动采集更新脚本
  13. 如何将手机里的小视频做成GIF动图?一键轻松生成GIF动画
  14. 电脑 清理android,怎样清除系统垃圾 手机电脑一举拿下【图文】
  15. grub引导项修复详解_Grub引导项修复详解
  16. 微信小程序JS 字符串string与arraybuffer的相互转换
  17. 鸿蒙小游戏-俄罗斯方块
  18. Python控制键盘鼠标,原来还能这样玩?
  19. linux文件编辑--vi
  20. JavaScript学习(七)——对象与数组、内部对象(1)

热门文章

  1. 微商截图王app 好用的截图工具
  2. 2018年区块链革命性项目VRBT是一种什么样的技术架构?
  3. 怎么对一张图片进行局部拉伸,变形,或放大?
  4. vscode开发小程序 去掉无用多余的代码片段
  5. Python列表(获取列表中指定元素的索引、获取列表中的多个元素、判断指定元素是否在列表中存在、列表元素的遍历、列表元素的增加操作、 列表元素的删除操作、列表元素的修改操作、列表元素的排序操作)
  6. 第七章 - 类的详细设计
  7. spring aop之各advice通知的执行顺序
  8. 心路历程:爬虫实战——从数据到产品
  9. LAmbda表达式 C#版
  10. 食物链(Food Chain POJ 1182)