2018/7/7-纪中某C组题【jzoj1494,jzoj1495,jzoj1496,jzoj1497】

前言

290卡成145,十分开心。


正题


T1:密码

大意

N个数乘起来

考试时

看起来十分简单的高精乘单精

解题思路

10241024其实是10241024高精乘高精了解一下,30分QAQ

代码(高精乘高精我就不解释了吧)

#include<cstdio>
#include<cstring>
#define M 2500
using namespace std;
long long a[M+1],n,k[M],b[M+1],l,lo;
void read()
{memset(k,0,sizeof(k));char c[51];scanf("%s",c);l=strlen(c);for (int i=1;i<=l;i++)k[i]=c[l-i]-48;
}
void add()
{for (int i=1;i<=lo;i++){for (int j=1;j<=l;j++){b[i+j-1]+=a[i]*k[j];b[i+j]+=b[i+j-1]/10;b[i+j-1]%=10;}}lo=-1;for (int i=M;i>=1;i--){if (b[i]!=0&&lo==-1) lo=i;a[i]=b[i];b[i]=0;}
}
void write()
{int w=M;while (w>1&&!a[w]) w--;int flag=w;for (;w;w--)printf("%d",a[w]);
}
int main()
{scanf("%d",&n);a[1]=1;lo=1;for (int i=1;i<=n;i++){read();add();}write();
}

T2:宝石

大意

有一个mmm∗m的矩阵,然后nn个宝石价值不同在矩阵里,然后一个为kk的东西要求碰到大宝石价值最大。

考试时

敲了一个矩阵前缀和然后O(n2)O(n2)暴力枚举拿了60分

解题思路

定义一个长度m,高度为k的扫描线,然后在线内的用线段树维护最大长度为k的字段和。

代码

#include<cstdio>
#include<algorithm>
using namespace std;
struct treenode{int l,r,w,lazy;
}a[300001];
struct node{int x,y,w;
}d[50001];
int m,n,k,maxs;
void build(int k,int l,int r)
{a[k].l=l;a[k].r=r;if (l==r) return;int mid=(l+r)/2;build(k*2,l,mid);build(k*2+1,mid+1,r);
}
void ddata(int k)
{a[k*2].w+=a[k].lazy;a[k*2+1].w+=a[k].lazy;a[k*2].lazy+=a[k].lazy;a[k*2+1].lazy+=a[k].lazy;a[k].lazy=0;
}
void updata(int l,int r,int k,int num)
{if (a[k].l==l&&a[k].r==r){a[k].w+=num;a[k].lazy+=num;return;}ddata(k);if (a[k*2].r>=r) updata(l,r,k*2,num);else if (a[k*2+1].l<=l) updata(l,r,k*2+1,num);else updata(l,a[k*2].r,k*2,num),updata(a[k*2+1].l,r,k*2+1,num);a[k].w=max(a[k*2].w,a[k*2+1].w);
}
//以上为线段树
bool cmp(node x,node y)
{return x.y<y.y;
}
int main()
{scanf("%d%d%d",&m,&n,&k);for (int i=1;i<=n;i++){scanf("%d%d%d",&d[i].x,&d[i].y,&d[i].w);}sort(d+1,d+1+n,cmp);//排序build(1,1,m);//建树int w=1;//扫描上限for (int i=1;i<=n;i++)//枚举下限{while (d[i].y-d[w].y>k)//更新上限{updata(d[w].x,min(d[w].x+k,m),1,-d[w].w);//去掉w++;}updata(d[i].x,min(d[i].x+k,m),1,d[i].w);//维护字段和maxs=max(maxs,a[1].w);//查询最大字段和}printf("%d",maxs);
}

T3:页

大意

一个序列,每次取中间的放到头或尾,求至少多少次可以变为单调递增。

考试

刚开始打了个贪心,然后发现数据不是很大,然后打了一个广搜,为了防止超时打了一个卡时间的结果就炸了30。把卡时间的去掉后100

解题思路

广搜然后map库(或哈希表)去重

代码

#include<cstdio>
#include<map>
#include<string>
#include<iostream>
#include<queue>
#include<ctime>
using namespace std;
map<string,int> f;
string s,mb,state[362881];
int a[10],n,head,tail;
void bfs()
{if (s==mb){printf("0");return;}state[1]=s;f[s]=1;head=0;tail=1;do{s=state[++head];int k=f[state[head]];for (int i=1;i<=n/2;i++)swap(s[i],s[n/2+1]);//放在头if (!f[s]){state[++tail]=s;f[s]=k+1;if (s==mb)//已经完成{printf("%d",k);return;}}s=state[head];for (int i=n;i>n/2+1;i--)swap(s[i],s[n/2+1]);//放在尾if (!f[s]){state[++tail]=s;f[s]=k+1;if (s==mb)//已经完成{printf("%d",k);return;}}}while (head<tail);printf("No Answer");
}
int main()
{scanf("%d",&n);s+="*";mb+="*";for (int i=1;i<=n;i++){scanf("%d",&a[i]);s+=i+48;mb+=i+48;}for (int i=1;i<n;i++)for (int j=i+1;j<=n;j++){if (a[i]>a[j]){swap(a[i],a[j]);swap(mb[i],mb[j]);//确定目标状态}}bfs();return 0;
}

T4:景点中心

大意

有n个景点构成一颗树,然后每个景点有不同数量的学生,边有不同的长度,定一个景点为中心要求所有学生到达这个点的路径长度和最小。

考试

敲出了正解,结果没注意范围30QAQ。

解题思路

一棵树然后就想到了树形dp,然后想起来有个东西叫二次扫描换根法,之后就推出了正解:

首先我们先以1为根进行一遍求出f[i]f[i]zn[i]zn[i]f[i]f[i]是表示点i子树的学生走到点i的路径长度和,然后zn[i]zn[i]表示点i的子树的学生人数总和。

然后我们就求出了以i为根节点的情况下的路径和,我们尝试推到第二层的节点。
这里写图片描述
这是一颗以1为根节点的树,然后我们变为以2为根节点
这里写图片描述
然后我们会发现
这里写图片描述
图中绿色部分(原第二个节点的子树部分)都少走了一条路w,而图中红色部分(其余部分)都多走了一条路w,所以我们可以自己计算:

c[x]=c[father]+(zn[1]zn[x])wzn[x]wc[x]=c[father]+(zn[1]−zn[x])∗w−zn[x]∗w

从而 O(1)O(1)的时间复杂度内计算出下一个点为根时的距离和。

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 1000001
using namespace std;
struct node{int next,to,w;
}a[N];
int ls[N],tot,n,x,y,w,v[N];
long long c[N],f[N],zn[N],maxs,num[N];
void addl(int x,int y,int w)
{a[++tot].to=y;a[tot].w=w;a[tot].next=ls[x];ls[x]=tot;
}
void dp(int x,int dep)//第一次扫描
{v[x]=true;zn[x]=num[x];//记录人数f[x]=num[x]*dep;//统计for (int i=ls[x];i;i=a[i].next){int y=a[i].to;if (!v[y]){dp(y,dep+a[i].w);f[x]+=f[y];zn[x]+=zn[y];//累计}}
}
void zdp(int x,int dep,int fa,int from)//第二次扫描
{v[x]=true;if (x!=1)c[x]=c[fa]+(zn[1]-zn[x])*a[from].w-zn[x]*a[from].w;//计算if (c[x]<c[maxs]) maxs=x;for (int i=ls[x];i;i=a[i].next){y=a[i].to;if (!v[y])zdp(y,dep+a[i].w,x,i);//计算子节点}
}
int main()
{freopen("data.txt","r",stdin);scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lld",&num[i]);}for (int i=1;i<n;i++){scanf("%d%d%d",&x,&y,&w);addl(x,y,w);addl(y,x,w);}c[0]=1e18;maxs=0;dp(1,0);memset(v,0,sizeof(v));c[1]=f[1];zdp(1,0,0,0);printf("%lld\n%lld",maxs,c[maxs]);
}

后续

zyc大佬太强了

                            m e      |           \ /V         / / ======  / /     orz orz orz orz orz orz orz orz orz/ / ======  / /       orz orz orz orz orz orz orz orz orz+ =========== +        orz orz orz orz orz orz orz orz orz| [zyc dalao] |         orz orz orz orz orz orz orz orz orz+ =========== +          orz orz orz orz orz orz orz orz orz\ \    ====== \ \         orz orz orz orz orz orz orz orz orz\ \   ======  \ \         orz orz orz orz orz orz orz orz orz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加油四班!加油佟穆!我们的征途是星辰大海!!!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】首先&#xff0c;感谢佟老师与范老师&#xff0c;在我不在的时候&#xff0c;三班的就业和四班的学习都落在了两位老师的肩头&#xff0c;其次&#xff0c;还需要特别感谢冯老师&#xff0c;能抽时间…

JFreeChart(一)之架构

转载自 JFreeChart架构 本章介绍给大家介绍 JFreeChart 不同类中如何交互的概念, JFreeChart基本类层次和应用水平的架构在基于Java应用程序如何工作的。 类层次架构 类层次架构解释了如何把不同阶层的相互库交互&#xff0c;以创建不同类型的图表。 以下是在上述框图中使用…

体验 PHP under .NET Core

昨天在 The week in .NET 中发现 Scott Hanselman 的这篇博文 Peachpie - Open Source PHP Compiler to .NET and WordPress under ASP.NET Core&#xff0c;知道了 Peachpie PHP 编译器加入了 .NET 基金会&#xff0c;借助 Peachpie &#xff0c;.NET Core 已经支持 PHP 。 今…

上学的你,是不是最怕老师给家长打电话……

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号&#xff1a;雄雄的小课堂。今天&#xff0c;做了个重要的工作&#xff0c;趁着五一这个假期&#xff0c;准备和每个家长都通一次话&#xff0c;将学生在学习情况给家长说明一下&#xff0c;站在我的角度&#xff0c;也从…

2018/7/8-纪中某C组题【jzoj1619,jzoj1620,jzoj1621,jzoj1622】

前言 分数250250&#xff0c;十分开心 正题 T1&#xff1a;音乐节拍 洛谷题目链接&#xff1a;https://www.luogu.org/problemnew/show/P2969 大意 有n段音乐&#xff0c;每段音乐持续时间不同&#xff0c;q个询问求一个时间点再放那首歌 考试时 开始时发现询问的时间点不…

IDEA一定要改的8条配置

转载自 IDEA一定要改的8条配置 引言 坦白说&#xff0c;我很少写这种操作类型的文章。因为这种文章没啥新意&#xff0c;大家操作步骤肯定是一样的。然而&#xff0c;我答应了我的同事小阳&#xff0c;给她出一篇&#xff01;毕竟人家打算从Eclipse转IDEA了&#xff0c;于是…

.NET Core 2.0使用NLog

最近研究了一下NLog的使用方式&#xff0c;简单的入了一下门。 实现的功能&#xff0c;对于不同的日志&#xff0c;进行不同的记录&#xff0c;分别有系统运行日志&#xff0c;和个人在程序中写的异常日志。发布之后放在了IIS上。进行查看日志的信息 参考了两篇博客。 1.ht…

计划得一步一步实施,题库首先是第一步!

大家好&#xff0c;我是雄雄&#xff0c;好久没见了哈&#xff0c;欢迎关注公众号&#xff1a;雄雄的小课堂。今天上午没有讲课&#xff0c;听写以及把假期作业整理了下&#xff0c;部分学生的假期作业偷工减料&#xff0c;也都让让让他们挨个补上了。上午将对班级后期的整个计…

OMG!又一个频繁FullGC的案例

转载自 OMG&#xff01;又一个频繁FullGC的案例 将用户已安装APP数据从MySQL中迁移到MongoDB中。MySQL中存储方式比较简单&#xff0c;每个用户每个已安装的APP一行记录&#xff0c;且数据模型对应AppFromMySQL。迁移到MongoDB中&#xff0c;我们想更好的利用MongoDB的优势&a…

ASP.NET Core - 关于标签帮助器值得了解的五点

如果您开发过ASP.NET Core Web应用程序&#xff0c;您应该已经熟悉了标签帮助器。ASP.NET Core应用程序依赖标签帮助器来呈现表单和表单字段是很常见的。所以&#xff0c;一个视图通常包含许多标签帮助器以及标准的HTML标记。您可以通过多种方式使用标签帮助器来提高开发的效率…

存储过程示例整理

--列出服务器上所有的数据库 exec sp_databases--改数据库的名字 exec sp_renamedb QQDB, QQ--查看表users中的列 exec sp_columns users《此组件已作为此服务器安全配置的一部分而被关闭》的解决办法use master exec sp_configure show advanced options,1 --显示高级配置信息…

如何使用MAT进行JVM内存泄露分析

转载自 如何使用MAT进行JVM内存泄露分析 在《Java Agent的隔离实现以及卸载时一些坑》中&#xff0c;卸载Agent之后&#xff0c;使用 jmap-histo:live pid命令验证执行FGC&#xff0c;相关Class是否会被回收&#xff0c;结果遇到了一些问题&#xff0c;最终通过MAT内存分析才…

Ribbon 客户端负载均衡

文章目录零、懒汉式改为饿汉式一、基于配置文件二、基于Bean配置三、自定义规则1 权重优先调用2 集群优先调用3 元数据优先调用零、懒汉式改为饿汉式 【consumer-springboot-80子模块】 Ribbon默认使用懒汉式加载服务列表&#xff0c;更改为懒汉式 application.yml ribbon: …

C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码

.NET core2.0 发布了,刺激,大致看了一下,很不错,打算后期学习.(不出意外,应该也会写个小系列). 虽然官方推荐用共享类库创建新的类库..然而我这个Demo还是使用的可移植.. 嗯..解释一下 为什么暂时没用共享类库.. 有些小BUG 可能是为了迎合其他类型的项目..所以在共享类库里创…

“老师,我不要苹果味的,我要葡萄味的”!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。题库四班目前题库正在维护中&#xff0c;工作量最大的莫过于题库里面的题量了&#xff0c;所以目前的解决方法是让动员大家一起出题&#xff0c;但是人多较杂&#xff0c;各种各样的题都有&#xff08;…

一次频繁Full GC的排查过程,根源居然是它...

转载自 一次频繁Full GC的排查过程&#xff0c;根源居然是它... 业务部门的一个同事遇到个奇怪的 Full GC 问题&#xff0c;有个服务迁移到新的应用后&#xff0c;一直频繁 Full GC。新应用机器的配置是 4c 8g&#xff0c;老应用是 4c 4g&#xff0c;老应用 GC 都很正常&…

jzoj1158-荒岛野人【扩欧,gcd,同余方程】

正题 大意 有n个野人&#xff0c;每个野人有一个初始山洞CiCi&#xff0c;每次向前移动距离PiPi&#xff0c;寿命LiLi&#xff0c;如果野人走到了最后一个山洞那么继续就好回到第一个山洞&#xff0c;求至少多少个山洞才可以让野人们不会发生冲突。 解题思路 我们可以枚举答…

.NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决

今天所有开发环境已经迁移到mac OS下的Visual Studio Code 命令行编译发布&#xff0c;而运行服务器是CentOS7&#xff0c;和windows没什么关联了。 只要你Relese编译并在本地有一个与服务器相同的运行环境中运行成功了&#xff0c;迁移到真实服务器不会有什么难度。 下面是迁…

“老师,我写着写着就 强制交卷了……”

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。01暴露出的问题

张老师讲Python~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。最近我的个人站上线啦&#xff0c;欢迎大家访问http://穆雄雄.com&#xff1b;或者点击文末的“阅读原文”。昨天下午靳老师分享了关于网站部署的内容&#xff0c;今天下午请张炜林上去分享了下他准…