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. 基于SpringBoot从零构建博客网站 - 分页显示文章列表功能

    显示文章列表一般都是采用分页显示,比如每页10篇文章显示.这样就不用每次就将所有的文章查询出来,而且当文章数量特别多的时候,如果一次性查询出来很容易出现OOM异常. 后台的分页插件采用的是mybati ...

  2. 剑指offer总结一:字符、数字重复问题

    问题1:字符串中第一个不重复的字符 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是" ...

  3. Linux系统@根目录下各目录作用归纳图

  4. 转载-lambda sort

    原文:https://blog.csdn.net/qq_27127145/article/details/83930498 版权声明:本文为博主原创文章,转载请附上博文链接! import com.g ...

  5. Badboy - 导出脚本,用于JMeter并发测试

    参考: http://leafwf.blog.51cto.com/872759/1141011 http://www.51testing.com/html/00/130600-1367743.html ...

  6. SPOJ - QTREE4 Query on a tree IV 边分治

    题目传送门 题意:有一棵数,每个节点有颜色,黑色或者白色,树边有边权,现在有2个操作,1修改某个点的颜色, 2询问2个白点的之前的路径权值最大和是多少. 题解: 边分治思路. 1.重构图. 因为边分治 ...

  7. lightoj 1037 - Agent 47(状压dp)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1037 #include <iostream> #include & ...

  8. codeforces 816 E. Karen and Supermarket(树形dp)

    题目链接:http://codeforces.com/contest/816/problem/E 题意:有n件商品,每件有价格ci,优惠券di,对于i>=2,使用di的条件为:xi的优惠券需要被 ...

  9. codeforces 811 D. Vladik and Favorite Game(bfs水题)

    题目链接:http://codeforces.com/contest/811/problem/D 题意:现在给你一个n*m大小的图,你输出一个方向之后,系统反馈给你一个坐标,表示走完这步之后到的位子, ...

  10. CSS动效集锦,视觉魔法的碰撞与融合(二)

    引言 长久以来,我认识到.CSS,是存在极限的.正如曾经替你扛下一切的那个男人,也总有他眼含热泪地拼上一切,却也无法帮你做到的事情,他只能困窘地让你看到他的无能为力,怅然若失. 然后和曾经他成长的时代 ...