第一题:

题目大意:

有mn颗糖,要装进k个盒子里,使得既可以平均分给n个人,也可以平均分给m个人。 求k的最小值。

解题过程:

1.先看一组小数据(13,21).那么根据贪心的原则很容易想到先拿13个盒子,每个盒子装13颗糖,这样当要分给13个人的时候,每个人还欠8颗糖,当要分给21个人的时候,还有8个人欠13颗糖.所以问题就变成了把8*13颗糖放到盒子里,要求既可以平均分给8个人,也可以平均分给13个人。 也就是说可以不断减小问题的规模:

(13,21)->(8,13)->(5,8)->(3,5)->(2,3)->(1,2)->(1,1)

2.观察上面的过程,和辗转相减求最大公约数的过程一模一样。但是仅仅是相减效率就不高了,所以可以变成辗转相除。对于数据(x,y) 每个盒子最多只能装min(x,y)颗,所以这样的装法一定是最优的。

3.题解里说最小盒子数量k=n + m - gcd(n,m)。

证明:考虑一个n 个黑点、m 个白点的二分图,第i 个黑点表示第i 个小朋友(总人数为n 时),第j 个白点表示第j 个小朋友(总人数为m 时);一条边(i,j) 表示这样一个盒子,这个盒子在人数为n 时属于第i 个小朋友,在人数为m 时属于第j 个小朋友。考虑这个图的某一连通分量,它包含x 个黑点,y 个白点,则此连通分量中的边所代表的盒子的糖果总数= xm = yn,于是x n/ gcd(n,m),即每个连通分量至少包含n/ gcd(n,m)个黑点,于是连通分量数量不超过gcd(n,m),所以边数至少为n + m - gcd(n,m).

初始得分100.


第二题:

题目大意:

在N个点M条边的无向图中,给出q个询问(A,B,P),求从A到B mod P 意义下的最短路的长度。

N,M,q<=50000.

解题过程:

1.这题真心神题,一点思路都没有,直接告诉我这绝对不是图论题而是数学题。直接暴力打了个spfa,拿到了35分。

2.直接贴官方题解吧,暂时还没看明白:


第三题:

题目大意:

给出一个长度为N的字符串,有q个询问(L,R),求区间[L,R]中有多少个子序列“gcd”。

N,q<=80000

解题过程:

1.70分是很好拿的(N,q<=4000),只要在区间里找出所有的c,然后就可以利用前缀和搞出它前面的g和后面的d的个数,根据乘法原理统计即可。  找出区间里所有的c,我加了个二分查找的优化,对于完全随机的数据(c的个数比较少)效率比较理想,但还是只能拿到70分。

2.莫队算法:先分块,然后把所有询问排序(左端点在同一个块里的按右端点排序,不在同一个块里的按左端点排序).根据询问区间的变化来维护g,c,d,gc,cd,gcd的个数。  效果比较理想,最慢的点只要500ms左右。

3.O(N+q)的神算法:先处理处g,c,d,gc,cd,gcd的前缀。

[L,R]里的gcd个数=[1,R]的gcd的个数-[1,L-1]里gcd的个数-[1,L-1]里g的个数*[L,R]里cd的个数-[1,L-1]里gc的个数*

[L,R]里d的个数。

而[L,R]里cd的个数又等于[1,R]里cd的个数-[1,L-1]里c的个数*[L,R]里d的个数-[1,L-1]里cd的个数。

所有的东东都可以用前缀和来得到。 最慢的点只要50ms.


总结:

1.不要被题目吓住了,从小的数据入手容易发现规律,比如T1。

2.做不出来的题目不要死磕,比如T2,早点写个暴力丢一边就行,应该把时间花在其它题目上。

转载于:https://www.cnblogs.com/vb4896/p/4055175.html

省常中模拟 day2相关推荐

  1. 省常中模拟 Test2 Day2

    two 模拟 大意:给你一个 N 位二进制数,有四种操作:加1.减1.乘2.整除2.给定一个操作序列,求最终结果.N <= 5*10^6.数据保证不会在最高位上进行进位或退位操作. 初步解法:由 ...

  2. 省常中模拟 Test3 Day2

    matrix 找规律 题意:给定一个 N*N 的只有 0 和 1 的矩阵,有 Q 个操作,分三种:1. 将某行上的所有数字取反:2. 将某列上的所有数字取反:3. 输出 sum{ a[i][j]*a[ ...

  3. 省常中模拟 day1

    第一题: 题目大意: 给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数. 解题过程: 1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定 ...

  4. 省常中模拟 Test4

    prime 数论 题意:分别求 1*n.2*n.3*n.... n*n 关于模 p 的逆元.p 是质数,n < p. 初步解法:暴力枚举.因为 a 关于模 p 的逆元 b 满足 ab mod p ...

  5. 省常中集训Day2 2022.8.4

    T1.颠倒原理 题目大意:对于一个无向连通图G,有n点m边,初始每个点都为白色,可以选择边进行染色,如果点为白色就染黑,为黑色就染白,如果这个图每个点都可以染黑,那么输出Yes,并输出所需要的边,不漏 ...

  6. 省常中模拟 Test1 Day1

    临洮巨人 排序 题意:在字符串中找出 A.B.C 三个字母出现次数相同的区间个数. 初步的解法是前缀和,用 a(i), b(i), c(i) 表示在位置 i 之前(包括 i)各有 字母 A.B.C 多 ...

  7. 省常中模拟 Test3 Day1

    tile 贪心 题意:给出一个矩形,用不同字母代表的正方形填充,要求相邻的方块字母不能相同,求字典序(将所有行拼接起来)最小的方案. 初步解法:一开始没怎么想,以为策略是每次填充一个尽量大的正方形.但 ...

  8. 【20160612-20160618】记一周省常中训练(持续更新,欢迎催更)

    挖坑,持续更新. #include <cstdio> using namespace std; int main(){puts("转载请注明出处:http://www.cnblo ...

  9. php读取西门子plc_简单说一些PLC中模拟量的相关概念

    引言: 有些刚刚接触PLC的小伙伴对PLC中的模拟量编程不理解甚至有点摸不着方向,让他用PLC读取一个压力值模拟量,他会感到有点为难.就是因为PLC中的一些基本概念没有搞清楚,我今天简单来给大家说一些 ...

最新文章

  1. ggplot2可视化水平箱图并使用fct_reorder排序数据、使用na.rm处理缺失值(reorder boxplot with fct_reorder)、按照箱图的中位数从小到大排序水平箱图
  2. 测试开发面试集锦-测试方面(搬运)
  3. mysql集群数据引擎_MySQL数据引擎
  4. .NET Core VS Code 环境配置
  5. TCP 客户端和服务器端
  6. 图像处理 --- 4.1 图像增强的点运算
  7. 信息学奥赛一本通(1216:红与黑)
  8. Java-Android【2】-弹出对话框
  9. SQL73 考试分数(二)
  10. Jar运行的几个方法
  11. iphone开发中图像处理相关要点
  12. 注解配置springMvc及向作用域中赋值
  13. ABP框架 - 授权
  14. Android学习资料整理:流行框架网站书籍推荐---博客推荐
  15. clone git 修改保存路径_SEO优化知识一般需要了解什么代码_学云网
  16. c语言输出宽度右对齐,输出宽度设置
  17. android 仿微信来电_仿MIUI、微信来电通知无法解决通知折叠到通知列表
  18. 510cms渗透过程,挂马并提权
  19. 新浪微博用户密码泄露 经部分用户验证为真
  20. gzip and deflate

热门文章

  1. 【音视频】srs直播平台搭建
  2. 淘宝Tanx_bidding.proto
  3. Linux vi、vim使用手册
  4. 怎么来解决GIS表转Excel超了65535的最大行限制
  5. 浪潮x86服务器芯片,浪潮七款服务器全面支持45NM
  6. 手机页面底部浮动的按钮
  7. Python超时机制两种办法
  8. H5 Canvas 垂直箭头绘制
  9. 成都首秀,体验身边的AI——2019京东人工智能大会
  10. 盛夏来一杯温热红茶,淡淡茶香解暑去乏