2016.10.29 清北学堂NOIP冲刺班Day1 AM 考试总结
成绩:满分300,我得了200,
1:90//前两个题目都是模拟,没用到什么其他算法,第一题有可能少考虑了一点细节
2:100
3:10//感觉是个DP,但是毫无思路,只打了个普通背包,10分而已。
题目+数据:http://pan.baidu.com/s/1bpj3SR1
下面是我的代码:
这个题目中我为了得到部分分,而特别判断了几组数据。
T1:
/*
以后一定要仔细读数据范围,一定要。
数据范围中:20%的数据,只有秒数可能不同,言外之意就是可能相同。
而我的程序因为没有考虑到,时间相同时直接输出0000,。O__O"… 一个小技巧:计算时间时,可以把所有的时间都换算成秒,直接总秒数1-秒数2,不仅不会溢出,而且也方便计算。
*/
#include<iostream>
using namespace std;
#include<cstdio>
typedef long long ll;
struct Tim{
int n,y,r,x,f,m;
}tim1,tim2;
long long ans=;
int mon[]={,,,,,,,,,,,,};
bool is_runnian(int x)
{
if(x%==) return true;
if(x%!=&&x%==) return true;
return false;
} void input()
{
scanf("%d-%d-%d %d:%d:%d",&tim1.n,&tim1.y,&tim1.r,&tim1.x,&tim1.f,&tim1.m);
scanf("%d-%d-%d %d:%d:%d",&tim2.n,&tim2.y,&tim2.r,&tim2.x,&tim2.f,&tim2.m);
}
int main()
{
// freopen("two.in","r",stdin);
// freopen("two.out","w",stdout);
input();
if(tim1.n==tim2.n&&tim1.y==tim2.y&&tim1.r==tim2.r)
{
ans=(ll)(tim2.x*+tim2.f*+tim2.m)-(tim1.x*+tim1.f*+tim1.m);
}
else if(tim1.n==tim2.n)
{
ll d1=,d2=;
for(int i=;i<tim1.y;++i)
d1+=mon[i];
if(is_runnian(tim1.n)&&tim1.y>) d1++;
for(int i=;i<tim2.y;++i)
d2+=mon[i];
if(is_runnian(tim2.n)&&tim2.y>) d2++;
d1+=tim1.r;
d2+=tim2.r;
ans=(ll)(d2**+tim2.x*+tim2.f*+tim2.m)-(ll)(d1**+tim1.x*+tim1.f*+tim1.m); }
else{
ll d1=,d2=;
for(int i=;i<tim1.n;++i)
if(is_runnian(i)) d1+=;
else d1+=;
for(int i=;i<tim2.n;++i)
if(is_runnian(i)) d2+=;
else d2+=;
for(int i=;i<tim1.y;++i)
d1+=mon[i];
if(is_runnian(tim1.n)&&tim1.y>) d1++;
for(int i=;i<tim2.y;++i)
d2+=mon[i];
if(is_runnian(tim2.n)&&tim2.y>) d2++;
d1+=tim1.r;
d2+=tim2.r;
ans=(ll)(d2**+tim2.x*+tim2.f*+tim2.m)-(ll)(d1**+tim1.x*+tim1.f*+tim1.m);
}
if(ans) cout<<ans<<"";
else printf("0\n");
fclose(stdin);
fclose(stdout);
return ;
}
T2:
#include<iostream>
using namespace std;
#include<cstdio>
#define N 100010
#define M 50010
#include<algorithm>
#include<queue>
typedef long long ll;
struct node{
ll tim;
bool operator <(node P)
const{return tim>P.tim;}
};
priority_queue<node>Q;
ll ren[N];
int n,m;
ll read()
{
ll ret=;
char s=getchar();
while(s<''||s>'')
{
s=getchar();
}
while(s>=''&&s<='')
{
ret=ret*+s-'';
s=getchar();
}
return ret;
}
void input()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
ren[i]=read();
for(int i=;i<=m;++i)
{
node X;
X.tim=ren[i];
Q.push(X);
}
}
int main()
{
freopen("death.in","r",stdin);
freopen("death.out","w",stdout);
input();
for(int i=m+;i<=n;++i)
{
node Now=Q.top();
Q.pop();
Now.tim+=ren[i];
Q.push(Now);
}
printf("%I64d",Q.top());
fclose(stdin);
fclose(stdout);
return ;
}
T3:
解析:
看了看题解:感觉也是这个道理:也许它并不需要Dp,比如在1*(*)中,我们为了价值最大,肯定先放价值大的(因为体积相同嘛),所以我们就把
价值大的先放进去就可以了。
这个题目注意两点即可: .有很多体积相同但是价值不同的物品,可以直接用贪心排序,就可以了。 .不必关注具体的背包中的物品如何放置,只需要关注能放多少个就可以了。因为我们总有办法使放到几乎满了或者满了的情况。 所以思路:
可以直接用n*m/,n*m/,计算数目,但是我们要想一想这样有没有可能出现错误。
n*m/2情况,如果n*m的背包1*2这么放,那么最后只可能
余下一个空位置,那么结果是不错的,但是如果是n*m的情况,我们可以发现,如果满足
n%== && m%== && (n== || m==),如果只放1*,最后会余下一个2*2的正方形不能再放,但是如果直接用n*m/3的话,结果就会多1了。
#include<iostream>
using namespace std;
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 10010
int t,n,m,n1,n2,wu1[N],wu2[N];
int sumwu1[N],sumwu2[N];
typedef long long ll;
bool cmp1(int a,int b)
{
return a>b;
}
int main()
{
// freopen("eyesight.in","r",stdin);
// freopen("eyesight.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&n,&m,&n1,&n2);
memset(sumwu1,,sizeof(sumwu1));
memset(sumwu2,,sizeof(sumwu2));
for(int i=;i<=n1;++i)
scanf("%d",&wu1[i]);
for(int i=;i<=n2;++i)
scanf("%d",&wu2[i]);
sort(wu1+,wu1+n1+,cmp1);
sort(wu2+,wu2+n2+,cmp1);
for(int i=;i<=n1;++i)
sumwu1[i]=sumwu1[i-]+wu1[i];
for(int i=;i<=n2;++i)
sumwu2[i]=sumwu2[i-]+wu2[i];
ll ans=;
int dalta;
if(n%==&&m%==&&(n==||m==)) dalta=;
else dalta=n*m%;
int sum=min(n2,(n*m-dalta)/);
for(int i=;i<=sum;++i)
ans=max(ans,(ll)(sumwu2[i]+sumwu1[min(n1,(n*m-*i)>>)]));
cout<<ans<<endl; }
fclose(stdin);
fclose(stdout);
return ;
}
2016.10.29 清北学堂NOIP冲刺班Day1 AM 考试总结的更多相关文章
- 10.24afternoon清北学堂刷题班
/* 这是什么题... */ #include<iostream> #include<cstdio> #include<cstring> #include<q ...
- 洛谷P1080 [NOIP2012提高组D1T2]国王游戏 [2017年5月计划 清北学堂51精英班Day1]
P1080 国王游戏 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 ...
- 洛谷P1650 赛马[2017年5月计划 清北学堂51精英班Day1]
P1650 赛马 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...
- 洛谷P2258 子矩阵[2017年5月计划 清北学堂51精英班Day1]
题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...
- 洛谷P2327 [SCOI2005]扫雷 [2017年5月计划 清北学堂51精英班Day1]
P2327 [SCOI2005]扫雷 题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一 ...
- 2016.10.29初中部上午NOIP普及组比赛总结
2016.10.29[初中部 NOIP普及组 ]模拟赛 做得好爽! 进度: 比赛:35+45+AC+0=180 改题:AC+AC+AC+0=300 幸运的数 有点无语--之前怕超限,还特意利用程序打了 ...
- 10月清北学堂培训 Day 7
今天是黄致焕老师的讲授~ 历年真题选讲 NOIP 2012 开车旅行 小 A 和小 B 决定外出旅行,他们将想去的城市从 1 到 n 编号,且编号较小的城市在编号较大的城市的西边.记城市 i 的海拔高 ...
- 10月清北学堂培训 Day 5
今天是廖俊豪老师的讲授~ T1 第一次想出正解 30 pts: k <= 10,枚举如何把数放到矩阵中,O ( k ! ): 100 pts: 对于矩阵的每一列,我们二分最小差异值,然后贪心去判 ...
- 10月清北学堂培训 Day 6
今天是黄致焕老师的讲授~ T1 自信 AC 莫名 80 pts???我还是太菜了!! 对于每种颜色求出该颜色的四个边界,之后枚举边界构成的矩阵中每个元素,如果不等于该颜色就标记那种颜色不能最先使用. ...
随机推荐
- 组合模式 - Composite
Composite Pattern,将对象组合成树形结构以表示’部分-整体’的层次关系,用户对单对象和组合部件的使用具有一致性. 实现方式: 透明方式:接口统一: 安全方式:不统一: 参考:
- 【Unity】第13章 光照贴图和光影效果
分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在Unity 5中,Lighting是—种增强场景光照和阴影效果的技术,它可以通过较少的性能消耗使静态场景看上去更真实. ...
- sql语句优化SQL Server
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- Hadoop多节点集群安装配置
目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...
- E - The Values You Can Make
E - The Values You Can Make Description Pari wants to buy an expensive chocolate from Arya. She has ...
- 使用jenkins配置.net mvc网站进行持续集成一
最近好久没有更新文章了,因为好久没有写代码了,以至于我不知道同大家分享些什么,刚好,今天突然叫我学习下jenkins每日构建,我就把今天的学习笔记记录下来,这其中很多东西都是公司同事之前调研总结的,我 ...
- VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗
VS2015出来后,确定变化很大,什么android.ios的,不在话下.对于我这样传统型的人,也第一时间试用了一下(vs2003->vs2008->vs2012->vs2015). ...
- Java基础学习总结 -- 多线程的实现
目录: 继承Thread类 start()方法实现多线程的原理 实现Runnable接口 Thread类 与 Runnable接口 的联系与区别 多线程的实现方法: 继承Thread类 实现Runna ...
- 2016年4月最佳的20款 jQuery 插件推荐
这个列表包括20个我们觉得是最有用的免费的 jQuery 插件,它们都是最具创新性和最省时省力的解决方案,很多都是现代化的设计和开发中碰到的问题的处理方案.如果你熟悉下面列出的任何插件,请与我们的读者 ...
- FusionCharts的使用方法(超详细)
今天统计价格变化规律的时候找到的一个很好的文档,很详细 一.简介 Ø FusionCharts 是InfoSoft Global 公司的一个产品,InfoSoft Global 公司是专业的Flash ...