洛谷P2831 愤怒的小鸟(状压dp)
题意
Sol
这题。。。。我样例没过就A了??。。算了,就当是样例卡精度吧。。
直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数
转移的时候判断一下一次能干掉多少鸟。。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int MAXN = 100001;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N, M, a[MAXN], block, siz[MAXN], flag[MAXN], rak[MAXN], tp[MAXN];
vector<int> v[MAXN];
set<int> s[MAXN];
int comp(const int &x, const int &y) {
return a[x] == a[y] ? x < y : a[x] < a[y];
}
int main() {
N = read(); M = read(); block = sqrt(M);
for(int i = 1; i <= N; i++) a[i] = read(), tp[i] = i;
sort(tp + 1, tp + N + 1, comp);
for(int i = 1; i <= N; i++) rak[tp[i]] = i;
for(int i = 1; i <= M; i++) {
int x = read(), y = read();
if(rak[x] > rak[y]) v[x].push_back(y), siz[x]++;
else v[y].push_back(x), siz[y]++;
}
LL ans = 0;
for(int i = 3; i <= N; i++) {
int x = tp[i];
for(int j = 0, to; j < v[x].size(); j++) flag[to = v[x][j]] = i;
for(int j = 0, to; j < v[x].size(); j++) {
if(siz[to = v[x][j]] <= block) {
for(int k = 0; k < v[to].size(); k++)
if(flag[v[to][k]] == i) ans += a[x];
} else {
for(int k = 0; k < v[x].size(); k++)
if(s[to].count(v[x][k])) ans += a[x];
}
s[x].insert(to);
}
}
cout << ans;
return 0;
}
/*
2 1
13 17
2 1
*/
洛谷P2831 愤怒的小鸟(状压dp)的更多相关文章
- [Luogu P2831] 愤怒的小鸟 (状压DP)
题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. ...
- 【题解】P2831 愤怒的小鸟 - 状压dp
P2831愤怒的小鸟 题目描述 \(Kiana\) 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 \((0,0)\) 处,每次 \(Kiana\) 可以 ...
- P2831 愤怒的小鸟 状压dp
这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...
- 洛谷P2831 愤怒的小鸟
洛谷P2831 愤怒的小鸟 原题链接 题解 首先简单数学公式送上. \(ax_1^2+bx_1=y_1\) \(ax_2^2+bx_2=y_2\) \(ax_1^2x_2+bx_1x_2=y_1x_2 ...
- 洛谷P2831 愤怒的小鸟——贪心?状压DP
题目:https://www.luogu.org/problemnew/show/P2831 一开始想 n^3 贪心来着: 先按 x 排个序,那么第一个不就一定要打了么? 在枚举后面某一个,和它形成一 ...
- 洛谷P2831 愤怒的小鸟 + 篮球比赛1 2
这三道题一起做,有一点心得吧. 愤怒的小鸟,一眼看上去是爆搜,但是实现起来有困难(我打了0分出来). 还有一种解法是状压DP. 抛物线一共只有那么多条,我们枚举抛物线(枚举两个点),这样就能够预处理出 ...
- NOIP2016愤怒的小鸟 [状压dp]
愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟, ...
- luogu2831 [NOIp2016]愤怒的小鸟 (状压dp)
由范围可以想到状压dp 两个点(再加上原点)是可以确定一个抛物线的,除非它们解出来a>=0,在本题中是不合法的 这样的话,我们可以预处理出由任意两个点确定的抛物线所经过的所有的点(要特别规定一下 ...
- [noip2016]愤怒的小鸟<状压dp+暴搜>
题目链接:https://vijos.org/p/2008 现在回过头去看去年的考试题,发现都不是太难,至少每道题都有头绪了... 这道题的数据范围是18,这么小,直接暴力呗,跑个暴搜就完了,时间也就 ...
随机推荐
- css中的block与none
*{ display:none; } div{ display:block; } div 会正常显示粗来吗?不会 因为*代表所有元素,包括div的父级元素html,body 父级元素都不显示了,子元素 ...
- openstack 使用pbr配置,setup.cfg的格式与含义
pbr - Python Build Reasonableness A library for managing setuptools packaging needs in a consistent ...
- mask layer的遮罩层
1. layer层 mask 遮罩效果 //渐变层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.fr ...
- Django的模板与母版
Django的模板与母版 Python Django 模板 母版 Django模板系统 与Django模板有关的官方文档 语法相关 变量相关 {{ 变量名 }} {{ name }},{{name ...
- SPOJ - TTM 主席树
给你一个系列\(a[1...n]\),要求可以区间求和,区间更新,也可以回溯过去 经典的主席树板子题,很久以前做的题了,代码太丑回炉重写 PS.题目标题To The Moon也是我最喜欢的游戏之一 这 ...
- 剑指offer——面试题17:打印从1到最大的n位数
用字符串模拟加法: #include"iostream" #include"string.h" using namespace std; bool AddOne ...
- 20190430-Bootstrapの组件
写在前面的乱七八糟:今天务必要把BT盘完~任重道远~ 目录 1.字体图标 2.下拉菜单 3.按钮组 4.输入框组 5.导航 5.1标签页 5.2胶囊式标签页 5.3路径导航/面包屑导航 6.导航条 7 ...
- 3.抓包神器Fiddler简介(转载)
转自:https://www.cnblogs.com/ailiailan/p/hanxiaobei.html 使用Fiddler的两个场景,1:客户端对服务端返回数据的容错:2:服务端对异常请求数据的 ...
- 《数据密集型应用系统设计》读书笔记-ch1可靠、可扩展与可维护的应用系统
我们以Twitter为例,使用其2012年11月发布的数据.Twitter的两个典型业务操作是: - 发布tweet消息: 用户可以快速推送新消息到所有的关注者,平均大约4.6k request/se ...
- TCP/CP调试
首先要先给自己的电脑分配一个固定的内网IP,不可以自动获取,然后将这个固定的IP设置为DMZ主机就可以将你的电脑暴露给外网,就能实现你想要的功能!! {1}设置成固定IP的方法是在路由的DHCP服务器 ...