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,而我后来还 ...
随机推荐
- [go设计模式]简单工厂模式
优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可 ...
- 基于Influxdb对InfluxDBResultMapper的一点扩展
理想很饱满,现实很骨感. 由于业务需要"灵活可配置"的功能需求,在使用java开发Influxdb查询功能的时候,遇到了一个问题,Measurement注解的名称有可能需要动态变化 ...
- 因果推理的春天-实用HTE(Heterogeneous Treatment Effects)论文github收藏
一直以来机器学习希望解决的一个问题就是'what if',也就是决策指导: 如果我给用户发优惠券用户会留下来么? 如果患者服了这个药血压会降低么? 如果APP增加这个功能会增加用户的使用时长么? 如果 ...
- 苹果开始推送 macOS Catalina10.15 正式版系统更新
北京时间今天凌晨 1 点,苹果正式推送了 macOS Catalina 10.15 正式版升级.macOS Catalina 10.15 正式版带来了许多重大改变,包括Sidecar.iTunes应用 ...
- git基础命令详解
一些必须要知道的概念 git的三个工作区域:工作目录.暂存区.git仓库. 工作目录:其实就是本地文件磁盘上的文件或目录: 暂存区:是一个文件,保存了下次提交的文件列表信息,一般在git仓库目录中: ...
- 前端开发 JavaScript 干货知识点汇总
很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...
- luogu P2210 Haywire
[返回模拟退火略解] 题目描述 一数轴上有 nnn 个点,有 nnn 个环,求一种组合方案,使得所有边长度和最小. Solution 2210\text{Solution 2210}Solution ...
- 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。
最近遇到一个.NET连接Oracle的一个错误,其主要原因是换了一台电脑,在新电脑上运行以前的项目出现了的一个错误,工作环境为vs2017+Oracle 64位,win10系统 这个错误头疼了一天,找 ...
- 关于_GNU_SOURCE宏
是在features.h中用于特性控制的一个功能测试宏 /user/include/features.h /* If _GNU_SOURCE was defined by the user, turn ...
- MOOC C++笔记(七)输入输出流
输入输出流 与输入输出流操作相关的类 istream:是用于输入的流类,cin就是该类的对象. ostream:是用于输出的流类,cout就是该类的对象. ifstream:是用于从文件读取数据的类. ...