tjoi2018
1.[TJOI2018]数学计算
傻逼题
会发现符合线段树分治的特点
每个数的操作范围都是连续的
然后就等于区间修改了
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
#define ll long long
#define me(x) memset(x,0,sizeof(x))
#define mid ((h+t)>>1)
namespace IO
{
char ss[<<],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,,<<,stdin),A==B)?EOF:*A++;
}
template<class T>void read(T &x)
{
rint f=,c; while (c=gc(),c<||c>) if (c=='-') f=-; x=(c^);
while (c=gc(),c>&&c<) x=(x<<)+(x<<)+(c^); x*=f;
}
char sr[<<],z[]; int Z,C=-;
template<class T>void wer(T x)
{
if (x<) sr[++C]='-',x=-x;
while (z[++Z]=x%+,x/=);
while (sr[++C]=z[Z],--Z);
}
IL void wer1()
{
sr[++C]=' ';
}
IL void wer2()
{
sr[++C]='\n';
}
template<class T>IL void maxa(T &x,T y) {if (x<y) x=y;}
template<class T>IL void mina(T &x,T y) {if (x>y) x=y;}
template<class T>IL T MAX(T x,T y){return x>y?x:y;}
template<class T>IL T MIN(T x,T y){return x<y?x:y;}
};
using namespace IO;
int n,mo;
const int N=2e5;
int s[N],t[N];
struct sgt{
ll lazy[N*];
void clear()
{
rep(i,,N*-) lazy[i]=;
}
void change(int x,int h,int t,int h1,int t1,int k)
{
if (h1<=h&&t<=t1)
{
(lazy[x]*=k)%=mo; return;
}
if (h1<=mid) change(x*,h,mid,h1,t1,k);
if (mid<t1) change(x*+,mid+,t,h1,t1,k);
}
ll query(int x,int h,int t,int pos,ll k)
{
(k*=lazy[x])%=mo;
if (h==t) return k;
if (pos<=mid) return query(x*,h,mid,pos,k);
else return query(x*+,mid+,t,pos,k);
}
}S;
int main()
{
int T;
read(T);
rep(tt,,T)
{
read(n); read(mo); me(s); me(t);
int kk,x;
rep(i,,n)
{
read(kk); read(x);
if (kk==)
{
s[i]=x; t[i]=n;
} else t[x]=i-;
}
S.clear();
rep(i,,n)
if (t[i])
S.change(,,n,i,t[i],s[i]);
rep(i,,n)
wer(S.query(,,n,i,1ll)),wer2();
}
fwrite(sr,,C+,stdout);
return ;
}
出题人语文水平真没话说
就是求dag最小可相交路径覆盖(网上还有人说有向图那这根本做不了)
比较显然的是如果我们确定了要取哪些点就变成了上述问题
按照网络流的一般套路应该是逐渐增大然后逐渐流量增大的
但是路径覆盖等于n-最大流 所以流量是在不断变小的
于是我们只能选择二分答案了
另外可相交路径覆盖
需要先求个传递闭包,然后再连边
如果不想交路径覆盖 就直接连边
连边方法就是将点拆成入点和出点 从一个的出点往另一个的入点连边
由于floyd没有用bitset写。。。 权值没有离散化。。。
常数挺大的。。反正这种题能过就行了。。。
代码:
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
#define ll long long
#define me(x) memset(x,0,sizeof(x))
#define mid ((h+t)>>1)
namespace IO
{
char ss[<<],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,,<<,stdin),A==B)?EOF:*A++;
}
template<class T>void read(T &x)
{
rint f=,c; while (c=gc(),c<||c>) if (c=='-') f=-; x=(c^);
while (c=gc(),c>&&c<) x=(x<<)+(x<<)+(c^); x*=f;
}
char sr[<<],z[]; int Z,C=-;
template<class T>void wer(T x)
{
if (x<) sr[++C]='-',x=-x;
while (z[++Z]=x%+,x/=);
while (sr[++C]=z[Z],--Z);
}
IL void wer1()
{
sr[++C]=' ';
}
IL void wer2()
{
sr[++C]='\n';
}
template<class T>IL void maxa(T &x,T y) {if (x<y) x=y;}
template<class T>IL void mina(T &x,T y) {if (x>y) x=y;}
template<class T>IL T MAX(T x,T y){return x>y?x:y;}
template<class T>IL T MIN(T x,T y){return x<y?x:y;}
};
using namespace IO;
int n,mo;
const int N=2e5;
int s[N],t[N];
struct sgt{
ll lazy[N*];
void clear()
{
rep(i,,N*-) lazy[i]=;
}
void change(int x,int h,int t,int h1,int t1,int k)
{
if (h1<=h&&t<=t1)
{
(lazy[x]*=k)%=mo; return;
}
if (h1<=mid) change(x*,h,mid,h1,t1,k);
if (mid<t1) change(x*+,mid+,t,h1,t1,k);
}
ll query(int x,int h,int t,int pos,ll k)
{
(k*=lazy[x])%=mo;
if (h==t) return k;
if (pos<=mid) return query(x*,h,mid,pos,k);
else return query(x*+,mid+,t,pos,k);
}
}S;
int main()
{
int T;
read(T);
rep(tt,,T)
{
read(n); read(mo); me(s); me(t);
int kk,x;
rep(i,,n)
{
read(kk); read(x);
if (kk==)
{
s[i]=x; t[i]=n;
} else t[x]=i-;
}
S.clear();
rep(i,,n)
if (t[i])
S.change(,,n,i,t[i],s[i]);
rep(i,,n)
wer(S.query(,,n,i,1ll)),wer2();
}
fwrite(sr,,C+,stdout);
return ;
}
3.
好像老早写过了就不看了
4.[TJOI2018]异或
我觉得我有点傻逼。。。
首先这题显然是0/1trie去匹配
然后关键在于怎么实现子树和链操作
于是我很自然的想到了树链剖分+线段树(每个节点上一课trie)
于是成功达到了时间$nlog^3{n}$ 空间$nlog^2{n}$的傻逼境界
不过开O2还3s再加上树剖的常数小我觉得是跑的过得??
但是空间就gg了啊 我们得记录ls,rs n*30*20*2这个没法艹过去
虽然trie的空间可能到不了n*30但感觉上还是过不去所以就不写了
另外如果空间只超过一点的话我记得有个技巧是把ls,rs压成一个unsigned int+一个unsigned short int
然后合成一个ll 再分成两个23位
所以还是看正解吧。。
因为是trie树 所以支持差分
那么建立可持久化0/1trie然后差分做就可以了
对于子树是按照dfn建立可持久,链是按照父亲建立
代码:
tjoi2018的更多相关文章
- bzoj 5338: [TJOI2018]xor (树链剖分+可持久化01Trie)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5338 题面: 5338: [TJOI2018]xor Time Limit: 30 Sec ...
- [模板] dp套dp && bzoj5336: [TJOI2018]party
Description Problem 5336. -- [TJOI2018]party Solution 神奇的dp套dp... 考虑lcs的转移方程: \[ lcs[i][j]=\begin{ca ...
- 洛谷P4590 [TJOI2018]游园会(状压dp LCS)
题意 题目链接 Sol 这个题可能是TJOI2018唯一的非模板题了吧.. 考虑LCS的转移方程, \[f[i][j] = max(f[i - 1][j], f[i][j - 1], f[i - 1] ...
- 【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)
[BZOJ5339][TJOI2018]教科书般的亵渎(斯特林数) 题面 BZOJ 洛谷 题解 显然交亵渎的次数是\(m+1\). 那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1} ...
- 【BZOJ5337】[TJOI2018]str(动态规划,哈希)
[BZOJ5337][TJOI2018]str(动态规划,哈希) 题面 BZOJ 洛谷 题解 就很呆... 显然按层\(dp\),如果能够匹配上就进行转移,直接哈希判断是否能够匹配就好了... #in ...
- 【BZOJ5336】[TJOI2018]party(动态规划)
[BZOJ5336][TJOI2018]party(动态规划) 题面 BZOJ 洛谷 题解 这题好神仙啊... 考虑普通的\(LCS\)的\(dp\),\(f[i][j]=\max\{f[i-1][j ...
- 【BZOJ5335】[TJOI2018]智力竞赛(二分图匹配)
[BZOJ5335][TJOI2018]智力竞赛(二分图匹配) 题面 BZOJ 洛谷 题解 假装图不是一个DAG想了半天,.发现并不会做. 于是假装图是一个DAG. 那么显然就是二分答案,然后求一个最 ...
- loj#2574. 「TJOI2018」智力竞赛 (路径覆盖)
目录 题目链接 题解 代码 题目链接 loj#2574. 「TJOI2018」智力竞赛 题解 就是求可重路径覆盖之后最大化剩余点的最小权值 二分答案后就是一个可重复路径覆盖 处理出可达点做二分图匹配就 ...
- 洛谷 P4593 [TJOI2018]教科书般的亵渎
洛谷 P4593 [TJOI2018]教科书般的亵渎 神仙伯努利数...网上一堆关于伯努利数的东西但是没有证明,所以只好记结论了? 题目本质要求\(\sum_{i=1}^{n}i^k\) 伯努利数,\ ...
随机推荐
- sumafan:python爬虫多线程爬取数据小练习(附答案)
抓取 https://www.cnbeta.com/ 首页中新闻内容页网址, 抓取内容例子: https://hot.cnbeta.com/articles/game/825125 将抓取下来的内容页 ...
- VS2008中 ATL CLR MFC Win32 区别
ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用MFC,使用API函数编的程序.MFC.ATL和CLR是VC2 ...
- 谈谈asp,php,jsp的优缺点
谈谈asp,php,jsp的优缺点 http://hi.baidu.com/lhyboy/item/f95bac264c38830d72863e41 asp.php.asp.net.jsp等主流网 ...
- JsRender 前端渲染模板基础学习
JsRender前端渲染模板 使用模板,可以预先自定义一些固定格式的HTML标签,在需要显示数据时,再传入真实数据组装并展示在Web页中:避免了在JS中通过“+”等手动分割.连接字符串的复杂过程:针对 ...
- for循环中按条件删除数据元素
var managerList = [ { id: 0, title: '小小消息的标题1', small: '小小消息内容', newsFlag:true, }, { id: 1, title: ' ...
- swift 学习- 11 -- 属性
// '属性'将值跟特定的类, 结构体或枚举关联, 存储属性常量或变量作为实例的一部分,而计算属性计算(不是存储) 一个值, 计算属性可以用于 类, 结构体, 枚举, 存储属性只能用于 类 和 结构体 ...
- jquery easyui datagrid 加每页合计和总合计
jquery easyui datagrid 加每页合计和总合计 一:效果图 二:代码实现 这个只有从后台来处理 后台根据rows 和page两个参数返回的datatable 命名为dt 然后根据dt ...
- 遇到的一个移动端从下往上过渡的弹框,在Android下过渡动画的优化问题。
优化之前: /* 分享弹框样式 */ .popUpDiv { width: 100vw; height: 100vh; transition: all 0.5s ease; position: fix ...
- OSError: cannot identify image file
OSError: cannot identify image file <_io.BytesIO object at 0x00000236DD598BF8> 说一下为什么会出现OSErro ...
- selenium之 chromedriver与chrome版本映射表(更新至v2.33)
看到网上基本没有最新的chromedriver与chrome的对应关系表,便兴起整理了一份如下,希望对大家有用: chromedriver版本 支持的Chrome版本 v2.33 v60-62 v2. ...