NOIP模拟测试23
这次考试又一次暴露了我很大的问题。
首先做的比较好的是这几次考试一分没挂,
但是,这也体现了更大的问题,那就是我的实力似乎也仅限于此了。
考试先拿满了暴力分(100+0+50),然后看了看T2没看懂,打了个记忆化搜索,只有10分,此时只过了不到2个小时
没看懂题也就罢了,那真的是我菜,可是接下来,我没有再去深入思考T3,skyh考场上切掉的题,我连最基本的思路都没有,
可能这个题放在第一题,我就切了。
这不是一道难题,考完试我知道它是个容斥后,也自己推出来了。
可是T3只拿部分分的思维禁锢了我,我自己漫无目的地思考的结果,不过是一场空。
只是因为在考试后期,我没有了压力,自以为稳拿的150分已经够了。
真的。。。够吗?
考试的有效思考时间,与成绩正相关。
我可以允许自己爆零,但我不喜欢整场考试无所事事。
比你强的人,正常考试都在思考,而你却提前卸甲,这也就是之所以比你强的原因吧。
可能你有一个还算好看的名次,所以呢?
说实话,我记得建设城市那道题,还不算水,如果放在平时刷题,一个半小时我是不可能做出来的,但在考场上,我确实切掉了。
这就是,所谓压力下的动力吧。
一个人可以接受失败,但决不能自甘堕落。
你不够强大,这是事实。
但如果你一直畏难,就永远不能够强大。
你不是天才,但也不能自甘平庸。
你仍需历练
说考试
T1 DP过了
T2 题意转换->给定一个网格,询问从每个格子走到边界的所有路径中最大值中最小的。
跑最小生成树即可。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int root=;
const int tmpx[]={,,,-},tmpy[]={,-,,};
struct edge{
int st,ed,val;
bool ok;
friend bool operator < (const edge a,const edge b)
{
return a.val<b.val;
}
}E[];
int cnt,head[],nxt[],to[],pnt,f[],w[],n,m;
int d[],h[][];
int pt(int x,int y)
{
if(!x||!y||x==n+||y==m+)return root;
return (x-)*m+y;
}
void Add(int u,int v,int val)
{
to[++pnt]=v;
nxt[pnt]=head[u];
w[pnt]=val;
head[u]=pnt;
return ;
}
int find(int x)
{
if(f[x]==x)return x;
else return f[x]=find(f[x]);
}
void merge(int a,int b)
{
int fa=find(a),fb=find(b);
f[fa]=fb;
return ;
}
void dfs(int x,int fa)
{
for(int i=head[x];i;i=nxt[i])
{
int y=to[i];
if(y==fa)continue;
d[y]=max(d[x],w[i]);
dfs(y,x);
}
return ;
}
void BuildAndWork()
{
for(int i=;i<=root;i++)f[i]=i;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
for(int k=;k<;k++)
{
E[++cnt].st=pt(i,j);
E[cnt].ed=pt(i+tmpx[k],j+tmpy[k]);
E[cnt].val=max(h[i][j],h[i+tmpx[k]][j+tmpy[k]]);
}
}
sort(E+,E+cnt+);
for(int i=;i<=cnt;i++)
{
int a=E[i].st,b=E[i].ed;
if(find(a)==find(b))continue;
Add(a,b,E[i].val);Add(b,a,E[i].val);
merge(a,b);
}
dfs(root,);
}
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%lld",&h[i][j]);
BuildAndWork();
int p=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
int now=d[++p];
printf("%lld ",now-h[i][j]);
}
puts("");
}
return ;
}
code
T3 我最想说的。
考场上一直以为是个数据结构题。
可是这是互质啊,为什么不想想数学呢?
这只是个简单的容斥啊。
想到容斥,一切就迎刃而解。
想不到呢?呵呵。
直接容斥即可。
$O(m\sqrt{max\{x\}})$更新即可。
#include<bits/stdc++.h>
#define MAXN 500005
#define cri const rigister int
using namespace std;
int t[MAXN],firprime[MAXN];
int prime[MAXN],x[MAXN],val[MAXN],bin[MAXN],bitnum[MAXN];
bool vst[MAXN];
int lm[];
int kx;
void pre()
{
for(register int i=;i<=;i++)
{
if(!firprime[i])
prime[++prime[]]=i,firprime[i]=i;
for(register int j=;j<=prime[]&&i*prime[j]<=;j++)
{
firprime[i*prime[j]]=prime[j];
if(!(i%prime[j]))break;
}
}
return ;
}
void Get(register int x)
{
lm[]=;
while(x!=)
{
register int now=firprime[x];
lm[++lm[]]=now;
while(x%now==)x/=now;
}
return ;
}
int main()
{
pre();
int n,m,siz=;
long long ans=;
val[]=;
for(int i=;i<=;i++)bin[<<(i-)]=i;
for(int i=;i<=(<<-);i++)
{
int num=,st=i;
while(st)st-=st&-st,++num;
bitnum[i]=num;
}
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&x[i]);
while(m--)
{
int opt;
scanf("%d",&opt);
if(!vst[opt])
{
Get(x[opt]);
kx=siz;
for(register int i=;i<=(<<lm[])-;i++)
{
val[i]=val[i^(i&-i)]*lm[bin[i&-i]];
if(bitnum[i]&)kx-=t[val[i]];
else kx+=t[val[i]];
}
vst[opt]=;
int sx=sqrt(x[opt]);
for(register int i=;i<=sx;i++)
if(x[opt]%i==)
{
if(i*i==x[opt])t[i]++;
else t[i]++,t[x[opt]/i]++;
}
t[x[opt]]++;
siz++;
ans+=kx;
}
else
{
Get(x[opt]);
vst[opt]=;
int sx=sqrt(x[opt]);
for(register int i=;i<=sx;i++)
if(x[opt]%i==)
{
if(i*i==x[opt])t[i]--;
else t[i]--,t[x[opt]/i]--;
}
t[x[opt]]--;siz--;
kx=siz;
for(register int i=;i<=(<<lm[])-;i++)
{
val[i]=val[i^(i&-i)]*lm[bin[i&-i]];
if(bitnum[i]&)kx-=t[val[i]];
else kx+=t[val[i]];
}
ans-=kx;
}
printf("%lld\n",ans);
}
return ;
}
code
加油
NOIP模拟测试23的更多相关文章
- NOIP模拟测试23「mine·water·gcd」
mine 题解 一道比较水的dp 考试因为初始化挂掉了只有$80$分 代码有注释 #include<bits/stdc++.h> using namespace std; //无脑dp # ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 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,需 ...
- NOIP模拟测试17&18
NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...
- NOIP模拟测试1(2017081501)
好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
随机推荐
- maven突然报大量package does not exist(包不存在)问题
遇到个问题,不知道原因,虽然已解决,但是扔不知道为什么,希望有大神帮忙解答下~~~不胜感激~~~ 国庆假期回来后,小伙伴发布测试服务器版本忽然发现报错,我咨询IT管理组近期并没有对服务器配置和权限做调 ...
- idea快捷键(mac下)
ctrl+/ 代码提示 command+o 搜索要进入的类并进入 command+shift+enter 另起一行 command+shift+u 在变成全大写与变成全小写之间切换 shift+鼠标滑 ...
- python 中的一点新知识
逻辑行与物理行 所谓物理行(Physical Line)是你在编写程序时 你所看到 的内容.所谓逻辑行(Logical Line)是 Python 所看到 的单个语句.Python 会假定每一 物理行 ...
- 基于Spark的电影推荐系统(推荐系统~2)
第四部分-推荐系统-数据ETL 本模块完成数据清洗,并将清洗后的数据load到Hive数据表里面去 前置准备: spark +hive vim $SPARK_HOME/conf/hive-site.x ...
- 前端模块化(CommonJs,AMD和CMD)
前端模块规范有三种:CommonJs,AMD和CMD. CommonJs用在服务器端,AMD和CMD用在浏览器环境 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出. CMD 是 S ...
- [CF431C]k-Tree
题目描述 Quite recently a creative student Lesha had a lecture on trees. After the lecture Lesha was ins ...
- 算法---区间K大数查找 Java 蓝桥杯ALGO-1
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(Strin ...
- linux-pclint代码检测
win10.ubuntu16.04, vs2017. 1.安装pc-lint到C盘. 2.将linux下的usr整个目录打包拷贝到win10某盘下. 3.获取lint检测linux c++ 代码的宏参 ...
- php在哪里写代码?
php在哪里写代码? php可以在PhpStorm中写代码. PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码 ...
- Mysql面试题及千万级数据查询优化
今天在说Mysql查询优化之前,我先说一个常见的面试题,并带着问题深入探讨研究.这样会让大家有更深入的理解. 一,Mysql数据库中一个表里有一千多万条数据,怎么快速的查出第900万条后的100条数据 ...