【题解】JSOIWC2019 Round4
题面:
https://files-cdn.cnblogs.com/files/yzhang-rp-inf/P13.gif
https://files-cdn.cnblogs.com/files/yzhang-rp-inf/P23.gif
https://files-cdn.cnblogs.com/files/yzhang-rp-inf/P33.gif
https://files-cdn.cnblogs.com/files/yzhang-rp-inf/P43.gif
题解:
T1:
算法1:暴力
算法2:记录每个区间的gcd,从前一个转移过来,用hash统计答案。
期望得分:50pts
算法3:我们注意到对于左端点为l的所有区间,gcd的取值只有log个(每次gcd变小都至少会折半),所以总的不同的gcd(l,r)的取值个数只有nlog个,于是我们有两种解法
1:考虑线段树,每个节点维护区间上的gcd,在线段树上不断二分,并统计答案。(或用rmq)
2:从左往右一次计算,用map或vector合并相同的项
以上两种算法的复杂度均为nlog^2
#include <bits/stdc++.h>
using namespace std;
map<long long,long long>mem[2],ans;
map<long long,long long>::iterator it;
main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
long long n,a,b=0;
scanf("%lld",&n);
while(n--){
b^=1;
scanf("%lld",&a);
mem[b].clear();
for(it=mem[b^1].begin();it!=mem[b^1].end();it++){
long long y=__gcd(a,it->first);
mem[b][y]+=it->second;
ans[y]+=it->second;
}
mem[b][a]++;
ans[a]++;
}
scanf("%lld",&n);
while(n--){scanf("%lld",&a);printf("%lld\n",ans[a]);}
return 0;
}
T2:
算法0:输出n=1的答案
期望得分:5
算法1:暴力枚举1到10^n所有数,判断是否满足
时间复杂度:10^n*n 期望得分:15-20(打表n=8)
算法2:考虑数位dp,f[i][j]表示第i位为j的方案数,统计答案
时间复杂度:nlogn 期望得分:50
算法3:我们接着算法2来考虑,有一位比上一位要大,等同于加上若干个1,于是可以把这道题变成以下的内容:
f[0]=0 f[i]=f[i-1]10+1 a[0]+a[1]+...+a[n]=9 求sigma a[i]f[i]
珂以证明每一个满足上式的a数组的解与一个这样的数一一对应
我们单独考虑每一个f[i]对答案的贡献,可以发现为c(n+9,8)
时间复杂度:n 期望得分:70
算法4:算法3的瓶颈在于求f 的和,我们发现只要求答案模19260817,而19260817也是f数组的一个循环节,统计一下循环节个数就可以了。
时间复杂度:logn 期望得分:100
#include<bits/stdc++.h>
#define mo 19260817
using namespace std;
string st;
long long p,q,ansn;
long long po(long long x,long long y){
long long z=1;
while (y){if (y&1) z=(z*x)%mo;x=(x*x)%mo;y/=2;}
return z;
}
long long c(long long x,long long y){
long long sum=1;
for (int i=1;i<=8;i++)sum=((sum*(x-i+1))%mo)*po(i,mo-2)%mo;
return sum;
}
int main(){
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
cin>>st;
int l=st.length();
for (int i=0;i<l;i++){p=p*10+st[i]-'0';q=(q*10+p/mo)%mo;p%=mo;}
for (long long i=1,j=0;i<=mo;i++){j=(j*10+1)%mo;ansn=(ansn+j)%mo;}
ansn=(ansn*q)%mo;
for (long long i=1,j=0;i<=p;i++){j=(j*10+1)%mo;ansn=(ansn+j)%mo;}
cout<<(ansn*c(p+9+mo,8))%mo<<endl;
return 0;
}
T3:
结论题qaq
连接(0,2)(1,0),(0,4)(3,0)...以此类推,可以发现只有第一行和最后一行没有填满,连接(1,0)(0,n)和(n-1,0)(n,n)即可。
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
freopen("graph.in","r",stdin);
freopen("graph.out","w",stdout);
cin>>n;
cout<<n+1<<endl;
int x=1,y=2;
while (y<n*2){
if (x>n) printf("%d %d ",n,x-n);else printf("%d %d ",x,0);
if (y>n) printf("%d %d\n",y-n,n);else printf("%d %d\n",0,y);
x+=2;y+=2;
}
printf("%d %d %d %d\n",0,0,n,1);
printf("%d %d %d %d\n",0,n,n,n-1);
return 0;
}
数学场玩不下去啊,差点爆零
深深地感受到自己的弱小~
【题解】JSOIWC2019 Round4的更多相关文章
- 【题解】JSOIWC2019 Round 5
题面: 题解: T1: 算法1: 枚举每个灯塔的方向,并分别判断是否有解.时间复杂度O(K*4^K). 预计得分:50-70分 算法2: 不难发现,当k≥4的时候一定有解,将最靠左的两个下面的朝右上. ...
- 【题解】JSOIWC2019 Round3
题面 题解: T1: 先对图进行染色,重新对联通快重新建图 根据四色定理,珂以得出这实际是一颗树 因为树的中心肯定是最佳的决策,所以答案就是树的直径/2(上取整) #include <bits/ ...
- 【题解】JSOIWC2019 Round2
题面: 题解: T1: 毕竟是tg膜你,不会太难 就是一道简单贪心 首先,对于a<=b的所有物品,一定是贪心的按照a从小到大放入. 先假设剩下的物品可以按照某种顺序放进去,那么可以得到一个最终空 ...
- 【题解】JSOIWC2019 Round1
题面(T1变成5s(毒瘤出题人发现std超时了qaq)): 啥都不会qaq.但也送了不少分 题解: T1: 当T=0时直接异或前缀和,但T=1时就有点恶心 暴力能有80pts(防止大家爆零) 还珂以用 ...
- JSOIWC2019游记
世除我WC...都去广二了qaq,就我还在nj ycs至少也去了pkuwc啊 这个JSOIWC2019的内容看起来很水,进入条件简单,但窝啥都不会,肯定垫底 内容清单: 1.26 上午听机房dalao ...
- 【ContestHunter】【弱省胡策】【Round4】
01分数规划(网络流)+状压DP+树形DP 官方题解地址:http://pan.baidu.com/s/1mg5S5z6 A 好神啊= =第一次写01分数规划 其实分数规划是要求$$ Maximize ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
随机推荐
- python 接口自动化测试(四)cookie&session
掌握了前面几节的的内容,就可以做一些简单的http协议接口的请求发送了,但是这些还不够.HTTP协议是一个无状态的应用层协议,也就是说前后两次请求是没有任何关系的,那如果我们测试的接口之前有相互依赖关 ...
- less的写法 calc以及变量
less的文档还是很容易读懂的, 一:结构的嵌套:照着html结构写,目前没有出现错误: 二:变量引用:1,单个变量通常用@变量名 2,多个变量写在一起, 三:calc计算: 目前我觉得最具实用性的就 ...
- ERP实施顾问--理解客户的解决方案与实际需求
在企业进行信息化时实施方的顾问都会来现场进行"需求调研",再根据"调研"的结果进行双方确认,确认后按此蓝本进行开发实施. 一切看上去都很美好,需求明确.开发顺利 ...
- python全栈开发 * 09知识点汇总 * 1806011
09 函数初识一 函数的的定义# 函数: 对代码块和功能的封装和定义# 引入 回家过程 未用函数# print("步行")# print("坐地铁")# pri ...
- allegro画电路板
出图: 选择save all checked导出film_setup.txt: 选择replace导入film_setup.txt: 丝印层选择silkscreen,但是silkscreen和asse ...
- centos7更改网卡名称
1.编辑/etc/sysconfig/grub文件,加入net.ifnames=0 biosdevname=0 2.执行命令grub2-mkconfig -o /boot/grub2/grub.cfg ...
- ssh无输入密码登录问题
每天一个Linux命令:ps命令 ssh原理和运用(一):远程登录 http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html SSH是每 ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- JDBC事务(二)转账示例
示例采用三层框架 web层: package cn.sasa.web; import java.io.IOException; import javax.servlet.ServletExceptio ...
- MVEAN_day05 Nexus私服对的搭建
序言:为什么要搭建私服 因为在公司中我们是以团队进行开发的,不在是在自己的本地仓库中进行,我们需要连接公司远程仓库进行jar依赖.在公司的局域网中搭建的私服,然后开发人员连接这台计算机,进行团队开发. ...