为什么要今天写呢?

明天全力研究Johnson和一些奇奇怪怪的贪心

今天把能写的都写了

T1T2太水了直接上代码吧

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read()
{
int x=,f=;char ch;
for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f=-f;
for(;isdigit(ch);ch=getchar())x=*x+ch-'';
return x*f;
}
int n;
priority_queue<int,vector<int>,greater<int> > q1;
priority_queue<int> q2;
int main()
{
n = read();int a;
for(int i=;i<=n;i++)a = read(),q1.push(a),q2.push(a);
while(q1.size() >= )
{
int t1 = q1.top();q1.pop();
int t2 = q1.top();q1.pop();
q1.push(t1 * t2 + );
}
//cout<<q1.top()<<endl;
while(q2.size() >= )
{
int t1 = q2.top();q2.pop();
int t2 = q2.top();q2.pop();
q2.push(t1 * t2 + );
}
//cout<<q2.top()<<endl;
cout<<q1.top() - q2.top();
}

T1

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read()
{
int x=,f=;char ch;
for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f=-f;
for(;isdigit(ch);ch=getchar())x=*x+ch-'';
return x*f;
}
int n,m;
int a[];
int main()
{
n = read(),m = read();int ans = ,tot = ;
for(int i=;i<=n;i++)
{
a[i] = read();
tot += a[i];
if(tot > m) tot = a[i],ans++;
}
cout<<ans + ;
}

T2

T3

每个作业有一个学分和一个DDL

在DDL前完成作业可以获得相应的学分

给出每个作业的学分和DDL

求一个顺序使得学分最大

每做一项作业需要一整天

首先 比起一天浪费掉做已经达到DDL的事情

还不如用它来拿学分

于是我们把task按DDL排序

用一个数据结构变量来记录当前选了几个task

如果可以继续选task就选

选不了就找一个分最少的和当前的比一比取大的就行了

人类智慧

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<vector>
#include<algorithm>
#define LL long long
#define pii pair<int,int>
#define x(a) a.first
#define y(a) a.second
using namespace std;
inline int read()
{
int x=,f=;char ch;
for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f=-f;
for(;isdigit(ch);ch=getchar())x=*x+ch-'';
return x*f;
}
int n,now;
bool cmp(pii a,pii b){return y(a) < y(b);}
int main()
{
while(cin>>n)
{
now = ;
if(n == ){puts("");continue;}
priority_queue<pii,vector<pii>,greater<pii> > q;
pii s[];
int ans = ;
for(int i=;i<=n;i++)
{
x(s[i]) = read();
y(s[i]) = read();
}
sort(s + ,s + n + ,cmp);
for(int i=;i<=n;i++)
{
pii temp = s[i];
if(now < y(temp))
{
++now;
q.push(temp);
ans += x(temp);
}
else
{
pii tmp = q.top();q.pop();
if(x(temp) > x(tmp)){q.push(temp);ans += x(temp);ans -= x(tmp);}
else q.push(tmp);
}
}
cout<<ans<<endl;
}
}

poj1042钓鱼

(fish is me

话说发源于小朋友精心设计的游戏被电脑组的童鞋们藐杀之后非常不爽,为了表示安慰和鼓励,VIP999决定请他吃一次“年年大丰收”,为了表示诚意,他还决定亲自去钓鱼,但是,因为还要准备2013NOIP,z老师只给了他H(1<=H<=16)个小时的空余时间,假设有N(2<=n<=25)个鱼塘都在一条水平路边,从左边到右编号为1、2、3、。。。、n)。VIP是个很讲究效率的孩子,他希望用这些时间钓到尽量多的鱼。他从湖1出发,向右走,有选择的在一些湖边停留一定的时间钓鱼,最后在某一个湖边结束钓鱼。他测出从第I个湖到I+1个湖需要走5*ti分钟的路,还测出在第I个湖边停留,第一个5分钟可以钓到鱼fi,以后再每钓5分钟鱼,鱼量减少di。为了简化问题,他假定没有其他人钓鱼,也不会有其他因素影响他钓到期望数量的鱼。请编程求出能钓最多鱼的数量。

大暴力

枚举这个人最后走到的湖

把路上的时间减去

每5分钟选择鱼最多的地方钓

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
int n,h;
struct abcd
{
int fish,d,t;
bool operator < (const abcd &b)const
{
return fish < b.fish;
}
}a[];
priority_queue<abcd> q; int main()
{
int res = ;
n = read();h = read() * ;
for(int i=;i<=n;i++)a[i].fish = read();
for(int i=;i<=n;i++)a[i].d = read();
for(int i=;i<n;i++)a[i].t = read();
for(int rt=;rt<=n;rt++)
{
int temp = ;
while(!q.empty())q.pop();
int cur = h;
for(int i=;i<=rt;i++)q.push(a[i]);
for(int i=;i<rt;i++)cur -= a[i].t;
while(cur > && !q.empty())
{
abcd now = q.top();q.pop();
if(now.fish < )break;
temp += now.fish;now.fish -= now.d;
if(now.fish > )q.push(now);
cur--;
}
res = max(res,temp);
}
cout<<res;
}

环状均分纸牌

选择中位数作为起点

然后用f[i]表示要挪到i+1处的纸牌数量

那么f[i] = k - a[i] + f[i - 1]

sigma fi就是答案

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
int n,avg;
int a[],p[];
int main()
{
n = read();
for(int i=;i<=n;i++)a[i] = read(),avg += a[i];
avg /= n;
for(int i=;i<=n;i++)p[i] = avg - a[i] + p[i - ];
sort(p + ,p + n + );
int mid = p[n / + ],ans = ;
for(int i=;i<=n;i++)ans += abs(p[i] - mid);
cout<<ans;
}

暑假集训Chapter1 贪心的更多相关文章

  1. 2015UESTC 暑假集训总结

    day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...

  2. STL 入门 (17 暑假集训第一周)

    快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...

  3. HDU - 2037 今年暑假不AC 贪心(求序列中不重叠子序列的最大值问题)

    HDU2037 今年暑假不AC  贪心算法 大意: 每次测试数据输入一个n,然后输入n对的电视节目播放时间:开始时间及结束时间, 求这个人能看的最多的完整的节目数. 解题思路: 对于这道解题,是对每个 ...

  4. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  5. 暑假集训Day1 整数划分

    题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...

  6. 暑假集训(2)第七弹 -----今年暑假不AC(hdu2037)

    J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64 ...

  7. HDU2037 今年暑假不AC 贪心算法

    贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...

  8. 2013ACM暑假集训总结-致将走上大三征途的我

    回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...

  9. [补档]暑假集训D5总结

    %dalao 今天又有dalao来讲课,讲的是网络流 网络流--从入门到放弃:7-29dalao讲课笔记--https://hzoi-mafia.github.io/2017/07/29/27/   ...

随机推荐

  1. json解析:[1]gson解析json

    客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...

  2. 转:3.3V和5V电平双向转换——NMOS管

    分简单,仅由3个电阻加一个MOS管构成,电路图如下: 此电路来自于飞利浦的一篇设计指导文档,是I2C总线官方推荐使用的电平转换电路.在实际使用过程中,需要尤其注意NMOS管的选型以及上拉电阻阻值的选取 ...

  3. mBot试用体验

    [Arduino话题] [mBot试用体验]1.mBot开箱体验(部分资料合集)http://bbs.elecfans.com/forum.php?mod=viewthread&tid=532 ...

  4. Chrome自带恐龙小游戏的源码研究(六)

    在上一篇<Chrome自带恐龙小游戏的源码研究(五)>中实现了眨眼睛的恐龙,这一篇主要研究恐龙的跳跃. 恐龙的跳跃 游戏通过敲击键盘的Spacebar或者Up来实现恐龙的跳跃.先用一张图来 ...

  5. 【Unity3D】【NGUI】Atlas的动态创建

    NGUI版本号:3.6.5 1.參见SZUIAtlasMakerRuntimeTest设置对应的值以上值须要提前设置好 2.没有检查是否atlas可以正确创建,自己可以改,增加返回值 3.代码都是在N ...

  6. 【Python基础】之异常

    一.常见异常 try: open('abc.txt','r') except FileNotFoundError: print('异常啦!') 输出结果: ======= 异常啦! 我们通过 open ...

  7. Java提高(二)---- HashTable

    阅读博客 java提高篇(二五)—–HashTable 这篇博客由chenssy 发表与2014年4月,基于源码是jdk1.7 ========================== 本文针对jdk1. ...

  8. maven nexus 搭建

    http://www.cnblogs.com/adolfmc/archive/2012/08/21/2648415.html http://www.cnblogs.com/dingyingsi/p/3 ...

  9. cocos2d-js添加360广告联盟插屏(通过jsb反射机制)

    1.添加demo里的libs里的jar包 2.修改AndroidManifest.xml文件 添加权限: <uses-permission android:name="android. ...

  10. 《转》使用nginx和php实时产生缩略图

    在做自动静态化的时候,突然想到下面这个场景,也给出了解决方法.亲,真的很实用,耐心看下去.     当我从后台上传一个截图之后,480*800的截图之后,当时就没有压缩出320*480的小缩略图.好吧 ...