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,而我后来还 ...
随机推荐
- CSS样式手册
字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...
- ZGC gc策略及回收过程-源码分析
源码文件:/src/hotspot/share/gc/z/zDirector.cpp 一.回收策略 main入口函数: void ZDirector::run_service() { // Main ...
- 快速入门Maven(二)(Eclipse构建Maven项目)
Mars2的eclipse()已经集成了Maven插件,所以用这个版本不需要装插件了. 接下来构建: 一.调整Eclipse设置 1.选择3.3.9版本的maven软件 2.修改默认的本地仓库地址 二 ...
- C++11多线程相关
有关线程的知识,从C++11开始有了一些变化,作为初学者,对其先有个初步认识,后面用到的时候再详细剖析
- SystemMetrics
头文件: #define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct { int iIndex ; TCHAR ...
- JavaScript 编译器-Babel
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行.这意味着,你可以现在就用ES6.ES7编写程序,而不用担心现有环境是否支持. 一.全局安装babel工具 在保证n ...
- 数据结构1_C---单链表的逆转
通过C语言函数实现单链表的逆转操作 例: 输入数据1,2,3,4 输出数据4,3,2,1 一共三个文件: 头文件stulist,h :链表结点的定义,结点指针的定义 源文件stulist.c:具体的实 ...
- MFC连接Sqlserver
下载 ado2.h和ado2.cpp文件 在VC++ 目录-->包含目录 -->添加 msado15.dll, msjro.dll 目录. // TODO: 连接sqlserver, 在 ...
- 《Java并发编程实战》读书笔记-第一部分 基础知识小结
并发技巧清单 可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问.可变状态越少,就越容易确保线程安全性. 尽量将域声明为final类型,除非需要它们是可变的. 不可变对象一定是线 ...
- .htaccess文件上传利用
一般.htaccess可以用来留后门和针对黑名单绕过 创建一个txt写入 AddType application/x-httpd-php .png 打开另存为 保存类型为所有文件 上传.htacces ...