【BZOJ 1208】[HNOI2004]宠物收养所
2024-08-31 11:37:13
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
用set搞。
(因为规定了不会有相同特点值的东西。
所以可以不用multiset.
那么每次用lower_bound找离它最近的配对就好了
【代码】
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll MOD = 1000000;
int n;
set<ll> myset[2];
ll ans = 0;
int main()
{
scanf("%d",&n);
for (int i = 1;i <= n;i++){
int a,b;
scanf("%d%d",&a,&b);
myset[a].insert(b);
for (int j = 0;j<=1;j++)
if ((int)myset[j].size()==1 && (int)myset[1-j].size()>0){
ll x = (*myset[j].begin());
myset[j].erase(myset[j].begin());
set<ll>::iterator temp = myset[1-j].lower_bound(x);
if (temp==myset[1-j].begin()){
//全都大于等于x
ans = (ans+(*temp)-x)%MOD;
myset[1-j].erase(temp);
break;
}else if (temp==myset[1-j].end()){
//全都比x来的小
temp--;
ans= (ans + x-(*temp))%MOD;
myset[1-j].erase(temp);
}else{
ll temp1 = abs(x-(*temp));
temp--;
ll temp2 = abs(x-(*temp));
if (temp2<=temp1){
ans=(ans + temp2)%MOD;
myset[1-j].erase(temp);
}else{
ans=(ans + temp1)%MOD;
temp++;
myset[1-j].erase(temp);
}
}
}
}
printf("%lld\n",ans);
return 0;
}
最新文章
- springboot: mybatis集成参考
- VMware创建Linux虚拟机并安装CentOS(一)
- Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper
- linux网络命令
- List<;T>;中Exists 和Contains的区别
- Android(java)学习笔记184:生成 4种 不同权限的文件
- JAAS - Document
- DSP的cache一般在何时会生效,防止在cache使用造成数据不一致
- Google AdSense的CPC点击单价超百度联盟(2014)
- 为什么 Linux Mint 比 Ubuntu好?
- CreateMutex()参数报错问题
- cc2530 -----SampleApp.c解析
- ArrayList类
- dedecms mysql连接错误:#1040 - Too many connections
- jQueryUI Autocomplete插件使用入门教程(最新版)---------转载
- Tomcat 请求处理流程详解
- Docker镜像中的base镜像理解
- Kafka下的生产消费者模式与订阅发布模式
- busybox tar 命令支持 tar.gz
- MyEclipse格式化JSP代码,其中Javascript无法格式化的原因
热门文章
- IOS - JSON数据解析 小3种方法
- HDU 4458 Shoot the Airplane( 判断点在多边形内外 )
- Mybatis解决了JDBC编程哪些问题
- NYIST 973 天下第一
- [CSS3] Create Dynamic Styles with CSS Variables
- kqueue演示样例
- 【struts2】struts2中的流接收与流发送
- cocos2d-x 移植到android中编译的一些问题:fatal error: Box2D/Box2D.h: No such file or directory&;quot;
- systemd服务管理---systemctl命令列出所有服务
- JAXB xml与javaBean的转换