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面试凉凉,挥泪整理面筋,你不看看吗?
想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...
随机推荐
- 编译 lame for iOS
网上找了许多编译lame的教程,结果都是编译失败,多次尝试后发现是编译脚本放错路径了,记录下编译的过程,把编译脚本放到源码文件夹中和修改编译脚本中的目录是关键: 一.首先去Lame官网 http:// ...
- 关于Stream的知识分享
一.什么是Stream 查了一下MSDN,他是这么解释的:提供字节序列的一般视图. 这个解释有点太笼统了,下面,我们来仔细的捋一下 1.什么是字节序列? 字节序列指的是:字节对象被存储为连续的字节序列 ...
- Windows API 编程入门
Windows 工作原理的中心思想就是“动态链接”概念.Windows 自身带有一大套函数,应用程序就是通过调用这些函数 来实现它的用户界面和在屏幕上显示文本和图形的.这些函数都是在动态链接库里实现的 ...
- 零基础转行web前端,要学习多久?需要掌握些什么?
web前端开发技术人才越来越吃香,而且web前端领域划分越来越细,对技术的需求越来越高,想学习web前端的人也是越来越多.那么,如何学习web前端知识?从哪开始?转型成为web前端工程师需要学些什么? ...
- PowerSploit-CodeExecution(代码执行)脚本渗透实战
首先介绍一下国外大牛制作的Powershell渗透工具PowerSploit,上面有很多powershell攻击脚本,它们主要被用来渗透中的信息侦察.权限提升.权限维持. 项目地址:https://g ...
- [NOIp2018] luogu P5020 货币系统
还在补暑假作业. 题目描述 你有一个由 NNN 种面值的货币组成的货币系统.定义两个货币系统等价,当且仅当 ∀x∈N∗\forall x\in\N^*∀x∈N∗ 要么同时能被两个货币系统表示,要么同时 ...
- opencv::Brisk检测与匹配
Brisk(Binary Robust Invariant Scalable Keypoints)特征介绍 构建尺度空间 特征点检测 FAST9-16寻找特征点 特征点定位 关键点描述子
- typescript 入门教程一
##### 从今天开始,持续更新typescript入门教程系列.... 目前ts越来越火,主流的前端框架,好比*angular,vue 3*均是采用ts来编写,所有很多公司的项目都是用**ts**来 ...
- 百万年薪python之路 -- 递归
递归(每当有一个函数被递归调用,就应该要有一个返回值,才能正常把递归的返回值'归'回来) 一个正经的递归: 1.不断调用自己本身 2.有明确的结束条件 递归注重于"一递 一归&quo ...
- 从零开始把项目发布到Nuget仓库中心
从零开始把项目发布到Nuget仓库中心 我的项目地址 https://github.com/Ants-double/dasuan ### 前期准备 下载并注册nuget帐号 下载地址 https:// ...