罕见的又改完了。

T1 神炎皇


吸取昨天三个出规律的教训,开场打完T2 20pts直接大力打表1h。

但怎么说呢,我不懂欧拉函数。(其实exgcd都忘了 于是只看出最大平方因子,不得不线性筛,爆拿60

正解又是看不懂的东西,取a和b的gcd d,把a,b同除d得到A,B,很容易想到(但好像不太容易证)A+B与AB互质。

那么要保证(A+B)d|ABd2,就要使(A+B)|d。又因为(A+B)d<n,所以(A+B)<根号n。

直接枚举A与B的和k,可以知道符合互质的AB数对有φ(k)对,d有n/k2对,相乘后累加即可。

code:

 1 #include<bits/stdc++.h>
2 #define debug exit(0)
3 #define int long long
4 using namespace std;
5 const int NN=2e7+5;
6 int n,N,pri[NN],phi[NN],cnt,ans;
7 bool vis[NN];
8 inline int read(){
9 int x=0,f=1;
10 char ch=getchar();
11 while(ch<'0'||ch>'9'){
12 if(ch=='-') f=-1;
13 ch=getchar();
14 }
15 while(ch>='0'&&ch<='9'){
16 x=(x<<1)+(x<<3)+(ch^48);
17 ch=getchar();
18 }
19 return x*f;
20 }
21 void write(int x){
22 if(x<0) putchar('-'), x=-x;
23 if(x>9) write(x/10);
24 putchar(x%10+'0');
25 }
26 void getphi(){
27 phi[1]=1;
28 for(int i=2;i<=N;i++){
29 if(!vis[i]) pri[++cnt]=i, phi[i]=i-1;
30 for(int j=1;j<=cnt&&pri[j]*i<=N;j++){
31 int now=pri[j]*i;
32 vis[now]=1;
33 if(i%pri[j]) phi[now]=phi[i]*(pri[j]-1);
34 else{ phi[now]=phi[i]*pri[j]; break; }
35 }
36 }
37 }
38 signed main(){
39 n=read(); N=sqrt(n);
40 getphi();
41 for(int i=2;i<=N;i++) ans+=phi[i]*(n/(i*i));
42 write(ans); putchar('\n');
43 return 0;
44 }

T1

T2 降雷皇


树状数组求最长上升子序列,中间维护方案数,如果同一位置有同样长度的方案,就把它们方案数累加。

用线段树也可。还能用双指针,因为fi相等的i电阻单调递减。

code:

 1 #include<bits/stdc++.h>
2 #define debug exit(0)
3 using namespace std;
4 const int NN=1e5+5,p=123456789;
5 int n,type,maxr,r[NN],res;
6 struct node{
7 int len,sum;
8 }s[NN];
9 inline node max(node a,node b){
10 if(a.len==b.len)
11 return (node){a.len,(a.sum+b.sum)%p};
12 else return a.len>b.len?a:b;
13 }
14 inline int read(){
15 int x=0,f=1;
16 char ch=getchar();
17 while(ch<'0'||ch>'9'){
18 if(ch=='-') f=-1;
19 ch=getchar();
20 }
21 while(ch>='0'&&ch<='9'){
22 x=(x<<1)+(x<<3)+(ch^48);
23 ch=getchar();
24 }
25 return x*f;
26 }
27 void write(int x){
28 if(x<0) putchar('-'), x=-x;
29 if(x>9) write(x/10);
30 putchar(x%10+'0');
31 }
32 inline int lowbit(int x){ return x&(-x); }
33 inline void insert(int pos,node v){
34 while(pos<=maxr){
35 s[pos]=max(s[pos],v);
36 pos+=lowbit(pos);
37 }
38 }
39 inline node query(int pos){
40 node res=(node){0,0};
41 while(pos){
42 res=max(res,s[pos]);
43 pos-=lowbit(pos);
44 }
45 return res;
46 }
47 void work(){
48 for(int i=1;i<=n;i++){
49 node nows=query(r[i]-1);
50 nows.len++;
51 if(nows.len==1) nows.sum++;
52 insert(r[i],nows);
53 }
54 node ans=query(maxr);
55 write(ans.len); putchar('\n');
56 if(type) write(ans.sum), putchar('\n');
57 }
58 signed main(){
59 n=read(); type=read();
60 for(int i=1;i<=n;i++) r[i]=read(), maxr=max(maxr,r[i]);
61 work();
62 return 0;
63 }

T2

T3 幻魔皇


树上全是菲波那契,再次在T3大力分类讨论。

考虑点对的LCA,LCA为点对中白点时可以直接用菲波那契求,根节点单算。

LCA为黑点时考虑黑点的两个子树,黑点的白色儿子单算。

预处理黑点为LCA,考虑最大深度为i中距离为j的点对fi,j,一波计算出解。

code:

 1 #include<bits/stdc++.h>
2 #define debug exit(0)
3 #define int long long
4 using namespace std;
5 const int NN=5e3+5,p=123456789;
6 int n,fib[NN],ans[NN<<1],f[NN][NN<<1];
7 inline int read(){
8 int x=0,f=1;
9 char ch=getchar();
10 while(ch<'0'||ch>'9'){
11 if(ch=='-') f=-1;
12 ch=getchar();
13 }
14 while(ch>='0'&&ch<='9'){
15 x=(x<<1)+(x<<3)+(ch^48);
16 ch=getchar();
17 }
18 return x*f;
19 }
20 void write(int x){
21 if(x<0) putchar('-'), x=-x;
22 if(x>9) write(x/10);
23 putchar(x%10+'0');
24 }
25 signed main(){
26 n=read(); fib[1]=fib[2]=1;
27 for(int i=3;i<=n;i++) fib[i]=(fib[i-1]+fib[i-2])%p;
28 for(int i=2;i<=n;i++){
29 for(int j=1;j<=n*2;j++) (f[i][j]+=f[i-1][j])%=p;
30 for(int j=3;j<=n;j++) (f[max(i,j)][i+j]+=fib[i-1]*fib[j-2]%p)%=p;
31 }
32 for(int i=2;i<=n;i++){
33 for(int j=5;j<=2*(n-i);j++) (ans[j]+=fib[i-1]*f[n-i][j]%p)%=p;
34 for(int j=i+2;j<=n;j++) (ans[j-i+1]+=fib[i-1]*fib[j-i-1]%p)%=p;
35 for(int j=i+2;j<=n;j++) (ans[j-i]+=fib[j-i-1]*fib[i-2]%p)%=p;
36 }
37 for(int i=3;i<=n;i++) (ans[i-1]+=fib[i-2])%=p;
38 for(int i=1;i<=2*n;i++)
39 write(ans[i]), putchar(' '); putchar('\n');
40 return 0;
41 }

T3

2021.7.28考试总结[NOIP模拟26]的更多相关文章

  1. 2021.9.28考试总结[NOIP模拟64]

    T1 三元组 发现确定\(b,c\)的情况下,\(a\)的值域是连续的.确定\(b\)后\(a+b\)的取值是\([1+b,b+b]\).树状数组维护对每个\(b\)可行的\(c\). 注意取模后取值 ...

  2. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  3. 2021.9.13考试总结[NOIP模拟52]

    T1 路径 考虑每一位的贡献,第$i$位每$2^i$个数会变一次,那么答案为$\sum_{i=1}^{log_2n} \frac{n}{2^i}$. $code:$ 1 #include<bit ...

  4. 2021.8.11考试总结[NOIP模拟36]

    T1 Dove玩扑克 考场并查集加树状数组加桶期望$65pts$实际$80pts$,考后多开个数组记哪些数出现过,只扫出现过的数就切了.用$set$维护可以把被删没的数去掉,更快. $code:$ 1 ...

  5. 2021.7.29考试总结[NOIP模拟27]

    T1 牛半仙的妹子图 做法挺多的,可以最小生成树或者最短路,复杂度O(cq),c是颜色数. 我考场上想到了原来做过的一道题影子,就用了并查集,把边权排序后一个个插入,记录权值的前缀和,复杂度mlogm ...

  6. 2021.7.15考试总结[NOIP模拟16]

    ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...

  7. [考试总结]noip模拟26

    首先看到这样中二的题目心头一震.... 然而发现又是没有部分分数的一天. 然而正解不会打.... 那还是得要打暴力. 但是这套题目有两个题目只有一个参数. 所以... (滑稽).jpg 然后我就成功用 ...

  8. 2021.9.14考试总结[NOIP模拟53]

    T1 ZYB和售货机 容易发现把每个物品都买成$1$是没有影响的. 然后考虑最后一个物品的方案,如果从$f_i$向$i$连边,发现每个点有一个出度多个入度,可以先默认每个物品都能买且最大获利,这样可以 ...

  9. 2021.9.12考试总结[NOIP模拟51]

    T1 茅山道术 仔细观察发现对于每个点只考虑它前面第一个与它颜色相同的点即可. 又仔细观察发现对一段区间染色后以这个区间内点为端点的区间不能染色. 于是对区间右端点而言,区间染色的贡献为遍历到区间左端 ...

随机推荐

  1. Lambda表达式——注重过程的编程思想

    一.使用匿名内部类的匿名对象创建线程和Lambda表达式写法 Lambda表达式写法不用去定义一个Runable接口的实现类: 二.方法入参是一个接口或者接口的实现类 三.对某个类的一些对象实例进行排 ...

  2. Redis核心原理与实践--列表实现原理之ziplist

    列表类型可以存储一组按插入顺序排序的字符串,它非常灵活,支持在两端插入.弹出数据,可以充当栈和队列的角色. > LPUSH fruit apple (integer) 1 > RPUSH ...

  3. matlab函数randperm()

    randperm()会返回一个行向量. 1,randperm(n) 输出一个1×n的矩阵,元素值为1~n的整数,每个元素只出现一次,元素的顺序是随机的. 2,randperm(n,k) 输出一个1×k ...

  4. js特效代码-onmouseover/onclick 改变标签(背景)颜色

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. python FastAPI 初接触

    先吹一波: 原来写接口可以这么简单!!! 简单到没朋友 . 中文官网:https://fastapi.tiangolo.com/zh/tutorial/header-params/ 且天然支持异步处理 ...

  6. 【转载】在Windows终端中显示UTF-8字符

    一直苦恼于如何在Windows终端中显示UTF-8字符的问题.比如,在MySQL命令行下,如果数据库的编码是UTF-8,那么,在查询数据库的时候,里面的中文都会变成乱码.今天半无意的搜索了一下,结果发 ...

  7. P4091-[HEOI2016/TJOI2016]求和【斯特林数,NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/P4091 题目大意 给出\(n\),求 \[\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatr ...

  8. P5445-[APIO2019]路灯【set,树状数组套线段树】

    正题 题目链接:https://www.luogu.com.cn/problem/P5445 题目大意 \(n+1\)个点,\(i\)和\(i+1\)个点之间有一条边,\(q\)个操作 断开/连接第\ ...

  9. P3273-[SCOI2011]棘手的操作【线段树,并查集】

    正题 题目链接:https://www.luogu.com.cn/problem/P3273 题目大意 \(n\)个点有权值,要求支持操作 连接两个点 单点加权 联通块加权 全图加权 单点询问 联通块 ...

  10. 腾讯的表妹告诉我怎么学Python,今天就教我搭建Python环境和基本语法,我【码上开始】

    本文首发公众号:码上开始 环境准备 Pycharm Python3 window10/win7 安装 Python 打开Python官网地址 下载 executable installer,x86 表 ...