佳木斯集训Day5
今天是ACM赛制...本来可以400的,结果毒瘤T2模拟硬生生卡掉了我90分
T1是个大水题,找规律,5分钟AC没啥压力
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll ans,n;
bool ju;
int p;
int main()
{
cin>>p;
while(p--)
{
cin>>n;
ju=;
int t5=,t3=,t2=;
while(n!=&&(n%==||n%==||n%==))
{
if(n%==)
{
t5++;
n/=;
ju=;
}
if(n%==)
{
t3++;
n/=;
ju=;
}
if(n%==)
{
t2++;
n/=;
}
}
if(n==)
cout<<t5*+t3*+t2<<endl;
else
cout<<-<<endl; }
}
T2啊啊啊啊,双向队列,直接模拟就好了嘛,
#include <bits/stdc++.h>
#define ll long long
#define MAXN 2000500
using namespace std;
ll a[MAXN],b[MAXN],q,maxn=-,pos,nw;
ll f[MAXN],c[MAXN],manx=-,mm=;
ll md;
bool vis[MAXN];
int main()
{
ll n;
cin>>n>>q;
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
b[]=a[];c[]=a[];
if(i>)
{
if(a[i]>b[i-])
{
vis[i]=;
b[i]=a[i];
c[i]=b[i-];
}
else
{
c[i]=a[i];
b[i]=b[i-];
} }
if(a[i]>maxn)
{
pos=i;
maxn=a[i];
}
}
for(int i=;i<n+;i++)
f[i]=c[i+];
for(int i=;i<=q;i++)
{
ll x;
scanf("%lld",&x);
if(x<pos)
{
if(vis[x+])
printf("%lld %lld\n",c[x+],b[x+]);
// cout<<c[x+1]<<" "<<b[x+1]<<endl;
else
printf("%lld %lld\n",b[x+],c[x+]);
}
else
//cout<<maxn<<" "<<f[(x-1)%(n-1)];
printf("%d %d\n",maxn,f[(x-)%(n-)]);
}
}
T3也是类似于找规律的
#include <bits/stdc++.h>
#define MAXN 100500
using namespace std;
int a[MAXN],b[MAXN],ans,x,start[MAXN],ed[MAXN];
int n,m;
int main()
{
cin>>n>>m;
for(int i=;i<=m;i++)
{
cin>>a[i];
b[a[i]]++;
if(!start[a[i]])
start[a[i]]=i;
}
for(int i=m;i>=;i--)
{
if(!ed[a[i]])
ed[a[i]]=i;
}
for(int i=;i<=n;i++)
{
if(!b[i])
{
if(i!=&&i!=n)
ans+=;
else
ans+=;
}
else
{
if(ed[i-]<start[i]&&i!=)
ans++;
if(ed[i+]<start[i]&&i!=n)
ans++;
}
}
cout<<ans<<endl;
}
T4是A层的F题,他们上午考的,当时开考的时候我还在想T2就有好多人AC直接吓死我
我看了看题,发现直接是一个初中的因式分解题,挺水的,然后直接过的
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,p,k;
ll a[];
ll c=,ans=;
int main()
{ cin>>n>>p>>k;
for(ll i=;i<=n;i++)
{
cin>>a[i];
a[i]=(a[i]*a[i]%p*a[i]%p*a[i]-k*a[i]%p+p)%p;
}
sort(a+,a++n);
for(ll i=;i<=n;i++)
{
if(a[i-]==a[i])
{
c++;
ans+=c;
}
else
c=;
}
cout<<ans<<endl;
}
T5正解权值线段树,其实和本身的线段树没什么大的区别,题基本上是裸的权值线段树
#include <bits/stdc++.h>
#define ls k<<1
#define rs k<<1|1
#define mid (l+r)/2
using namespace std;
const int MAXN=1e6+;
int m[MAXN<<],ans[MAXN<<],a[MAXN<<];
int n,m1,q,x,a1,b,c;
struct Tree{
int sign,sum;
}t[];
void up(int k)
{
t[k].sum=min(t[ls].sum,t[rs].sum);
}
void build(int k,int l,int r)
{
if(l==r)
{
t[k].sum=;
return ;
}
build(ls,l,mid);
build(rs,mid+,r);
up(k);
}
void signdown(int k)
{
if(t[k].sign==)
return ;
t[ls].sum+=t[k].sign;
t[rs].sum+=t[k].sign;
t[ls].sign+=t[k].sign;
t[rs].sign+=t[k].sign;
t[k].sign=;
} void add(int k,int l,int r,int from,int to,int v)
{
if(l>=from&&r<=to)
{
t[k].sign+=v;
t[k].sum+=v;
return ;
}signdown(k);
if(from<=mid)
add(ls,l,mid,from,to,v);
if(to>mid)
add(rs,mid+,r,from,to,v);
up(k);
}
int ask(int k,int l,int r)
{
if(t[k].sum>=)return -;
if(l==r)return l;
signdown(k);
if(t[rs].sum<)return ask(rs,mid+,r);
else return ask(ls,l,mid);
}
int main()
{
scanf("%d%d%d",&n,&m1,&q);
build(,,);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
ans[a[i]]++;
if(ans[a[i]]==)
add(,,,a[i],a[i],-);
add(,,,,a[i],-);
}
for(int i=;i<=m1;i++)
{
scanf("%d",&m[i]);
add(,,,,m[i],);
}
for(int i=;i<=q;i++)
{
scanf("%d%d%d",&a1,&b,&c);
if(a1==)
{
add(,,,,a[b],);
ans[a[b]]--;
if(ans[a[b]]==)
add(,,,a[b],a[b],);
a[b]=c;
add(,,,,a[b],-);
ans[a[b]]++;
if(ans[a[b]]==)
add(,,,a[b],a[b],-);
}
else
{
add(,,,,m[b],-);
m[b]=c;
add(,,,,m[b],);
}
printf("%d\n",ask(,,));
}
return ;
}
T6是个DP,不断的拓展,实在不会,题解可以看得懂,就是代码敲不出来,2333
佳木斯集训Day5的更多相关文章
- Loj #6073.「2017 山东一轮集训 Day5」距离
Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...
- 「2017 山东一轮集训 Day5」苹果树
「2017 山东一轮集训 Day5」苹果树 \(n\leq 40\) 折半搜索+矩阵树定理. 没有想到折半搜索. 首先我们先枚举\(k\)个好点,我们让它们一定没有用的.要满足这个条件就要使它只能和坏 ...
- 佳木斯集训Day1
23333第一次写博客 其实在佳木斯集训之前我都已经两三个月没打代码了 在佳木斯的时候前几天真心手生,导致了前几次考试考的很差... D1的考试还是比较良心的,T1是一道大模拟,直接枚举最后几位是00 ...
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- 2019暑期金华集训 Day5 生成函数
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...
- 杭州集训Day5
下面是Day5的题目!(其实都咕了好几天了 100+70+40=210. T1 皇后 XY 的疑难 (1s 512MB) 1.1 题目描述 有一个n*n的王国城堡地图上,皇后XY喜欢看骑士之间的战斗, ...
- 「疫期集训day5」火焰
我们就像一把穿刺敌人的利刃,把敌人开肠破肚----凡尔登高地前气势汹汹的德军 今天没有考试,挺好,有时间自己做题了 今天主要复习+学习了数据结构,列了个表: 已完成:单调队列,线段树,set/vect ...
- 2022寒假集训day5
day5 五道栈的题加上字符串. 单调队列. T1 表达式括号匹配 洛谷P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@&q ...
- [日常训练]常州集训day5
T1 Description 小$W$和小$M$一起玩拼图游戏啦~ 小$M$给小$M$一张$N$个点的图,有$M$条可选无向边,每条边有一个甜蜜值,小$W$要选$K$条边,使得任意两点间最多有一条路径 ...
随机推荐
- 性能测试即服务-docker部署jmeter及.netcore应用
前言 现在各种业务都追求上云,通俗的讲,“XX即服务”,作为一名专职的性能测试调优人员的我,由于会点三脚猫的开发功夫,“性能测试即服务”这种开发大任就落到我头上了,先做一个能完成核心压测功能的基础版. ...
- Linux命令学习-history命令
Linux中,history命令的作用是显示历史记录和执行过的命令. 查看历史所有命令执行记录 history 查看最近的13条历史执行命令 history 13 执行历史记录中,序号为123的命令 ...
- mimalloc剖析
mimalloc是微软最近开源的一个malloc实现,其实验数据表明相比于jemalloc.tcmalloc等实现大约快了10%.其通过将空闲块列表(Free List)进行分片(Sharding)来 ...
- Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)
猪国杀 - 可读版本 https://mubu.com/doc/2707815814591da4 题目可真长,读题都要一个小时. 这道题很多人都说不可做,耗时间,代码量大,于是,本着不做死就不会死的精 ...
- 【题解】【A % B Problem(P1865)】-C++
题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...
- HttpClient多文件上传代码及普通参数中文乱码问题解决
该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...
- Lucene04-Lucene的基本使用
Lucene04-Lucene的基本使用 导入的包 import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.ap ...
- 通过代数,数字,欧几里得平面和分形讨论JavaScript中的函数式编程
本文是对函数式编程范式的系列文章从而拉开了与以下延续一个. 介绍 在JavaScript中,函数只是对象.因此,可以构造函数,作为参数传递,从函数返回或分配给变量.因此,JavaScript具有一流的 ...
- 【Android UI】自定义带按钮的标题栏
自定义标题栏在很多的android app中很常见,可以说是一种很有用的UI设计方法.自 己也本着学习的态度,经过一番各种坑,终于实现了,现总结如下: 一:大致流程 1. 对指定的andro ...
- 宽度总结-scrollWidth,clientWidth,offectWidth
平时写js的时候,有时候会遇到这样的情况,需要去计算元素或者屏幕的宽度,再进行不同的处理,但是宽度真的有不少,很容易搞混,特此总结下,也希望大家亲测下,这样比较有体会,记得牢固些. 1.scrollW ...