2021.7.28考试总结[NOIP模拟26]
罕见的又改完了。
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]的更多相关文章
- 2021.9.28考试总结[NOIP模拟64]
T1 三元组 发现确定\(b,c\)的情况下,\(a\)的值域是连续的.确定\(b\)后\(a+b\)的取值是\([1+b,b+b]\).树状数组维护对每个\(b\)可行的\(c\). 注意取模后取值 ...
- 2021.9.17考试总结[NOIP模拟55]
有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...
- 2021.9.13考试总结[NOIP模拟52]
T1 路径 考虑每一位的贡献,第$i$位每$2^i$个数会变一次,那么答案为$\sum_{i=1}^{log_2n} \frac{n}{2^i}$. $code:$ 1 #include<bit ...
- 2021.8.11考试总结[NOIP模拟36]
T1 Dove玩扑克 考场并查集加树状数组加桶期望$65pts$实际$80pts$,考后多开个数组记哪些数出现过,只扫出现过的数就切了.用$set$维护可以把被删没的数去掉,更快. $code:$ 1 ...
- 2021.7.29考试总结[NOIP模拟27]
T1 牛半仙的妹子图 做法挺多的,可以最小生成树或者最短路,复杂度O(cq),c是颜色数. 我考场上想到了原来做过的一道题影子,就用了并查集,把边权排序后一个个插入,记录权值的前缀和,复杂度mlogm ...
- 2021.7.15考试总结[NOIP模拟16]
ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...
- [考试总结]noip模拟26
首先看到这样中二的题目心头一震.... 然而发现又是没有部分分数的一天. 然而正解不会打.... 那还是得要打暴力. 但是这套题目有两个题目只有一个参数. 所以... (滑稽).jpg 然后我就成功用 ...
- 2021.9.14考试总结[NOIP模拟53]
T1 ZYB和售货机 容易发现把每个物品都买成$1$是没有影响的. 然后考虑最后一个物品的方案,如果从$f_i$向$i$连边,发现每个点有一个出度多个入度,可以先默认每个物品都能买且最大获利,这样可以 ...
- 2021.9.12考试总结[NOIP模拟51]
T1 茅山道术 仔细观察发现对于每个点只考虑它前面第一个与它颜色相同的点即可. 又仔细观察发现对一段区间染色后以这个区间内点为端点的区间不能染色. 于是对区间右端点而言,区间染色的贡献为遍历到区间左端 ...
随机推荐
- js判断是在移动端还是在pc端
function chatQQ3(){ if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { //移动端打开 ...
- Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类
一.Scanner类 1.除了八种基本数据类型,其他都是引用类型: 引用类型使用三步骤: 2.Scanner类 引用jdk提供的类,Scanner在java.util包下,不在java.lang包(S ...
- EXCEL中给包含某个字段的单元格所在行标注颜色
条件格式->新建规则->使用公式确定要设置格式的单元格 公式: =COUNTIF($A1,"*字符串*") 注意:通配符的使用.
- Android实现自动登录和记住密码
效果图: 在勾选自动登录后下次打开软件会直接跳过登录界面 代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate ...
- 使用 VSCode 开发调试 STM32 单片机尝试
使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...
- deecms栏目页调用自定义字段方法
{dede:arclist addfields='suoxu_jifen,shichang_jiage' typeid='13' row='15' channelid='3'} <li>& ...
- mapper-spring-boot-starter 主要作用是
今天是第一次接触到 这个场景启动器内心中真是一片的茫然,学习了这么长时间我居然还不知道有这个的存在今天好好查一查资料 参考资料(https://blog.csdn.net/crq1205/articl ...
- c++ 的学习 第二集函数的重载
1. 规则 函数名相同参数个数不同.参数类型不同.参数顺序不同 2. 注意 返回值类型与函数重载无关 调用函数时,实参的隐式类型转换可能会产生二义性 返回值类型与函数重载无关 什么意思? 返回 ...
- Dapr + .NET Core实战(八)服务监测
服务监测 分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高. Dapr 可观测性模块将服务监测与应用程序分离.它自动捕 ...
- php链接mysql,php链接mysql的常用方法
PHP连接MySQL数据库的几种方法 1.最简单的方式-mysql(面向过程) <?php $con = mysql_connect("localhost","ro ...