佳木斯集训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$条边,使得任意两点间最多有一条路径 ...
随机推荐
- mac-VBox-Centos6.6安装增强功能
1. 更新内核 yum update kernel 2.安装依赖包 yum install kernel-headers yum install kernel-devel yum install gc ...
- Python C3 算法 手动计算顺序
Python C3 算法 手动计算顺序 手动计算类继承C3算法原则: 以所求类的直接子类的数目分成相应部分 按照从左往右的顺序依次写出继承关系 继承关系第一个第一位,在所有后面关系都是第一个出现的 ...
- CAD2014学习笔记-图层图案图块
基于 虎课网huke88.com CAD教程 对象特性 选择对象点击特性栏/或右键点击特性 颜色:color 图层 线型:线的类型,如点状线.虚线等,若不改变则默认新建的线为该类型 线型比例:不同类型 ...
- baserecyclerviewadapterhelper -- setOnItemChildClickListener出现的问题
出现问题 使用baserecyclerviewadapterhelper 的时候使用 adapter.setOnItemChildClickListener()方法,点击没有反应. adapter.s ...
- [剑指offer] 3. 从头到尾打印链表
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 利用容器,遍历一遍加入到一个新容器里,然后反置输出. vector 用 reverse stack 则直接一个个出栈 ...
- 基于 HTML5 WebGL 的民航客机飞行监控系统
前言 前些日子出差,在飞机上看到头顶的监控面板,除了播放电视剧和广告之外,还会时不时的切换到一个飞机航行的监控系统,不过整个监控系统让人感到有一点点的简陋,所以我就突发奇想制作了一个采用 HT for ...
- ajax同步与异步 理解
例如,小明去餐馆排队点餐,前台服务员将小明的菜单告诉厨师进行制作,此时小明后面排队的人就一直等着,直到厨师制作完成,把饭菜送到小明手里后离开,后面的人才能继续点餐:这就是同步处理 但是,如果前台服务员 ...
- c++语言常用转义序列符号
\a 响铃 \n 换行符 \r 回车符 t 水平制表符(Tab键) \b 退格符(BackSpace键) \\ 反斜线 \' ...
- Linux中的update和upgrade的作用
update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包.update是下载源里面的metad ...
- eclipse(java windows)
百度云:链接:http://pan.baidu.com/s/1i4Zjv97 密码:u0qh 官方下载网址:http://www.eclipse.org/downloads/eclipse-pa ...