【LGR-052】洛谷9月月赛II(加赛)
题解:
没打。。。
ab题满世界都过了应该没什么意思
c题是个比较有意思的思维题(先看了题解才会的。。。)
我们考虑这么一件事情
没钥匙的人出门后
门一定是开着的
他进来的时候,门一定是开着的
其他时候,一定门能关着比较好
但是这个东西并不是很好维护,因为可能重复算
我们考虑重新排个序
我们把a[]在b[]前面的那个排在他前面
这样我们只需要记录一下上一个取了没有就可以了
感觉说出来不是很好理解这个东西。。。
d题还是个有点难度的数据结构题
一件比较显然的事情是我们对a的操作等价于是要
找当前x修改后是不是前缀最大值,以及他能延伸到哪(这个权值线段树显然可以维护)
然后就变成了区间覆盖成一个值了
然后 刚开始就想错了。。。
刚开始想的是去考虑这一段的值是怎么通过原先值变化的
其实这样反而不好做
直接去暴力统计现在的值
那么我们要知道的其实就是 当前区间>k的数的个数以及<k的数的乘积
这玩意我好像只会树套树或者cdq分治+排序+线段树。。。(写起来挺烦的啊)
于是复杂度就是nlog^2n了
不知道正解是怎么玩的。。。
代码:
c:
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
const int N=;
const int INF=1e9;
struct re{
int a,b,c,pos;
}a[N],b[N],c1[N],c2[N],p[N];
int pre[N],pos[N],x1[N],x2[N],f[N][N][];
bool tt[N];
bool cmp(re x,re y)
{
return x.b<y.b;
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
rep(i,,n)
{
cin>>a[i].a>>a[i].b; a[i].pos=i;
b[i*-].a=i*-; b[i*-].b=a[i].a;
b[i*].a=i*; b[i*].b=a[i].b;
}
sort(a+,a+n+,cmp);
sort(b+,b+*n+,cmp);
rep(i,,n) pos[a[i].pos]=i;
rep(i,,n*)
{
if (b[i].a%==&&b[i-].a%==)
pre[b[i].a/]=(b[i-].a+)/;
if (b[i].a%==) x2[b[i].a/]=b[i].b-b[i-].b;
if (b[i].a%==) x1[(b[i].a+)/]=b[i+].b-b[i].b;
}
int cnt=;
rep(i,,n)
if (!tt[i])
{
int x=i;
p[++cnt].a=a[x].a; p[cnt].b=a[x].b; p[cnt].c=; tt[i]=;
if (pos[pre[a[x].pos]]!=x)
c1[cnt].a=x1[a[x].pos],c1[cnt].b=x2[a[x].pos];
else
c1[cnt].a=x1[a[x].pos],c1[cnt].b=;
while (pos[pre[a[x].pos]]&&pos[pre[a[x].pos]]!=x)
{
x=pos[pre[a[x].pos]];
tt[x]=;
p[++cnt].a=a[x].a; p[cnt].b=a[x].b; p[cnt].c=;
c1[cnt].a=x1[a[x].pos]; c1[cnt].b=x2[a[x].pos];
}
}
rep(i,,n)
rep(j,,m)
{
f[i][j][]=f[i][j][]=INF;
if (p[i].c)
{
if (j) f[i][j][]=min(f[i][j][],min(f[i-][j-][],f[i-][j-][]));
f[i][j][]=min(f[i][j][],f[i-][j][]+c1[i].b);
f[i][j][]=min(f[i][j][],f[i-][j][]+c1[i].b+c1[i].a);
} else
{
if (j) f[i][j][]=min(f[i][j][],min(f[i-][j-][],f[i-][j-][]));
f[i][j][]=min(f[i][j][],f[i-][j][]+c1[i].b+c1[i].a);
f[i][j][]=min(f[i][j][],f[i-][j][]+c1[i].b+c1[i].a);
}
}
cout<<min(f[n][m][],f[n][m][]);
return ;
}
【LGR-052】洛谷9月月赛II(加赛)的更多相关文章
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
- 洛谷9月月赛II 赛后瞎写
看错比赛时间了....结果发现的时候已经开始了半个小时,并且当时正准备睡午觉qwq 于是就水了个t1就 去睡 跑了 T2 写着写着然后看了一发评讲被辣鸡思路给绕了进去最后发现自己宛若一个智障 类似桶的 ...
- 洛谷 4933 洛谷10月月赛II T2 大师
[题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...
- 洛谷 4932 洛谷10月月赛II T1 浏览器
[题解] x xor y的结果在二进制下有奇数个1,等价于x与y在二进制下的1的个数之和为奇数,因为x xor y减少的1的个数一定是偶数(两个数这一位都为1,xor的结果为0,减少了2个1) 那么答 ...
- 洛谷10月月赛II
#A: P4924 [1007]魔法少女小Scarlet 这道题考了矩阵旋转 其实很考验推公式的能力和代码能力 这里有个小技巧 可以设(x, y)为原点,然后去推公式,然后实际操作中横坐标加上x,纵坐 ...
- 【LGR-061】洛谷10月月赛 II & X Round 4 Div.1&Div 2
X Round的题目质量还是一如既往的高 然而每次周末我都要写作业没法用心打233主要是被陈指导放了鸽子 占坑代填(最近坑开的有点多)
- 【CSGRound2】逐梦者的初心(洛谷11月月赛 II & CSG Round 2 T3)
题目描述# 给你一个长度为\(n\)的字符串\(S\). 有\(m\)个操作,保证\(m≤n\). 你还有一个字符串\(T\),刚开始为空. 共有两种操作. 第一种操作: 在字符串\(T\)的末尾加上 ...
- [LGR-054]洛谷10月月赛II
浏览器 结论popcnt(x^y)和popcnt(x)+popcnt(y)的奇偶性相同. 然后就是popcnt为奇数的乘为偶数的.预处理一下\(2^{16}\)次方以内的popcnt,直接\(O(1) ...
随机推荐
- 使用C++编写linux多线程程序
前言 在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程 ...
- lvs为何不能完全替代DNS轮询
1)接入层架构要考虑的问题域为:高可用.扩展性.反向代理+扩展均衡 2)nginx.keepalived.lvs.f5可以很好的解决高可用.扩展性.反向代理+扩展均衡的问题 3)水平扩展scale o ...
- vuex之 mapState, mapGetters, mapActions, mapMutations 的使用
一.介绍 vuex里面的四大金刚:State, Mutations,Actions,Getters (上次记得关于vuex笔记 http://www.cnblogs.com/adouwt/p/8283 ...
- MySQL的时间字段转换
使用函数DATE_FORMAT(date,format)进行转换,如 # 输出2017 :: select date_format(now(),'%Y-%c-%d %h:%i:%s'); # 输出20 ...
- appium+java(四)微信公众号自动化测试实践
前言 随着手机阅读的普遍应用,微信公众号阅读,更为普遍,微信和qq一样,都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制).实质上也是混合应用的一种,现在很多app ...
- linux杀死僵尸进程
用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 sta ...
- 洛谷P3247 [HNOI2016]最小公倍数 [分块,并查集]
洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边. 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边. 然而,为了达到这最小公倍数,又 ...
- Hive学习01-基础常见问题
理论: 什么是hive: 1. Hive旨在实现轻松的数据汇总,即时查询和分析大量数据. 2. 它提供了SQL,使用户可以轻松地进行临时查询,汇总和数据分析. 3. Hive可以使用用户定义函数( ...
- centos6.5 python命令行模式左右建无法使用
我的虚拟机是centos6.5,自带python2.6:安装了Python2.7(安装了pip管理工具)后,在python2.7命令行模式下,左右键及退格键无法使用,基于以上情况,我进行了百度: 第一 ...
- log4j 知识点
什么是log4j? log4j 是一个帮助程序员将日志语句输出到各种输出目标的工具. log4j 包的设计使得日志语句可以保留在已发布的代码中,而不会产生高性能成本. log4j 使用分层记录器可以有 ...