2019 IEEEXtreme 13.0 题解记录
比赛时间 2019.10.19 8:00 - 2019.10.20 8:00
比赛网站 https://csacademy.com/ieeextreme13
// 连续24小时做题真的是极限体验
// 刚比完躺了醒来就会做压轴题了,吐血 = =
Alfa Pool
题目大意
有一种比赛的计分规则为:相邻得分下一次将加倍,两次连续不得分则终止比赛,每次从1开始得分。计算有多少种方式使总分为B, B = 5 的全部情况如下表。询问包含 N 组,每次求总分为 \(B_i\) 的方案数对 1e9+7 取模的结果。
1 X 1 X 1 X 1 X 1 X X
X 1 X 1 X 1 X 1 X 1 X X
1 2 X 1 X 1 X X
X 1 2 X 1 X 1 X X
1 X 1 2 X 1 X X
X 1 X 1 2 X 1 X X
1 X 1 X 1 2 X X
X 1 X 1 X 1 2 X X
数据范围
- \(1≤N≤10^4\)
- \(0 \leq B_i≤10^5\)
解题思路
分别尝试直接爆搜,分块爆搜(每一块得分为 \(2^k -1\)) 都 TLE ,只通过了一组测试。
由于答案没有递推性质,打表找不出规律,队友通过OEIS大法找到了该问题的数列,但求法太复杂,遂放弃。
注意到 B 不超过 1e5,最大的一部分得分为 \(2^{16} - 1=65535\),那么全部能选的分数只有 16 种可能。
考虑设 dp[n][k] : 总得分为 n 最后一部分得分为 \(2^k-1\) 的方案数(1<=k<=16),那么就可以写出状态转移方程了。
const int p[17] = {0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};
// Ans[n][0] : 总得分为 n 的全部方案数
Ans[i][0] += Ans[i][j] (1<=j<=16)
Ans[i+p[j]][j] += Ans[i][0] (1<=j<=16)
// 答案即为 2*Ans[B][0]
AC代码
#include<iostream>
#include<cstdio>
using namespace std;
const int mod = 1e9+7;
const int p[17] = {0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};
int Ans[100010][17];
// Ans[n][0] : ans[n]
void init() {
Ans[0][0] = 1;
for(int i=0;i<=100000;i++) {
for(int j=1;j<=16;j++) {
Ans[i][0] = (Ans[i][0] + Ans[i][j]) % mod;
}
for(int j=1;j<=16;j++) {
if(i+p[j]<=100000)
Ans[i+p[j]][j] = (Ans[i+p[j]][j] + Ans[i][0]) % mod;
}
}
}
int main() {
init();
int n; cin>>n;
while(n--) {
int B;
scanf("%d", &B);
if(B==0) printf("1\n");
else
printf("%d\n", 2*Ans[B][0]%mod);
}
return 0;
}
Ranged Alfa Pool
该题与上一题为最后两小时出的压轴题,题目背景一致,条件改为求得分在一个区间段内的方案数。同时 \(B_i\) 加强到 \(10^6\) 上限,时限 2s,能够直接才用上题思路,预处理前缀和即可。
Googolplex
题目大意
已知 \(googolplex = 10^{10^{100}}\) , 给定 X,Y,求最小的 \(t = (X^{googolplex+T}) \mod 10^Y\) 。
其中
- \(1≤N≤20\)
- \(1 \leq X \leq 10^8\)
- \(1 \leq Y \leq 9\)
- \(0 \leq T \leq 86399\)
解题思路
显然利用欧拉降幂公式直接算,枚举 T 找到最小值。
坑点:取余过程中会出现 0,那么 \(a ^ 0 = 1\)则会出现错误,本意为求 \(a ^ {phi(p)}\) 。
AC代码
// 幸亏没有罚时,经历了一路 TLE - TLE - … - WA - WA … - AC 的艰难debug历程,数论不好我的锅 T_T
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll base[10] = {1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
ll expp[10] = {2,5,40,400,4000,40000,400000,4000000,40000000,400000000};
ll qpow(ll a, ll n, ll p) {
ll res = 1;
while(n) {
if(n&1) res = res * a % p;
a = a*a % p;
n >>= 1;
}
return res;
}
int main() {
int t; cin>>t;
while(t--) {
ll X, Y;
scanf("%lld %lld", &X, &Y);
ll a = qpow(X, expp[Y], base[Y]), b = 1;
Y = base[Y];
ll ans = 2*Y;
for(int T=0;T<=86399;++T) {
ans = min(ans, a*b%Y);
b = (b*X)%Y;
}
printf("%lld\n", ans);
}
return 0;
}
/*
// 初始版本正确写法
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll base[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
ll qpow(ll a, ll n, ll p) {
ll res = 1;
while(n) {
if(n&1) res = res * a % p;
a = a*a % p;
n >>= 1;
}
return res;
}
ll phi(ll x) {
ll res = x;
for(ll i=2;i*i<=x;i++) {
if(x%i==0) {
res = res/i*(i-1);
while(x%i==0) x/=i;
}
}
if(x>1) res = res/x *(x-1);
return res;
}
ll cal(ll x, ll p) {
ll ph1 = phi(p);
ll ph2 = phi(ph1);
ll ten_100 = qpow(10, 100, ph2);
if(ten_100==0) ten_100 += ph2; // 不写就会WA!!!
ll ten_ten_100 = qpow(10, ten_100, ph1);
if(ten_ten_100==0) ten_ten_100 += ph1; // 不写就会WA!!!
return qpow(x, ten_ten_100, p);
}
int main() {
int t; cin>>t;
while(t--) {
ll X, Y;
scanf("%lld %lld", &X, &Y);
Y = base[Y];
ll a = cal(X, Y), b=1;
ll ans = 2*Y;
for(ll T=0;T<=86399;T++) {
// b = qpow(X, T, Y); TLE
ans = min(ans, a*b%Y);
b = b*X % Y;
}
printf("%lld\n", ans);
}
return 0;
}
*/
Impact Factor 影响因子
2019 IEEEXtreme 13.0 题解记录的更多相关文章
- 2019 IEEEXtreme 13.0 Impact Factor 影响因子
Impact Factor 题目大意 顾名思义,求影响因子.有 n 行 json 数据,第一行为期刊信息,后面为出版商出版的文章信息. 输入输出 点击查看详细 输入: 6 {"publi ...
- percona-toolkit 3.0.13 简单安装记录
percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...
- IEEEXtreme 10.0 - Inti Sets
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Inti Sets 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank.c ...
- IEEEXtreme 10.0 - Food Truck
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme10.0 - Food Truck 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank.c ...
- IEEEXtreme 10.0 - Always Be In Control
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Always Be In Control 题目来源 第10届IEEE极限编程大赛 https://www.h ...
- IEEEXtreme 10.0 - Flower Games
这是 meelo 原创的 IEEEXtreme极限编程比赛题解 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank.com/contests/ieeextreme-c ...
- 每日一练ACM 2019.04.13
2019.04.13 第1002题:A+B Proble Ⅱ Problem DescriptionI have a very simple problem for you. Given two in ...
- IEEEXtreme 极限编程大赛题解
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 IEEEXtreme全球极限编程挑战赛,是由IEEE主办,IEEE学生分会组织承办.IEEE会员参与指导和监督的.IEEE学生会员以团队 ...
- NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)
转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-we ...
随机推荐
- 深入浅出 Vue.js 第九章 解析器---学习笔记
本文结合 Vue 源码进行学习 学习时,根据 github 上 Vue 项目的 package.json 文件,可知版本为 2.6.10 解析器 一.解析器的作用 解析器的作用就是将模版解析成 AST ...
- 兼容软件,Wine安装,Crossover安装,
EL6 (RHEL6 and SL6) Required packages for proper building of 32-bit Wine on 64-bit EL6 yum install - ...
- WebKit资源
WebKit 资料搜集 1 what is webkit? WebKit 是一个开源浏览器网页排版引擎,与之相应的引擎有Gecko(Mozilla,Firefox 等使用的排版引擎)和Trident( ...
- tomcat 相关异常
端口没有被占用却提示Several ports (8005, 8080, 8009) required by Tomcat??? 解决办法:1.运行cmd进入命令行界面:2.运行命令: netsh w ...
- 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_自定义控件--主要用于画面拖拽效果)
如题,需求:在某个图片上用户可以手动指定位置. 如下: 中心思想:仿照Visual Studio工具中的控件的做法 如何仿照呢? 1.自定义的控件类继承System.Windows.Forms.Con ...
- 原型对象(JS中的父类)
原型 prototype 我们所创建的每一个函数,解析器都会向函数中添加 一个属性prototype ,这个属性对应的对象就是我们所谓的原型对象 判断函数中是否含有prototype属性,有则返回 ...
- Linux 进程间通信 有名管道(fifo)
有名管道特点: 1)无名管道只能用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围 2)有名管道可以使互不相关的两个进程互相通信. 3)有名管道可以通过路径名来指出,并且在文件系统中可见,但内容 ...
- Hadoop–Task 相关
在MapReduce计算框架中,一个应用程序被划分为Map和Reduce两个计算阶段.他们分别由一个或多个Map Task 和Reduce Task组成. Map Task: 处理输入数据集合中的一片 ...
- vue $emit 子传父
我们使用子组件传递值给父组件使用 $emit 代码 <!DOCTYPE html> <html lang="en"> <head> <me ...
- MyBatis是如何使用的?
MyBatis前身世iBatis本是Apache的一个开源项目,2010年这个项目迁移到google code并改名为MyBatis. 一.高级软件介绍 1.JDK 8 2.Eclipse mars2 ...