CF:Problem 425A

区间暴力,枚举区间。交换选定区间最小值和剩余区间最大值k次。

其实等同于将剩余区间最大k个加到选定区间里,然后排序

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <cctype>
#include <vector>
#include <iterator>
#include <set>
#include <map>
#include <sstream>
using namespace std; #define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define spf sprintf
#define pb push_back
#define debug printf("!\n")
#define INF 10000
#define MAXN 5010
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define pqueue priority_queue int a[];
int n,k; int main()
{
int i,j,m;
while(sf("%d%d",&n,&k)==)
{
for(i =;i<n;i++)
sf("%d",&a[i]); int mx=-; for(i =;i<n;i++)
{
for(j =i;j<n;j++)
{
vector<int> p,q;
for(m=;m<n;m++)
{
if(m<i||m>j) p.pb(a[m]);//p剩余区间
else q.pb(a[m]);//q选定区间
}
sort(p.rbegin(),p.rend());//rbegin反向迭代器
for(m=;m<k&&m<p.size();m++)
q.pb(p[m]);
sort(q.rbegin(),q.rend());
int sum=;
for(m=;m<=j-i;m++) sum+=q[m];
if(sum>mx) mx=sum;
}
} pf("%d\n",mx);
}
}

CodeForces 363D

这题其实是二分法。需要买最多的车,判断能不能买k辆车的话,一定是钱最多的k个人,买最便宜的k辆车,然后二分查找找出最大k

第二条件即花钱最少其实可以算出来,最关键还是k的大小

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <cctype>
#include <vector>
#include <iterator>
#include <set>
#include <map>
#include <sstream>
using namespace std; #define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define spf sprintf
#define pb push_back
#define debug printf("!\n")
#define INF 10000
#define MAXN 5010
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define pqueue priority_queue int b[],p[];
int n,m,a; bool ok(int k)
{
int aa = a;
int d=n-k;
for(int i=;i<k;i++)
{
if(b[i+d]<p[i])
aa-=(p[i]-b[i+d]);
if(aa<) return false;
}
return true;
} int main()
{
int i,j;
while(sf("%d%d%d",&n,&m,&a)==)
{
for(i=;i<n;i++) sf("%d",&b[i]);
for(i=;i<m;i++) sf("%d",&p[i]);
sort(b,b+n);
sort(p,p+m);
int l=,r=min(n,m),mid;
while(l<=r)
{
mid = (l+r)>>;
if(ok(mid)) l=mid+;
else r=mid-;
}
int s =;
for(i=;i<l-;i++)
s+=p[i];
pf("%d %d\n",l-,s-a);
}
}

SZU2的更多相关文章

  1. Qt开发初步,循序渐进,preRequest for 蓝图逆袭

    1,使用Qt面向对象类继承创建第一个窗口主部件,使用setMinimumSize(),setMaximumSize()配置主部件窗口是否能够resize;

  2. 数据结构——表(list)

    #include <iostream> #include <list> using namespace std; 标准类的存储方式为双向循环链表 list类 class lis ...

  3. [Android系列—] 1. Android 开发环境搭建与Hello World

    前言 開始之前先熟悉几个名词: SDK -- Software Development Kit, 软件开发工具包.这个词并不陌生, JDK,就是Jave Development Kit,相同对于And ...

随机推荐

  1. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  2. click事件和jquery选项卡

    一. click事件 实现效果是点击切换按钮,可以重复的切换背景色 <!DOCTYPE html> <html lang="en"> <head> ...

  3. [译文]casperjs的API-clientutils模块

    casper提供了少量的客户端接口用来进行远程DOM环境注入,通过clientutils模块的ClientUtils类实例中的__utils__对象来执行: casper.evaluate(funct ...

  4. TortoiseSVN查看修改时报错的解决方法

    提交Bug后很快就修复了,给Stefan点个赞.大家等新版本(1.11.1)发布就可以了. -------------------------分割线下是原文---------------------- ...

  5. javascript 动态脚本添加

    异步加载js文件或者异步加载js模块,支持所有浏览器,包括IE,参考至javascript高级编程 1.createScript方法用于创建一个script标签并添加到body标签中 2.create ...

  6. c++11 perfect forwarding

    完美转发是c++11 引入右值引用之后,在template 中的延伸. 顾名思义,完美转发是将参数不改变属性的条件下,转发给下一个函数. 因为普通函数的参数一旦具名,始终都是lvalue. 如果把rv ...

  7. AIMR 固定收益推荐读物

    目录 AIMR Suggested Fixed-Income Readings I. Perspectives on Interest Rates and Pricing of Traditional ...

  8. 大数据平台-java、mysql安装

    补充: 对于ssh登录不是特定端口22的,进行文件修改 vim /etc/ssh/sshd_config Port 61333 简化后序命令输入,修改文件如下:  一.java环境安装 一共5台服务器 ...

  9. Codeforces - 24D 有后效性的DP处理

    题意:在n*m的网格中,某个物体初始置于点(x,y),每一步行动都会等概率地停留在原地/往左/往右/往下走,求走到最后一行的的步数的数学期望,其中n,m<1000 lyd告诉我们这种题目要倒推处 ...

  10. 基于MODBUS的CRC

    %ws   WCHAR wszName CRC原理 设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k:生成多项式为G(x),G(x)的最高幂次等于r:CRC多项式为R(x):编码后的带 ...