1005 csp-s 60 凉凉
T1 嘟嘟噜
上来一看数据范围1e9就蒙蔽,然后不知所措的打了一个 $ O(n)$的无脑算法,由于本人真的脑小,导致O(n)的柿子推了好长时间,导致心态崩了,然后........ 今天能明白了log的算法,算是约瑟夫问题弄明白了,没有想到跳跃式的竟然可以log求。
#include<bits/stdc++.h>
using namespace std;
#define re register
inline int read()
{
int x=,f=;char cc=getchar();
while(cc>''||cc<''){if(cc=='-')f=-;cc=getchar();}
while(cc>=''&&cc<=''){x=(x<<)+(x<<)+cc-'';cc=getchar();}
return x*f;
}
const int maxn=;
int n,k,m,S;
int ans[maxn];
queue<int>q;
set<int>pc,fc;
stack<int>s;
int main()
{
n=read(),k=read(),m=read(),S=read();
for(int i=,u;i<=m;i++)
{
u=read();
ans[u]=-;
}
q.push(S);
for(re int i=;i<=n;++i)
if(i!=S&&ans[i]!=-)
{
if(i&)pc.insert(i);
else fc.insert(i);
}
while(q.size()&&(!pc.empty()||!fc.empty()))
{
int x=q.front();q.pop();
if((x&)==(k&))
{
for(auto it=pc.lower_bound(max(x-k+,k-x));it!=pc.end()&&*it<x+k;++it)
{
int zz=(k-(abs(x-*it)+))>>;
if(zz>n-max(*it,x))break;
q.push(*it);
ans[*it]=ans[x]+;
s.push(*it);
}
while(s.size())pc.erase(s.top()),s.pop();
continue;
}
for(auto it=fc.lower_bound(max(x-k+,k-x));it!=fc.end()&&*it<x+k;++it)
{
int zz=(k-(abs(x-*it)+))>>;
if(zz>n-max(*it,x))break;
ans[*it]=ans[x]+;
q.push(*it);
s.push(*it);
}
while(s.size())fc.erase(s.top()),s.pop();
}
for(re int i=;i<=n;++i)
{
if(!ans[i]&&(i!=S))ans[i]=-;
printf("%d ",ans[i]);
}
return ;
}
T2 天才绅士少女助手克里斯蒂娜
看题就发现是原题,然后想到当时自己连题解都没有颓,就崩了,然后想到当时就是wba大神造的数据,我就感到了一丝不妙,其实就是拆一下柿子就出来了!

然后我就怀着爆零的心情去看T3
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{
int f=,x=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=;
const int mod=;
int n,m;
struct BIT
{
int tr[maxn];
inline int lowbit(int x){return x&(-x);}
inline int query(int x)
{
int res=;
while(x)
{
(res+=tr[x]+mod)%=mod;
x-=lowbit(x);
}
return res;
}
inline void update(int x,int val)
{
while(x<=n)
{
(tr[x]+=val+mod)%=mod;
x+=lowbit(x);
}
return ;
}
}t1,t2,t3;
int a1[maxn],a2[maxn],a3[maxn]; struct node
{
int x,y;
inline void make(int _x,int _y){x=_x,y=_y;return ;}
}s[maxn]; signed main()
{
//freopen("inputs2.in","r",stdin);
n=read();m=read();
for(int i=,x,y;i<=n;i++)
{
x=read(),y=read();
s[i].make(x,y);
}
for(int i=;i<=n;i++)
{
a1[i]=(s[i].x*s[i].x%mod)%mod;
a2[i]=(s[i].y*s[i].y%mod)%mod;
a3[i]=(s[i].x*s[i].y%mod)%mod;
t1.update(i,a1[i]);
t2.update(i,a2[i]);
t3.update(i,a3[i]);
}
int opt=;
while(m--)
{
opt=read();
if(opt==)
{
int p=read(),x=read(),y=read();
s[p].x=x,s[p].y=y;
int c1=a1[p],c2=a2[p],c3=a3[p];
a1[p]=x*x%mod,a2[p]=y*y%mod;a3[p]=x*y%mod;
t1.update(p,a1[p]-c1);
t2.update(p,a2[p]-c2);
t3.update(p,a3[p]-c3);
}
else
{
int l=read(),r=read();
int ans=;
ans=((t1.query(r)-t1.query(l-)+mod)%mod*(t2.query(r)-t2.query(l-)+mod)%mod+mod)%mod;
int tt=((t3.query(r)-t3.query(l-)+mod)%mod+mod)%mod;
ans=((ans-tt*tt%mod+mod)%mod+mod)%mod;
printf("%lld\n",ans);
}
}
return ;
}
T3
就是一个LCIS,当时学的时候还被人消费来着(LSC LCIS)然后在看出是dp之后由于剩的时间过少,还想调T2所以直接打的爆搜,按说应该可以20分,但是只有10分,
3
考虑 DP. 设状态 dp(i, j) 表示 a 序列考虑到 i, b 序列考虑到 j 并且必须选 b j 的最
大长度. 当 a i = b j 时, 显然有转移 dp(i, j) = max k<j,b k <b j {dp(i − 1, k)} + 1.
于是从小到大枚举 j, 维护 max k<j,b k <a i {dp(i − 1, k)}, 直接转移即可.
时间复杂度 O(nm).
由于前几场考试T1过于水,导致之前的T1都切了,而且一般20分钟之内就可以A,所以这次T1拖了1个小时,就心态炸了,还是要历练!@……@
#include<bits/stdc++.h>
using namespace std;
#define re register
#define LL long long
template<class T>
inline void read(T &x)
{
T f=;x=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
x=x*f;
}
int n,m;
const int maxn=;
LL a[maxn],b[maxn];
bool vis[maxn];
int ch[maxn],tot;
int dp[maxn][maxn];
int pre[maxn][maxn];
int sta[maxn],topp;
inline void ba(re int x,re int y)
{
if(x==||y==)return;
re int qq=pre[x][y];
if(y!=qq)sta[++topp]=b[y];
ba(x-,qq);
}
signed main()
{
//freopen("inputs3.in","r",stdin);
read(n);
for(re int i=;i<=n;i++)
read(a[i]);
read(m);
for(re int i=;i<=m;i++)
read(b[i]);
for(re int i=;i<=n;i++)
{
int res=,id=;
if(b[]<b[])res=dp[i-][],id=;
for(re int j=;j<=m;j++)
{
if(a[i]==b[j])
{
pre[i][j]=id;
dp[i][j]=res+;
}
else
{
pre[i][j]=j;
dp[i][j]=dp[i-][j];
}
if(b[j]<a[i])
{
if(res<=dp[i-][j])
{
res=dp[i-][j],id=j;
}
}
}
}
int ans=,id=;
for(re int i=;i<=m;i++)
{
if(dp[n][i]>=ans)ans=dp[n][i],id=i;
}
printf("%d\n",dp[n][id]);
ba(n,id);
while(topp)
{
printf("%d ",sta[topp]);
topp--;
}
return ;
}
1005 csp-s 60 凉凉的更多相关文章
- PKUWC2019 凉凉记
请配合 BGM 食用. 菜就是菜,说什么都是借口. Day 0 前一天先到纪中报道,高铁上打了一会单机膈膜,然后又打了一遍 \(FFT\) 板子,就到了中山. 到了后,发现气温骤然升高,马上 脱 换裤 ...
- NOIP2018凉凉记
首先声明一下,我去不了TG,因为我太菜了GD的某教授把我打到PJ了…… 虽然就我这实力普及都不一定1= 不管了,这次是普及,就当扎实基础了.反正HF的 $\text{hhz}$ 也考PJ,见个面多好啊 ...
- 世界最大BT服务器本周死了三回 海盗湾要凉凉?
想當初,我是受到BT網站海盜灣的啟發,開發了一個DHT下載網站:http://www.ibmid.com,有一段時間通宵編程,理解此個協議. 海盗湾(The Pirate Bay)是世界上最大的 BT ...
- SDOI2018凉凉记
好久没有更博客了...因为我在颓废学习.. SDOI一轮结束了...我也该回来学地生了... 凉凉 ————————————————我是分割线———————————————— Day0 愉快感冒的Da ...
- AHOI2019N省联考凉凉记
博主并未时空穿越,本文没有对选手造成恐慌 DAY0 这已经是我第四次省选了,时间真快啊,怀念三年前毫无压力的省选,考完以后如果有时间并且没退役的话可能会陆续搬以前写在别处的游记(主要是2018年的游记 ...
- 最近Android真的凉凉了?
都说Android最近行情不好,很多人都遇到瓶颈或放弃或转行.其实这种情况15年16年也是如此,相对比之下,个人认为今年比去年好多了,Android接下来将会走向复苏的春天. 自从Google开始推出 ...
- 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?
今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...
- 凉凉了,Eureka 2.x 停止维护,Spring Cloud 何去何从?
今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布停止开发了.. 已经从 Dubbo 迁移至 Spring ...
- 字节跳动Android面试凉凉,挥泪整理面筋,你不看看吗?
想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...
随机推荐
- java中的char
System.out.println("char二进制位数:" + Character.SIZE);//16 即2个字节 在c语言中,char类型占一个字节,而汉子占两个字节,所以 ...
- docker服务在Mac上的启动与使用
在mac上打开安装的docker软件就可以启动docker服务了 点击顶部状态栏中鲸鱼图标会弹出操作菜单,显示着服务的状态,如下图所示: 只有在docker服务启动了之后,才可以在终端使用docker ...
- 点云之OpenMesh:error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such file or directory
1.这是一个错误引发的惨案:错误提示如下: 在进行点云程序调试时,出现错误:[error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such fil ...
- Jenkins项目构建
一:新建项目 (1)点击新建,输入项目名称--构建一个自由风格的软件项目,点击ok (2)创建项目名称,选择节点标签 (3)构建触发器-----设置每两分钟执行一次 其中有5个参数 (*****) 第 ...
- ZCU104搭建Ubuntu桌面系统-1安装Petalinux
参考教程: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841948/Zynq+UltraScalePlus+MPSoC+-+Ubu ...
- JavaScript回调函数和递归函数
一.回调函数--通过函数的指针来调用函数 把一个函数的指针作为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数 在链式运动上会用到回调函数,之后运动会见到 A.通过指针来调用函数 B.通 ...
- 【Spring Cloud】实战项目搭建
0.项目搭建 创建maven项目,删除其中的src目录,作为整体父项目,在其中添加module实现各个组件. 1.Eureka Server的实现 添加module,创建Spring Boot项目,添 ...
- 同一台机上配置多个redis服务
"D:\Program Files\Redis\redis-server.exe" --service-run F:Redis2\redis.windows-service6380 ...
- 高性能封装检测浏览器支持css3属性函数
css3出来已经很久了,现在来谈判断浏览器是否支持某个css3的属性虽说有点过时了,但是还是可以谈谈的,然后,此篇主要谈的不是判断是否支持,而是怎么封装更好,为什么这么封装,欢迎吐槽. 入题,判断浏览 ...
- Javascript进阶必会
概念: 局部块函数声明: ES5才承认有这个东西. function f(){return 'global';} function test(x){ var result = []; if(x) { ...