罕见的又改完了。

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. Servlet3.0注解配置访问路径和urlParttern配置

    一.Servlet用注解配置访问路径 二.IDEA的tomcat相关配置 其中,第一点的配置文件,直接在IDEA的可视化操作界面修改就可以改掉配置文件中内容: 三.urlParttern配置 其中,* ...

  2. 比年轻更年轻,快看能否接棒B站?

    撰文 |懂懂 编辑 | 秦言 来源:懂懂笔记 背靠超新Z世代,快看能否接棒B站? 国漫什么时候能追上日漫? 国漫作者真能挣到钱吗? 国漫什么时候才能走向世界? 这是中国漫画从业者的"灵魂三问 ...

  3. SpringBoot自定义初始化Bean+HashMap优化策略模式实践

    策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 传统的策略模式一般是创建公共接口.定义公共方法-->然后创建实体类实现公共接口.根据各自的 ...

  4. MySQL-技术专题-MySQL主从架构以及[半同步机制]模式大全

    MySQL的主从复制 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的. 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步. 复制的功能不仅有利于构建高 ...

  5. Elaticsearch基础概念

    概述 elaticsearch是一个分布式的搜索引擎,它可以实现各种复杂的数据类型实现近实时的搜索功能,无论是结构化还是非结构化的数据,都能使用elaticsearch存储并且可以快速搜索.elati ...

  6. 测试开发【提测平台】分享10-Element UI抽屉和表单校验&增改接口合并实现应用管理

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 开篇说个小讨论,一个群里聊天聊到关于更新篇章的长度,是小篇幅多次,还是每次按照一个小完整的功能,我个人的是按照后种来的,主要的思考就是希望 ...

  7. 整理STC延时函数时遇到的玄学问题

    void Delay { unsigned char i, j; i = 11; j = 190; do { while (--j); } while (--i); } void Delay { un ...

  8. PHP中用+号连接数组的结果是?

    我们在开发中,有时候会将两个数组合并连接起来,这个时候要注意了,千万不要偷懒直接使用+号哦,为什么呢?我们看看以下代码: $a = [1, 2]; $b = [4, 5, 6]; $c = $a + ...

  9. PHP 7.4 checking for libzip 和 failed to open error_log 问题

    来源: https://hqidi.com/154.html 两个深坑,成年阿根廷龙踩出来的坑,网上都没找到解决方法,都是自己摸索出来的. 前面一切顺利: yum install -y libxml2 ...

  10. 『Python』优雅的记录日志——loguru

    1. 安装 pip install loguru 2. 初识 from loguru import logger logger.debug("This is a debug..." ...