ACM/ICPC Moscow Prefinal 2019 趣题记录
### Day1:
### **Problem C:**
设$k_i$为$[A, B]$中二进制第$i$位是1的数的个数。 给出$k_0 \cdots k_{63}$, 求出$[A, B]$.
**Solution:**
从高位开始考虑。找到最大的$m, k_m \neq 0$, 那么只有2种情况:
- $A \lt 2^m \leq B$: 显然只可能$B = 2^m+k_m-1, A = B-2k_0\ or\ A = B-2k_0-1$ . check一下就好了。
- $A, B \ge 2^m$ : 转化为$[A-2^m, B-2^m]$, 注意还有一个额外限制$B-A+1=k_m$.
### **Problem** E:
给出整系数多项式$F(x)$, 项数 <= 1000, 求最小的正整数$x_0, F(x_0) = F'(x_0) = 0$.
**Solution:**
设$minF$是$F(x)$次数最小的项的系数,则有$x_0^2\ |\ minF$
证明:
$F(x_0) = 0 \rightarrow F(x) = (x-x_0)*G(x) \rightarrow minF = -x_0minG \rightarrow x_0 \ | \ minF$
$F'(x_0) = 0 \rightarrow F(x) = (x-x_0)^2*G(x) \rightarrow minF = x_0^2minG \rightarrow x_0^2 \ | \ minF$
只要想办法找到F(x)的所有平方因子然后取几个随机模数check一下即可。
题目保证$F(x)$系数 $<= 10^{15}$, 可以筛掉$minF \leq10^5$的质因子,然后只要考虑剩下的数是完全平方数的情况,就可以枚举出所有平方因子了。
### **Problem I:**
给出R个字符串,填入R*C的格子里,第i个字符串要填到第i行,如下图:
I_C_P_C_
ICPC____
_IC___PC
两个格子相邻当且仅当共边,相邻格子填入的字母一样得1分,要使得分最大。 R<=128, C<=8.
**Solution:**
- 轮廓线DP,记录轮廓线上每个位置是否填了字母,就可以算出当前dp的格子应该填的是当前字符串的第几个字符。
## Day3:
### **Problem D:**
两个人打牌,任意两张不同种类的牌有克制关系,每次两人同时出1张牌,如果相同都死,不同的话根据克制关系厉害的牌收回,弱的牌死掉。最终如果两个人都没牌,各得0.5分,否则有牌的人得1分,没牌的人0分。求期望得分。
**Solution:**
涉及博弈论的混合策略博弈里纳什均衡的概念。可以看https://doc.mbalib.com/view/f28a788b169d786df80d9c19ed6d4326.html来学习。 因为本题是零和博弈,可以转化为经典矩阵游戏,利用单纯形来解决。当然外层需要套一个dp,dp[ S ] [ T ] 表示两个人的牌集合分别是S和T时先手的期望得分,转移对应一个|S|*|T|的矩阵游戏。
### Problem I:
求$F_p$ 域下$n$阶irreducible monic多项式的数量mod $m$。
**Solution:**
抽象代数题。
以下多项式均默认monic。
最优美的解法是利用定理:
给定质数$p$和$n$,$F_p $所有度是n的约数的不可约多项式的乘积等于$x^{p^n}-x$
设$N(n)$ 为所有度为n的不可约多项式个数。
则根据上面的定理等式两边度相同,可以推出$\sum_{d\ |\ n}dN(d) = p^n$
莫比乌斯反演一下就可以求出$N(n)$.
## Day5:
**Problem J:**
求把排列A变成排列B置换环个数。
$AB$都是矩阵,$A_{ij} = (i-1)*m+j, B_{ij} = (j-1)*n+i$.
**Solution:**
首先把矩阵一行一行接起来变成数组,然后所有标号换成从0开始。
则$x=i*m+j$
$P_x=j*n+i$
$P_x \equiv nx (mod \ mn-1)$
然后随便搞搞就可以了。
## Day6:
Problem A:
给出正整数A, B.
只能做4种操作:A+=A, B+=B, A+=B, B+=A. 要求3000步内使A=B。
Solution:
首先如果某个操作序列可以让$(kx, ky)$变成$(kz, kz)$, 也一定可以让$(x,y)$变成$(z, z)$.
如果$A,B$都是偶数,可以都除以2,否则如果一奇一偶,可以让奇数自己加自己一次,然后就可以都除以2. 因此每次至少有一个数除以2.
如果都是奇数,大的加小的一次,然后小的自己加自己一次,然后就可以都除以2. 这种操作的结果会导致两数的差除以2.
因此大概$O(logV)^2$ 步就可以了。
ACM/ICPC Moscow Prefinal 2019 趣题记录的更多相关文章
- Yahoo Programming Contest 2019 补题记录(DEF)
D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...
- 2013 ACM/ICPC 长沙网络赛J题
题意:一个数列,给出这个数列中的某些位置的数,给出所有相邻的三个数字的和,数列头和尾处给出相邻两个数字的和.有若干次询问,每次问某一位置的数字的最大值. 分析:设数列为a1-an.首先通过相邻三个数字 ...
- hdu 4435 第37届ACM/ICPC天津现场赛E题
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题目:给出N个城市,从1开始需要遍历所有点,选择一 ...
- 2013 ACM/ICPC 长春网络赛E题
题意:给出一个字符串,要从头.尾和中间找出三个完全相等的子串,这些串覆盖的区间互相不能有重叠部分.头.尾的串即为整个字符串的前缀和后缀.问这个相同的子串的最大长度是多少. 分析:利用KMP算法中的ne ...
- 2013 ACM/ICPC 长春网络赛F题
题意:两个人轮流说数字,第一个人可以说区间[1~k]中的一个,之后每次每人都可以说一个比前一个人所说数字大一点的数字,相邻两次数字只差在区间[1~k].谁先>=N,谁输.问最后是第一个人赢还是第 ...
- 2013 ACM/ICPC 南京网络赛F题
题意:给出一个4×4的点阵,连接相邻点可以构成一个九宫格,每个小格边长为1.从没有边的点阵开始,两人轮流向点阵中加边,如果加入的边构成了新的边长为1的小正方形,则加边的人得分.构成几个得几分,最终完成 ...
- 2013 ACM/ICPC 长沙现场赛 A题 - Alice's Print Service (ZOJ 3726)
Alice's Print Service Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is providing print ser ...
- 2013 ACM/ICPC 长沙现场赛 C题 - Collision (ZOJ 3728)
Collision Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge There's a round medal ...
- 2013 ACM/ICPC 杭州网络赛C题
题意:驴和老虎,在一个矩阵的两个格子里,有各自的起始方向.两者以相同的速度向前移动,前方不能走时驴总是向右,老虎总是向左.他们不能超出矩阵边界也不能走自己走过的格子(但可以走对方走过的格子).如果不能 ...
随机推荐
- mac本地搭建wordpress
1 下载安装最新的xampp 2 安装完成后,使用下面的命令开始运行 XAMPP.在终端下以系统管理员 root 的身份登录 管理员root身份登录 sudo su 使用命令启动XAMPP /Appl ...
- Android 如何添加一个新的时区
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- android回调函数
在我们进行android开发的时候,常常遇到一些回调函数,当中,我们最常常使用的回调就是,当我们对一个组件设置监听的时候,事实上就相对于设置的回调函数.比如: Button btn = (Button ...
- Vue 组件通信(子组件向父组件传递数据)
1.自定义事件 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="U ...
- TX2 ROS IDE开发环境配置
参考资料: http://www.mamicode.com/info-detail-1663827.html 基于Qt搭建ROS开发环境 https://blog.csdn.net/sbtxg/ ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境(转)
前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常 ...
- 使用Python SDK管理Azure Load Balancer
概述 下面将演示如何使用Python SDK管理中国区Azure Load balancer.关于Azure负载均衡器的详细功能介绍,请参考官方文档. Code Sample import os fr ...
- sql 数据类型 论可变长度字符串与定长性能差异(my sql版)
首先从字节上来说CHAR是定长,意思就是只要输入在我这个定长以下,不管是几个字符,它的实际占用空间都是CHAR定长的长度.而VARCHAR则相对来说会节省一点空间,比如:你VARCHAR的长度设为10 ...
- 关于new与=号创建对象的区别
(1)先定义一个名为str的对String类的对象引用变量:String str: (2)[在[栈]中查找有没有存放值为"abc"的地址,如果没有,则开辟一个存放字面值为" ...
- git教程,切换分支并拉去
进了目录切换分支: git checkout 5.1 切换完成后拉去分支为: git pull https://www.liaoxuefeng.com/wiki/0013739516305929606 ...