【考试】数学round1# 15/06/22

先说结果,本场考试三傻逼题,我这个逗比只有220,虽然虐了rank2 70分,但在我校比较没有任何意义,这都不能AK真是见了鬼了

本次考试考的是初等数论,T1约数T2T3唯一分解,T1各种不爽,T2T3各种无聊

T1 War

题意

  有N个点,点有权,ij间边的权值为gcd(wi,wj),任意两点间可连边,求最大生成树。n,wi<=1e6。

扯淡

  一看到数据范围整个人都吓傻了

  然后这道题我是最后做的...

  我们发现wi<=1e6,这显然是暗示我们开桶的节奏

  对于每个数wi,找它的约数

  约数相同的用一个链表串起来

  然后再遍历每个约数的链表 这里有一个技巧 比如链表有abc个元素 并不用两两尝试ab,bc,ac连n*(n-1)/2条边 只需要ab,bc这样连n-1条边

  要是前者那我们还不如普通暴力 脑补一下这么做正确性显然 连边什么的用并查集

  然后我找约数用了sqrt(n),于是复杂度nsqrt(n)

  我们可以轻松过掉1e5,但1e6有点卡啊

  听说大家都打的普通暴力,以至于也没啥动力,只想弃疗

  然后数据除了1e3全是1e6,我就呵呵呵呵呵了,被卡成n^2一样的30分

  那么知道正解后我更想骂自己傻逼

  为什么要用点找边呢!难道不会用边找点么!

  为什么要用数找约数呢!当然是要用约数找数啊!

  这就是sqrt和log的区别!

  为什么艾氏筛法高效!就是因为每找到一个素数后让它作为约数直接j+=i!

  果然我对算法理解还不够深!不过有了这次的经历那必是刻骨铭心了!

  这实在是不难想,我为什么想不到呢!

  因为当时只想弃疗没想着优化,习惯也不好,没想有没有更快的等效处理方法直接去打?我怎么能这样!

题解

  从大到小枚举每个数作为gcd,把wi开个桶直接找点连边

T2 Homework

题意

  有一个数x,已知和a的gcd为a1,和b的lcm为b1,求x的可能情况。

扯淡

  无聊题,就是有点麻烦

  关于为什么是90分我也不太清楚>.< 极端情况?

题解

  大力分解质因子

  根据gcd=min(ei,ej), lcm=max(ei,ej)讨论一下就好

T3 Game

题意

  1~n的数随你选,选了乘起来,乘起来必须是平方数,求最大的平方数。

题解

  这就是道一眼题

  我们发现

  作为平方数每一个ei肯定是偶数

  那么我们先贪心 把1~n乘起来

  对于那些pi的ei是奇数的,就舍去一次方,相当于去掉了这个素数,也不会有其他影响,必是对的

  

这次还是有很多遗憾

但结果也不是很差的样子(然而我校是神校)

感觉这种考试相对考得好 也就是可以让自己的心情好一点

不过这次考试还是有意义的

至少让我对于“不要用数找约数,要用约数找数”这一点刻骨铭心

虽然一直都知道,但真正用起来却不一定反映的过来,很多知识都是这样

明天终于不考了...我终于可以屯题了...

时间: 2024-11-05 22:54:28

【考试】数学round1# 15/06/22的相关文章

【考试】图论round1 15/06/11

考了四道题,前两题POI,后两题傻逼题. T1 szp Byteotian 中央情报局 (BIA) 雇佣了许多特工. 他们每个人的工作就是监视另一名特工. Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过的特工. 但是这项任务是如此的机密以至于所有参加行动的特工都必须至少被另一名没有参加任务的特工所监视(就是说如果某个特工参加了行动,那么原先监视他的那些特工中至少要有一个没有参加进行动). 给出监视任务的详情,要求计算最多能有多少个特工参与其中. 一看第一题,显然环套树,那

/*有数组{2,5,6,11,15,17,22,34,45},用户输入的任意整数 是否在数组中,如果不在打印没有该数字,如果在删掉该数字,并把后面的数字依 次往前挪动,最后用数字0补位。例如:用户输入22,那么数组中的数据变化为 {2,5,6,11,15,17,34,45,0}*/

void main() { int a[9]={2,5,6,11,15,17,22,34,35},i,j,temp,x,n=1; printf("请输入一个整数:"); scanf("%d",&x); for(i=0;i<9;i++) { if(x==a[i]) { for(j=i;j<8;j++) { a[j]=a[j+1]; } a[8]=0; n=2; break; } } switch(n) { case 1: printf("

有数组{2,5,6,11,15,17,22,34,45},将用户输入的任意整数放入数组正确的位 置中,保证顺序不能乱掉。例如:用户输入9,那么数组为{2,5,6,9,11,15,17,22 ,34,45}

#include <stdio.h>void main(){ int a[9]={2,5,6,11,15,17,22,34,35},b[10]={0,2,5,6,11,15,17,22,34,35},x,i,j,temp; printf("请输入一个整数:"); scanf("%d",&x); b[0]=x; for(i=0;i<10;i++) { for(j=0;j<9;j++) { if(b[j]>b[j+1]) { tem

【考试】图论round2 15/06/12

四道傻逼题,然而我还是挂了近一百分. T1. 裸最大生成树,结果我因为没判无解掉20分,好久没犯过这错误. /*立下flag:再忘输出无解直播吃键盘!一开始忘了检查也不该错*/ T2. 这不是和昨天一道题一样么?老师你确定你选题的时候看了题? T3. 裸状态图求最短路. 感觉我还是太..做的时候心想傻逼题连具体怎么转移要求什么都没看清,凭着感觉一顿乱搞,然后之后改得死去活来.. 明明代码能力就不好想得就不清,怎能如此任性?! 测出来0分,我不信,结果被windows评测环境坑了= =莫名其妙..

2015年北京大学自主招生选拔录取考试数学部分

一.选择题(选对得10分,不选得0分,选错扣5分) 1.整数$x,y,z$满足$xy+yz+zx=1$,则$(1+x^2)(1+y^2)(1+z^2)$可能取到的值为(        ) A.$16900$ B.$17900$ C.$18900$ D.前三个答案都不对 2.在不超过$99$的正整数中选出$50$个不同的正整数,已知这$50$个数中任两个的和都不等于$99$,也不等于$100$.这$50$个数的和可能等于(        ) A.$3524$ B.$3624$ C.$3724$ D

快速傅立叶变换算法FFT——图像处理中的数学原理详解22

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 交流学习可加图像处理研究学习QQ群(529549320) 傅立叶变换以高等数学(微积分)中的傅立叶级数为基

数学笔记15——微积分第二基本定理

微积分第二基本定理 这里需要注意t与x的关系,它的意思是一个函数能够找到相应的积分方式去表达.如果F'=f,则: 下面是第二基本定理的证明. 证明需要采用画图法,如上图所示,曲线是y=f(x),两个阴影部分的面积分别是G(x)和ΔG(x),其中: 当Δx足够小时: 示例1 根据微积分第二基本定理, ,f(t) = 1/t2,f(x) = 1/x2 下面做一下验证. 示例2 解微分方程, L'(x) = 1/x; L(1) = 0 按照以往的求解方式: 现在根据微积分第二基本定理,可以直接写作:

异常控制流 第十周11.15~11.22

第八章 异常控制流 控制流:控制转移序列. 控制转移:从一条指令到下一条指令. 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 作为程序员,理解ECF很重要,这有很多原因: 理解ECF将帮助你理解重要的系统概念.ECF是操作系统用来实现I/O.进程和虚拟存储器的基本机制,在能够真正理解这些重要概念之前,你必须须理解ECF. 理解ECF将帮助你理解应用程序是如何与操作系统交互的.应用程序通过一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务. 理解

Day 25(06/22) sys 模块

五 sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 六 logging模块 6.1 函数式简单配置 import logging logging.debug('debug messa