2019.9.28 csp-s模拟测试54 反思总结
咕咕咕的冲动如此强烈x
T1x:
看完题目想了想,感觉把gcd不为1的强行放在一组,看作一个连通块,最后考虑连通块之间的组合方式就可以了。
然后维护这个连通块可以写并查集可以连边跑dfs怎么着都行…
然而我在处理数字分解质因数这里T掉了,原因是一个很显然的优化写法我基本没怎么写过。线性筛的时候记录每个数是被哪个质数标记过的,分解一个数的时候直接处理记录下来的质数就可以。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,t;
long long mod=1e9+,ans,sum;
int num[],pri[],cnt,vis[],pre[];
int fa[];
void work(){
for(int i=;i<=;i++){
if(!vis[i]){
pri[++cnt]=i;
pre[i]=i;
}
for(int j=;j<=cnt&&i*pri[j]<=;j++){
vis[i*pri[j]]=;
pre[i*pri[j]]=pri[j];
if(i%pri[j]==)break;
}
}
}
long long ks(long long x,long long k){
long long num=;
while(k){
if(k&)num=num*x%mod;
x=x*x%mod;
k>>=;
}
return num;
}
int get(int x){
if(fa[x]==x)return x;
else return fa[x]=get(fa[x]);
}
int main()
{
scanf("%d",&t);
work();
while(t--){
scanf("%d",&n);
sum=n;
for(int i=;i<=cnt;i++)num[pri[i]]=;
for(int i=;i<=n;i++)fa[i]=i;
for(int i=,x;i<=n;i++){
scanf("%d",&x); while(x>){
int y=pre[x];
while(x%y==)x/=y;
if(!num[y])num[y]=i;
else{
int x1=get(num[y]),x2=get(i);
if(x1!=x2){
fa[x2]=x1;
sum--;
}
num[y]=i;
}
} }
ans=((ks(2ll,sum)%mod-)%mod+mod)%mod;
printf("%lld\n",ans);
}
return ;
}
T2y:
如果直接做的话,显然是从1开始,枚举路径状态,看看这个状态能达到的节点有哪些,并根据这些节点所连的边能达到的点的集合拓展下一位的状态。最后看长度为d的状态有多少个所能到达的点的集合不为空,统计答案。
但是这样要枚举的状态太多了。
于是考虑把路径拆成两部分,对每个点都求一次能达到的路径的答案,存下每个长度为d的一半的路径状态能达到哪些点。可以倒序从n开始求,最后一次求的就正好是1能达到的一半路径的状态。枚举前后两半的路径状态,若两者存在交集,即两半路径存在可以相连的中间点,那么答案+1。
#include<iostream>
#include<cstdio>
#include<bitset>
using namespace std;
int n,m,d,x1,x2,ans;
bitset<>sum0[],sum1[],f[<<],g[<<];
//void add(int x,int y,int z){
// ver[++tot]=y;
// Next[tot]=head[x];
// head[x]=tot;
// edge[tot]=z;
//}
int main()
{
scanf("%d%d%d",&n,&m,&d);
x1=d/,x2=d-x1;
for(int i=,x,y,z;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
if(z){
sum1[x][y]=;
sum1[y][x]=;
}
else{
sum0[x][y]=;
sum0[y][x]=;
}
}
for(int i=n;i>=;i--){
for(int j=;j<(<<);j++)f[j].reset();
f[][i]=;
for(int j=;j<(<<x2);j++){
for(int k=;k<=n;k++){
if(f[j][k]){
f[j<<]|=sum0[k];
f[j<<|]|=sum1[k];
}
}
}
for(int j=;j<(<<x2);j++){
g[j][i]=f[(<<x2)|j].any();
}
}
for(int i=;i<(<<x2);i++){
for(int j=;j<(<<x1);j++){
if((g[i]&f[(<<x1)|j]).any())ans++;
}
}
printf("%d\n",ans);
return ;
}
T3z:
强行模拟这个过程是可以骗到分的,虽然我没骗到多少…
然而正解好像是个更难写的模拟…
首先观察n个任务,发现如果有任务与上一个相同,或者处在上一个任务到下一个任务的路径上,那么这个任务可以忽略不计。简化以后的任务序列就成为了一左一右的过程,每一次线段平移都与上一次走相反方向。
然后可以用链表串起这些有效任务,在询问线段长度小于最小的两个任务间距的时候,答案是一个一次函数。如果有两个任务之间的距离小于询问线段的长度,就合并相连的三个位移,答案还是一个一次函数。
然而并不会写,虽然刚刚重新下载题解的时候好像看到发标程了…
垃圾选手什么都菜,被赶了出来【大雾】
2019.9.28 csp-s模拟测试54 反思总结的更多相关文章
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色
2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)
2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
- 2019.8.9 NOIP模拟测试15 反思总结
日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...
- 2019.8.1 NOIP模拟测试11 反思总结
延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...
- 9.28 csp-s模拟测试54 x+y+z
T1 x 求出每个数的质因数,并查集维护因子相同的数,最后看一共有多少个联通块,$ans=2^{cnt}-2$ 但是直接分解会$T$,埃筛是个很好的选择,或者利用每个数最多只会有1个大于$\sqrt{ ...
- 2019.10.28 csp-s模拟测试91 反思总结
有一场没一场的233 T1: 胡乱分析一下题意,发现和为n的x个正整数,不同的数字种类不会超过√n个.假设这x个数字都不同,最多也就是(x+1)*x/2=n. 所以可以维护现有的size值以及对应的数 ...
- [考试反思]0928csp-s模拟测试54:转瞬
咕了好久,也没什么想说的. 下一场就又爆炸了... T3特判打丢一句话丢了14分,剩下其实都还好. T1:x 给我的第一感觉是建图找联通块,但既然只要找联通块为什么不直接并查集呢? 对于每一个数字合并 ...
随机推荐
- Django项目在linux上运行
目录 前言 上传 解压 制作启动脚本 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 前言 我们在windows本地开发完Django项目后,需要把项目部署到lin ...
- LUOGU P4027 [NOI2007]货币兑换 (斜率优化+CDQ分治)
传送门 解题思路 题目里有两句提示一定要看清楚,要不全买要不全卖,所以dp方程就比较好列,f[i]=max(f[j]*rate[j]*a[i])/(rate[j]*a[j]+b[j])+(f[j]*b ...
- 使用jqselectable构建美化的select元素
本文只对此插件的应用做一些探讨,本插件版权属于原作者,插件原始下载地址:http://www.jq22.com/jquery-info288 原插件也有些许不足之处,比如样式定义名称太过普通,容易和页 ...
- PKU--3628 Bookshelf 2(01背包)
题目http://poj.org/problem?id=3628 分析:给定一堆牛的高度,把牛叠加起来的高度超过牛棚的高度. 且是牛叠加的高度与牛棚高度之差最小. 把牛叠加的高度看作是背包的容量,利用 ...
- java笔试之求int型正整数在内存中存储时1的个数
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 关键点:n与二进制的1相与:判断最末位是否为1:向右移位. 类似题目是查找输入整数二进制中1的个数. package test; ...
- 路飞学城-Python爬虫集训-第二章
本次爬虫集训的第二次作业是web微信. 先贴一下任务: 作业中使用到了Flask. Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模 ...
- [Ceoi2010]Pin
#2012. [Ceoi2010]Pin Online Judge:Bzoj-2012 Label:容斥,STL 题目描述 给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D ...
- vue 学习 二
动画 <transition name="fade"> <p v-if="show">hello</p> </tran ...
- csp-s模拟测试53u,v,w题解
题面:https://www.cnblogs.com/Juve/articles/11602450.html u: 用差分优化修改 二维差分:给(x1,y1),(x2,y2)加上s: $d[x1][y ...
- MyBatis-Spring(三)--Mapped Statements collection does not contain value for...问题解决
前一篇文章我总结了一下MyBatis-Spring项目使用SqlSessionTemplate配置的用法,其实在测试过程中并不是一帆风顺,遇到了很多的问题,最主要的就是Mapped Statement ...