A本来想改到q<1e5,让你们预处理的,然后想了哈作为个逆元模板题吧= =,做不出来自行反思。

B贴个题面

因为只有一次机会,那么也就是两点分布期望E = p了,先说说大家的做法,先求出每个n的逆元保存,然后因为最大只会取到1e6,所以对0-1e6跑一遍每个数的倍数个数。复杂度O(N1/3),代码如下

 #include <iostream>
using namespace std;
typedef long long ll;
const int maxn = ;
ll sum[maxn+];
ll sqr3(ll n){
int l=,r=maxn+;
while(l+<r){
ll mid = (l+r)>>;
if(mid*mid*mid>n)
r=mid;
else l=mid;
}
return l;
}
void exgcd(const ll a, const ll b, ll &g, ll &x, ll &y) {
if (!b) g = a, x = , y = ;
else exgcd(b, a % b, g, y, x), y -= x * (a / b);
} ll inv(const ll num,const ll MOD) {
ll g, x, y;
exgcd(num, MOD, g, x, y);
return ((x % MOD) + MOD) % MOD;
}
ll fast_mult(ll x,ll y,ll mod) {
ll tmp=(x*y-(ll)((long double)x/mod*y+1.0e-8)*mod);
return tmp< ? tmp+mod : tmp;
}
int main() {
for(ll i=;i<=maxn;i++){
sum[i]=sum[i-]+((i+)*(i+)*(i+)-)/i-(i*i*i-)/i;
}
int T;
cin>>T;
while(T--){
ll n,mod;
cin>>n>>mod;
ll temp=sqr3(n);
ll ans=sum[temp-]+n/temp-(temp*temp*temp-)/temp;
ans=fast_mult(ans%mod,inv(n,mod)%mod,mod);
cout<<ans<<endl;
}
return ;
}

然后我的做法是

这里对每一步做一个解释 = =,大佬可以略过,[S]代表艾弗森约定,就是S为真则值为1,否则值为0。

对于第一个等号,就是求这些赢点的个数和。

对于第二个等号,用x来代表k的立方根的底。

对于第三个等号,第一个艾弗森约定应该不难理解,底肯定会小于等于原值。

对于第四个等号,这里第一个和式是处理边界,这里x=N的立方根的底(写错了,懒得重新改了)。这部就是把边界单独处理了。

对于第五个等号,讨论y的取值。

对于第六个等号,换底,然后是对y求和.

后面的同上,讨论取值求和。

最后就可以求得一个公式,因为要求立方根的底,建议用牛顿迭代求解。

最终的复杂度就是O(QlogN)。代码如下

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int q;
ll n,Mod,w;
double newton(double x){
double x1, x2;
if (x == 0.0) return 0.0;
x1 = x;
x2 = (2.0 * x1 + x / (x1 * x1)) / 3.0;
while (fabs((x2 - x1) / x1) >= 1E-) {
x1 = x2;
x2 = (2.0 * x1 + x / (x1 * x1)) / 3.0;
}
return x2;
} void extgcd(ll a,ll b,ll& x,ll& y){
if(!b){
x = ;
y = ;
return ;
}
extgcd(b,a%b,y,x);
y -= x*(a/b);
} ll inverse(ll a,ll n){
ll x,y;
extgcd(a,n,x,y);
return (x+n)%n;
} ll qmul(ll a,ll b) {
ll ans = ;
while (b) {
if (b&) {
ans = (ans+a)%Mod;
}
a = (a+a)%Mod;
b >>= ;
}
return ans;
} void solve() {
cin >> n >> Mod;
ll k = newton(n);
ll w = n/k - ;
if (k&) {
w += k*k/ + *k/ + ;
} else {
w += k/*k + k/*;
}
//cout << k << ' ' << w << endl;
ll ans = qmul(w%Mod,inverse(n,Mod));
cout << ans << endl;
} int main() {
ios_base::sync_with_stdio();
cin >> q;
while (q--) {
solve();
}
return ;
}

太伤心了= =,被离线算法吊打。

FJUT2019暑假周赛三部分题解的更多相关文章

  1. FJUT2019暑假周赛一题解

    A.排队问题*-* 题意就是有长度为L的序列,每位的取值可以是'f'或者'm',问不包含'fff'和'fmf'的个数. 打表找规律 不难找出递推公式为F[n] = F[n-1] + F[n-3] + ...

  2. SICP第三章题解

    目录 SICP第三章题解 ex3-17 ex3-18 ex3-19 队列 ex3-21 ex3-22 ex3-24 ex3-25 3.4 并发:时间是一个本质问题 ex3-38 3.4.2 控制并发的 ...

  3. Codeforces Round #524 (Div. 2)(前三题题解)

    这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...

  4. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)

    这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...

  5. FJUT2019暑假第二次周赛题解

    A 服务器维护 题目大意: 给出时间段[S,E],这段时间需要人维护服务器,给出n个小时间段[ai,bi],代表每个人会维护的时间段,每个人维护这段时间有一个花费,现在问题就是维护服务器[S,E]这段 ...

  6. 暑假训练round 3 题解

    今天做题运气出奇的好,除了几处小错误调试之后忘记改掉了……最后还AK了……虽然题目不难,学长也说是福利局,但是对个人的鼓励作用还是挺大的……至此暑假训练就结束了,也算没有遗憾……. 题解如下: Pro ...

  7. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  8. BestCoder Round #86 二,三题题解(尺取法)

    第一题太水,跳过了. NanoApe Loves Sequence题目描述:退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nn ...

  9. HDU 6787 Chess 2020百度之星 初赛三 T5 题解 dp

    传送门:HDU 6787 Chess Problem Description 你现在有一个棋盘,上面有 n 个格子,格子从左往右,1,-,n 进行标号.你可以在棋盘上放置恰好 m 个传送器,并且对于每 ...

随机推荐

  1. c# NPOI 导出23万条记录耗时12秒

    先上测试代码: string connectionString = "Server=localhost;Initial Catalog=******;User ID=sa;Password= ...

  2. Unable to load template file 'rj\ThinkPHP/Tpl/dispatch_jump.tpl'----thinkphp3.2.3

    Unable to load template file 'rj\ThinkPHP/Tpl/dispatch_jump.tpl'----thinkphp3.2.3 1.报错原因:将thinkphp默认 ...

  3. python学习之并发编程(理论部分)

    第一章 操作系统 管理控制协调计算机中硬件与软件的关系. 操作系统的作用? 第一个作用: 将一些对硬件操作的复杂丑陋的接口,变成简单美丽的接口. open函数. 第二个作用: 多个进程抢占一个(CPU ...

  4. mssql server master 数据库还原

    今天想试一下master数据库还原,在进入单用户模式的时候,在命令行输入sqlserver.exe -c -f -m结果显示 'sqlserver.exe' 不是内部或外部命令,也不是可运行的程序或批 ...

  5. 【资源共享】eBook分享大集合

    传送门:[GitHub] 欢迎各位指点,要是能补充更是感激不尽. 主要以IT领域经典书籍收藏,以备不时之需,不一定都能看完,权且当做收藏好玩. [x] 表示文件大小超过100M(LFS). 服务器系统 ...

  6. U盘制作启动盘后空间容量变小解决方法

    WinAll的快速恢复方式: 0.windows键+R(调出运行窗口)输入:diskpart回车(调出磁盘管理器) 1.输入:list disk回车(从大小容量确定目标U盘的盘符X) 2.输入:sel ...

  7. js 设计模式——状态模式

    状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 简单的解释一下: 第一部分的意思是将状态封装成独立的类,并将请求委托给当前的状态对象,当对象的内部状态改变时,会带来 ...

  8. shiro 定义realm

    public class UserRealm extends AuthorizingRealm { private UserService userService = new UserServiceI ...

  9. js设置,取得,清除cookie

    //取得cookie function getCookie(name) {  var nameEQ = name + "=";  var ca = document.cookie. ...

  10. Scrum 工件: 速度图和燃尽图

    速度图 Velocity用于衡量scrum团队持续提供业务价值的速度,可以采用历史估算的方法,衡量一个又一个sprint的速度.团队通过跟踪完成达到自己团队完成标准的故事点的数量,就可以基于相对点值对 ...