20191004 「HZOJ NOIP2019 Round #9」20191004模拟
综述
第一次 rk1 ,激动。
题目是 COCI 18/19 Round #1 的三至五题。
得分 \(100+100+20\)
\(\mathrm{cipele}\)
问题描述
题解
二分答案+贪心
发现“最大值最小”,自然想到二分答案。
对 \(a,b\) 排序,通过一些操作保证 \(a\) 比 \(b\) 短。
如果 \(b_j\) 不能被 \(a_i\) 选择,那么它一定不能被 \(a_k(k>i)\) 选择。
基于这个贪心配对即可。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
void read(int &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();
if(ch=='-') ch=getchar(),fh=-1;
else fh=1;
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
x*=fh;
}
const int maxn=100000+7;
const int INF=0x3f3f3f3f;
int n,m,mxa=-INF,mia=INF,mxb=-INF,mib=INF;
int a[maxn],b[maxn];
int l,r,mid,ans;
bool check(){
int j=1;bool eps;
for(int i=1;i<=n;i++){
eps=0;
for(;j<=m;j++){
if(abs(a[i]-b[j])<=mid){
++j;eps=1;break;
}
}
if(!eps) return false;
}
return true;
}
void deal(){
for(int i=1;i<=n;i++) swap(a[i],b[i]);
swap(n,m);
}
int main(){
freopen("cipele.in","r",stdin);freopen("cipele.out","w",stdout);
read(n);read(m);
for(int i=1;i<=n;i++) read(a[i]),mxa=max(mxa,a[i]),mia=min(mia,a[i]);
for(int i=1;i<=m;i++) read(b[i]),mxb=max(mxb,b[i]),mib=min(mib,b[i]);
if(n>m) deal();
sort(a+1,a+n+1);sort(b+1,b+m+1);
l=0,r=max(abs(mxa-mib),abs(mxb-mia));
while(l<=r){
mid=(l+r)>>1;
if(check()){
ans=mid;r=mid-1;
}
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}
\(\mathrm{strah}\)
问题描述
题解
单调栈维护最大矩形
打表找规律
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
#define int long long
void read(int &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();
if(ch=='-') ch=getchar(),fh=-1;
else fh=1;
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
x*=fh;
}
void fr(int &x){
char ch=1;
while(ch!='.'&&ch!='#') ch=getchar();
if(ch=='.') x=0;
else x=1;
}
const int maxn=2000+7;
int sta[maxn],top;
int n,m,a[maxn][maxn];
int lft[maxn],rgt[maxn];
int tmp[maxn];
int ans;
int solve(int j){
int a=j-lft[j]+1,b=rgt[j]-j+1;
return a*(a+1)/2*b+b*(b+1)/2*a-a*b;
}
signed main(){
freopen("strah.in","r",stdin);freopen("strah.out","w",stdout);
read(n);read(m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fr(a[i][j]);
}
}
for(int i=1;i<=n;i++){
top=0;
for(int j=1;j<=m;j++){
if(!a[i][j]) tmp[j]++;
else tmp[j]=0;
while(top&&tmp[sta[top]]>tmp[j]){
rgt[sta[top]]=j-1;--top;
}
lft[j]=sta[top]+1;
sta[++top]=j;
}
while(top) rgt[sta[top--]]=m;
for(int j=1;j<=m;j++){
ans=ans+tmp[j]*(tmp[j]+1)*solve(j)/2;
}
}
printf("%lld\n",ans);
return 0;
}
\(\mathrm{teoreticar}\)
问题描述
题解
只会暴力
暴力染色,判断是否可行
这样貌似求出来的就是 \(C\) .
20191004 「HZOJ NOIP2019 Round #9」20191004模拟的更多相关文章
- 20191102 「HZOJ NOIP2019 Round #12」20191102模拟
先开坑. md原题写挂我也真是... 100+20+10 白夜 打表大法吼 显然,不在环上的点对答案的贡献是 \((k-cycle)^{k-1}\) . 打表得到环上的递推式,矩阵一下乘起来就好了. ...
- 20191003 「HZOJ NOIP2019 Round #8」20191003模拟
综述 试题为常州集训2019SCDay2 得分\(100+30(0)+28\) 时之终结 问题描述 HZOJ1310 题解 构造题. 发现部分分有一档是 \(Y\) 是 \(2^x\) ,于是自然想到 ...
- 20190922 「HZOJ NOIP2019 Round #7」20190922模拟
综述 这次是USACO2019JAN Gold的题目. \(\mathrm{Cow Poetry}\) 题解 因为每句诗的长度一定是\(k\),所以自然而然想到背包. 设\(opt[i][j]\)代表 ...
- 「LibreOJ NOI Round #2」不等关系
「LibreOJ NOI Round #2」不等关系 解题思路 令 \(F(k)\) 为恰好有 \(k\) 个大于号不满足的答案,\(G(k)\) 表示钦点了 \(k\) 个大于号不满足,剩下随便填的 ...
- LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿
二次联通门 : LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 /* LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 dp 记录一下前驱 ...
- 「LibreOJ NOIP Round #1」旅游路线
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...
- 「LibreOJ NOI Round #1」验题
麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然 ...
- #509. 「LibreOJ NOI Round #1」动态几何问题
下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...
- LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)
哎一开始看错题了啊T T...最近状态一直不对...最近很多傻逼题都不会写了T T 考虑距离较大肯定不能塞进状态...钱数<=n^2能够承受, 油量再塞就不行了...显然可以预处理出点i到j走c ...
随机推荐
- Spring Cloud 如何搭建eureka
Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用File - NewProject ...
- LG2145 「JSOI2007」祖码 区间DP
问题描述 LG2145 题解 把颜色相同的一段看做一个点. 然后类似于合唱队区间DP即可. 但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点. \(\mathrm{Code}\) # ...
- codeforces 1027E. Inverse Coloring(计数)
一开始发现的性质是确定了第一行后,后面的行只需要考虑和前面的行相同或者不同,整个过程只需要考虑行,构出的图一定符合性质(即同样满足列的性质),但是接下来死活定义不出状态,事实证明自己还是想的太少了 思 ...
- javascript中优雅的处理async和await异常
let handler = async function(needErr) { return new Promise((resolve, reject) => { if (needErr) { ...
- Mac下vim安装taglist
1 安装taglist taglist 的安装非常简单.从vim官网的这个链接 http://www.vim.org/scripts/script.php?script_id=273,就可以下载到ta ...
- 关于js里的那一堆事件
分类 事件名 触发描述 一般事件 onclick 鼠标点击事件 ondbclick 鼠标双击事件 onmousedown/up 鼠标按下/松开事件 onmouseover/move/out 鼠标悬浮/ ...
- ElasticSearch安装中文分词器IK
1.安装IK分词器,下载对应版本的插件,elasticsearch-analysis-ik中文分词器的开发者一直进行维护的,对应着elasticsearch的版本,所以选择好自己的版本即可.IKAna ...
- C#简单的枚举及结构
using System; namespace program { enum WeekDays { a, b, c = ,//11 赋值以后就变成11,不赋值就是2 d, e, f, g }//不能输 ...
- java基础(14):Eclipse、面向对象、自定义数据类型的使用
1. Eclipse的应用 1. 常用快捷操作 Ctrl+T:查看所选中类的继承树 例如,在下面代码中,选中Teacher类名,然后按Ctrl+T,就会显示出Teacher类的继承关系 //员工 ab ...
- 升鲜宝V2.0_杭州生鲜配送行业,条码标签管理之批量打印标签与分配配送任务相关操作说明_升鲜宝生鲜配送系统_15382353715_余东升
升鲜宝V2.0_杭州生鲜配送行业,条码标签管理之批量打印标签与分配配送任务相关操作说明_升鲜宝供应链管理生鲜配送系统 题外话,随着国家对食材安全这个行业重视性越来越强,最近国家又出具了一些 ...