XTU1266:Parentheses(贪心+优先队列)
2024-09-04 03:45:16
传送门
题意
从左到右有n个连续的组,每一组有Li个括号,要么全是左括号,要么全是右括号,以及该组的每一个左括号翻成右括号,
或者右括号翻成左括号的花费Di.可以对这n个组的括号进行翻转,每一个括号都可以选择翻或者不翻,使整个括号序列是一个合法括号序列。
分析
首先读入的时候将所有左括号变成右括号,并将费用变成负费用
遍历组,每次计算当前需要多少左括号,条件是如果当前有n个括号,则左括号的个数需>=(n+1)/2。并且将该组括号入优先队列。取优先队列队首进行处理即可
trick
1.XTU的读入读出都要%I64d,就很GG
2.代码一开始很多预处理没写好,要注意
3.大家不妨做做codeforces 3D
代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
#pragma comment(linker, "/STACK:102400000,102400000")
inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}
int n;
struct node
{
ll num,cost;
bool operator<(const node &p)const
{
return (cost==p.cost)?num<p.num:cost>p.cost;
}
}a[100100];
ll ans;
ll pre,sum,tmp;
priority_queue<node>q;
char s[10];
int main()
{
while(scanf("%d",&n)!=EOF)
{
while(!q.empty()) q.pop();
ans=pre=sum=0;
for(int i=1;i<=n;++i)
{
scanf("%I64d%s%I64d",&a[i].num,s,&a[i].cost);
if(s[0]=='(') {ans+=a[i].num*a[i].cost;
a[i].cost=-a[i].cost;}
}
for(int i=1;i<=n;++i)
{
sum+=a[i].num;
tmp=(sum+1)/2-pre;
pre=(sum+1)/2;
node tmp1;
tmp1.cost=a[i].cost;tmp1.num=a[i].num;
q.push(tmp1);
//printf("tmp=%lld\n",tmp);
while(tmp>0&&!q.empty())
{
node tmp2=q.top();q.pop();
//printf("%lld %lld\n",tmp2.num,tmp2.cost);
if(tmp2.num>tmp)
{
tmp2.num-=tmp;
ans+=tmp2.cost*tmp;
q.push(tmp2);
break;
}
else
{
if(tmp2.num==tmp)
{
ans+=tmp2.cost*tmp;break;
}
else
{
tmp-=tmp2.num;
ans+=tmp2.cost*tmp2.num;
}
}
}
}
printf("%I64d\n",ans);
}
return 0;
}
最新文章
- [转]How do you create a custom AuthorizeAttribute in ASP.NET Core?
- openssl+前端jsrsa签名+后端nodejs验签
- SQL Server 2005中的CTE递归查询得到一棵树
- fileUpload1.HasFile的返回值永远都是false的问题处理
- [转] 值得推荐的C/C++框架和库
- php部分(查看文件、建立站点、语法变量、变量的几个方法、“全局局部变量的调用”、static、函数参数的作用域);
- The OAuth 2.0 Authorization Framework-摘自https://tools.ietf.org/html/rfc6749
- SQLServer触发器的使用
- MFC中控件的TAB顺序 ----转载
- 技能CDDemo(点击鼠标左键实现技能界面旋转)
- 高通msm8909耳机调试
- 项目Beta冲刺Day2
- [SQL]LeetCode183. 从不订购的客户 | Customers Who Never Order
- tomcat和jdk版本兼容(Tomcat版本要比jdk高)
- Study 2 —— 图片热点区域
- day07-多表查询
- cisco 3850 GBIC报错处理
- 项目引入非配置的文件,打成war包后测试报错的可能原因
- vue和bootstrap的select控件貌似有冲突?
- Python入门-初始面向对象
热门文章
- HDU 2825 Wireless Password (AC自己主动机,DP)
- CSS 的导入方式 (link or import ?)
- 【hdu】Mayor&;#39;s posters(线段树区间问题)
- Linux启动过程笔记
- Jenkins+maven+SVN+Tomcat部署过程
- 还在为开发APP发愁? 这里就有现成通用的代码!
- 小程序登录方式切换 不做url跳转
- java里类方法和实例方法
- iOS开发UIScrollView常见属性和方法
- UVA11270 Tiling Dominoes —— 插头DP