2020牛客多校第3场:Two Matchings[找规律+dp]
题目链接
解题思路:这题规律。。。。。。无语:
#include <iostream>
#include <cstdio>
#include <stack>
#include <sstream>
#include <vector>
#include <map>
#include <cstring>
#include <deque>
#include <cmath>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <set>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define log2(a) log(a)/log(2)
#define _for(i,a,b) for( int i = (a); i < (b); ++i)
#define _rep(i,a,b) for( int i = (a); i <= (b); ++i)
#define for_(i,a,b) for( int i = (a); i >= (b); -- i)
#define rep_(i,a,b) for( int i = (a); i > (b); -- i)
#define lowbit(x) ((-x) & x)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define hash Hash
#define next Next
#define count Count
#define pb push_back
#define f first
#define s second
using namespace std;
const int N = 2e5+10, mod = 1e9 + 7;
const long double eps = 1e-5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
typedef pair<double,double> PDD;
template<typename T> void read(T &x)
{x = 0;char ch = getchar();ll f = 1;while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
template<typename T, typename... Args> void read(T &first, Args& ... args)
{read(first);read(args...);
}
int n;
ll a[N];
ll dp[N];
int main()
{int T;read(T);while(T --){read(n);for(int i = 1; i <= n; ++ i) read(a[i]);sort(a+1,a+n+1);ll ans = 0;for(int i = 2; i <= n; i += 2)ans += a[i] - a[i - 1];dp[2] = 1ll << 60;dp[4] = a[4] + a[3] - a[2] - a[1];dp[6] = a[6] + a[5] - a[4] + a[3] - a[2] - a[1]; for(int i = 8; i <= n; i += 2)dp[i] = min(dp[i - 4] + a[i] + a[i - 1] - a[i - 2] - a[i - 3],dp[i - 6] + a[i] + a[i - 1] - a[i - 2] + a[i - 3] - a[i - 4] - a[i - 5]);cout << ans + dp[n] << endl;}return 0;
}
2020牛客多校第3场:Two Matchings[找规律+dp]相关推荐
- 2020牛客多校第1场H-Minimum-cost Flow
解题思路: 首先我们要从费用流mcmf的算法入手:因为它每次增广是再费用增广路上跑的,根据贪心的思想费用小的路基本上能运多少就尽量运多少,所以我们可以假设初始的边容量是1,只跑一遍mcmf.记录一下每 ...
- 数论分块 ---- 2020牛客多校第7场H-Dividing[思维+数论分块]
题目大意: 解题思路:很明显满足条件的点是n%k==0∣∣n%k==1n\%k==0||n\%k==1n%k==0∣∣n%k==1 1.因为nnn是从111开始的如果一直乘以k[n=n∗k]k[n=n ...
- 2020牛客多校第7场C-A National Pandemic[树链剖分+思维]
题目大意 1.首先我们看一下操作1:实际上可以说成在所有位置上加上w−dist(x,y)w-dist(x,y)w−dist(x,y),因为dist(x,x)=0dist(x,x)=0dist(x,x) ...
- 2020牛客多校第5场B-Graph完全图异或最小生成树
因为这里边是可以任意加的但是要保证联通性所有这里可以看成一个完全图,每条边的权值=a[u]^a[v] 1.那么我们可以将每个点的权值sort一遍,将每个a[i],从高位到低位,按照最高位的1出现的顺序 ...
- 2020牛客多校第3场:[Points Construction Problem + 思维题+构造]
题目链接 题目大意:就是给你n个边长为1的正方形,要求用这些正方形拼成周长为m的图形,并输出这些正方形的坐标,如果没有输出No 首先如果这些正方形都零散分布那么周长就是4∗n4*n4∗n,如果将这些正 ...
- 2020牛客多校第三场[C Operation Love+基础计算几何 判断多边形顺逆时针]
题目链接 题目大意:就是给你两个左右手的模型,下面给出这两只手通过平移变换之后坐标问你这只手是左手还是右手?[题目保证坐标是按照顺时针或者逆时针给出的] 解题思路:首先我们先观察一下这只右手:假如数据 ...
- 贪心 ---- 2020牛客多校第3场[Clam and Fish+贪心]
题目链接 解题思路:1.根据贪心的思想肯定是如果是第2或者第3种状态肯定是钓鱼且不需要鱼饵的,如果是在第0种状态有鱼饵肯定也钓鱼,对于第1种状态就是可以钓鱼也可以造鱼饵的状态我们如何考虑 2.我们从后 ...
- exgcd ---- 2020牛客多校第三场:[Fraction Construction Problem:exgcd+思维题]
题目链接 题目大意:就是给你两个数a,ba,ba,b叫你求满足下面三个条件的c,d,e,fc,d,e,fc,d,e,f 1.cd−ef=ab1.{c\over d}-{e\over f}={a\ove ...
- 2020牛客多校第1场I-1 or 2一般图最大匹配带花树
链接:https://ac.nowcoder.com/acm/contest/5666/I Bobo has a graph with n vertices and m edges where the ...
最新文章
- [JS] [编程题] 配置文件恢复
- 系统集成项目管理之项目采购管理
- ISC2015听会小计
- Python---编写一函数,将摄氏温度与华氏温度互转。
- 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI
- sata接口测试软件,方便用户,技嘉放出6系列主板SATA接口检测软件
- mongodb 的windows 下安装
- php组件是啥,浅谈PHP组件、框架以及Composer
- 字符集(CHARACTER SET)和校对集(COLLATE)
- 单表置换密码java代码实现_单表替换密码
- 设计模式之十一:抽象工厂模式(Abstract Factory)
- 一款简洁大气的商城官网介绍源码
- Maven 模块管理
- 大数据_Flink_数据处理_资源的分配和并行度测试---Flink工作笔记0013
- 非root用户安装java版本
- kettle简单的更新与插入
- python爬虫项目(对博思平台社区话题信息进行爬取并保存)
- 系统容量评估和性能保障
- 查询计算机科学系的学生,查询“计算机系”学生的学号、姓名、学生所选课程名和成绩,正确的命令是( ..._考试资料网...
- Android 开发2048 无法显示gameView、Card