*TEST 4 for NOIP 谨慎打表
头更更大
这个10月完就要去搞NOIP了。。。
10月30天也就3次测试。。。为保佑进省一我还是每次测试玩都写个总结。。
boomshakalaka。。。
第二题瞎搞。。第三题瞎搞暴力。。
第一题。。我为了图二分最后答案快一点开了个1E5的数组想打表最后光源代码就998K。。爆炸。(事实上初始化就行了)
如果不是因为打表我可以得120。。。第5。。。
TEST 4 for NOIP(70(120)/300)
造盒子(50(100)/100)
题目描述
企鹅豆豆收到了面积为 K 的一块橡皮泥。但是他没有合适的盒子来装下这个橡皮泥。所以他打算造一个盒子。
制造台是有方形网格的平台,每个小正方形边长为 1 。现在豆豆有两类木板,一类只能放在小正方形的边上,一类只能放在小正方形的对角线上。
现在豆豆想知道最少需要用多少块木板来制造一个封闭的盒子来把橡皮泥放下去。
输入格式
第一行一个整数 T 表示数据组数。
对于每组数据的第一行一个整数 K ,表示橡皮泥的大小。
输出格式
输出一个整数表示最少需要的木板数目
样例数据 1
输入 [复制]
5
1
2
3
4
5
输出
4
4
6
6
7
备注
【数据范围】
对于 50% 的数据,K≤20。
对于 100% 的数据,K≤109。
推个20个就可以找到规律了。题解良心给了思路。
MY/STD.CPP
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;int n,t,ans=0;
int a[200];int main()
{cin >> t;for(int x=1;x<=t;x++){ans = 0;memset(a,0,sizeof(a));cin >> n;for(int i=1;i<=n;i++) cin >> a[i];sort(a+1,a+n+1);ans += 2*a[n]-a[1]-a[2];if(n%2==0){for(int i=1;i<=n/2-1;i++)ans += a[n-i]-a[i];for(int i=1;i<=n/2-2;i+=2)ans += a[n-i]-a[i+2],ans += a[n-i-1]-a[i+3];}else {for(int i=1;i<=n/2;i++)ans += a[n-i]-a[i];for(int i=3;i<=n/2;i++)ans += a[n-i+2]-a[i];}cout << "Case " << x << ": " << ans << endl;}
}
。。我作死打表的版本甚至连放在CSDN上都会卡死。。还是算了不放了。。。orz。。
分玩具
题目描述
豆豆和豆沙正在分一些玩具,每个玩具有一个好玩值,每个人可以拿走任意数量的玩具,获得的愉快度为最小的好玩值。现在豆豆先拿,每个人轮流操作,直到没有玩具可以拿。豆豆想知道他能比豆沙多出多少愉快度?
输入格式
第一行 N 表示玩具个数。
接下来一行 N 个整数表示第 i 个玩具的好玩值。
输出格式
输出一个整数表示最多多出的愉快度。
样例数据 1
输入 [复制]
3
1 3 1
输出
2
备注
【数据范围】
对于 30% 的数据,N≤10。
对于 70% 的数据,N≤1000。
对于 100 %的数据,N≤1000000,0≤数值范围≤10^9。
没学过策略。。。想了一个小时也没想出来。。orz
还有以后写程序都必须加上优化不然会炸。
f[i]表示在还剩下最小的i个数的情况下,先手比后手多多少。(剩下的数的个数不同,执先手和后手的人不一样,但都要达到最大。)
STD.CPP
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
using namespace std;int n;
long long jud=0;
int a[1000050];
long long f[1000050],maxi;int main()
{ std::ios::sync_with_stdio(false);std::cin.tie(0);cin >> n;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1); maxi=a[1];for(int i=1;i<=n;i++){ f[i] = maxi;maxi = max(maxi,a[i+1]-f[i]);}cout << f[n] << endl;
}
问题求解(20/100)
题目描述
今天豆豆在做作业的时候遇到这么一个问题:
给出 N 个正整数 a1..aN ,再给出一个正整数 k ,现在可以进行如下操作:每次选择一个大于 k 的正整数 ai,将 ai 减去 1 ,选择 a[i-1] 或 a[i+1] 中的一个加上 1 。经过一定次数的操作后,最大能够选出多长的一个连续子序列,使得这个子序列的每个数都不小于 k 。
总共有 M 次询问,每次询问给出的一个 k ,回答这个询问。
输入格式
第一行两个整数 N , m 代表数组长度和询问个数。
接下来一行,第 i 个正整数表示 ai 。
第三行 M 个正整数,第 i 个正整数表示第 i 次询问的 k 。
输出格式
对于每个询问,输出一个整数表示问题的答案。
样例数据 1
输入 [复制]
5 6
1 2 1 1 5
1 2 3 4 5 6
输出
5 5 2 1 1 0
备注
对于 20% 的数据,N≤10。
对于 40% 的数据,N≤1000。
对于 50% 的数据,N≤100000。
对于 100% 的数据,N≤1000000,M≤20,ai≤10^9,k≤10^9。
请选手注意自己的常数。
打了个20分的暴力。。
题解。。。就那样吧。。记着。
MY.CPP
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
using namespace std;int n,m,ans[600005];
struct node{int val,pos;}k[600005];
long long a[600005];bool comp(const node &a,const node &b){return a.val<b.val;}int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i],a[i]+=a[i-1];for(int i=1;i<=m;i++){cin>>k[i].val;k[i].pos=i;}sort(k+1,k+m+1,comp);int cnt=n;for(int j=1;j<=m;j++){int flag=0;while(cnt){for(int i=1;i<=n-cnt+1;i++)if((a[cnt+i-1]-a[i-1])>=(long long)(k[j].val*cnt)){flag=1;break;}if(flag)break;else cnt--;}ans[k[j].pos] = cnt;}for(int i=1;i<=m;i++)cout<<ans[i]<<" ";
}
题解就是个前缀和啊白痴!!!
STD.CPP
#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;const int kkk=1000050;int n,m,k,cnt,ans;
int a[kkk],stk[kkk];
long long sum[kkk];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];while(m--){cnt=1;stk[cnt]=0;cin>>k;for(int i=1;i<=n;i++){sum[i] = a[i]-k+sum[i-1];if(sum[stk[cnt]]>sum[i])stk[++cnt] = i;}ans = 0;for(int i=n;i;i--){while(cnt>=0&&sum[i]-sum[stk[cnt]]>=0)--cnt;ans = max(ans,i-stk[cnt+1]);}cout << ans << " ";}
}
感想
。。。。。。
多刷刷动态规划和模板。。
还有。。不要总是做死的想打表。。。会挂的。。。
*TEST 4 for NOIP 谨慎打表相关推荐
- 这38个小技巧告诉你如何快速学习MySQL数据库
无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢?此文为你揭晓,你值得一看!看过别忘记点赞+转发支持哦. 1.如何快速 ...
- 我的学习之路_第十八章_SQL语句
SQL语句 启动数据库: net start mysql 关闭数据库: net stop mysql 登录数据库 : cmd-->命令行-->mysql-->mysql -u账号 - ...
- 学习MySQL我们应该知道哪些东西?
随笔:小编由于年前一直在找工作,而年后找到工作后又一直在忙工作,所以也很少有时间给大家写点什么,总的来说呢,回顾一下之前面试的几次经历,也曾小小的总结了一下自己的不足,发现自己虽然一直在原有的公司(外 ...
- Flink-1.13集成hudi-0.10.0
把hudi的 hudi-flink-bundle_2.12-0.10.0.jar放到 flink的lib下即可从flink-sql客户端读写hudi表. 下面是完全参考hudi官网的示例 一.下载安装 ...
- [转]在 Azure 云服务上设计大规模服务的最佳实践
本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...
- JS中使用FormData上传文件、图片的方法
参考博客:http://www.cnblogs.com/xiaohuochai/p/6543019.html http://www.cnblogs.com/qcloud1001/p/6839541.h ...
- 自学mysql数据库真没那么难,38个小技巧教你快速学习MySQL数据库
1.如何快速掌握MySQL? ⑴培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外. ⑵夯实基础 计算机领域的技术非常强调基础,刚开始学习可 ...
- 抗生素对肠道微生物群的影响
在与细菌性疾病的斗争中,抗生素是不可避免的.抗生素是人类使用了几十年的治疗细菌感染的救命药物. 虽然抗生素挽救了数百万人的生命,但它们也会消灭一些常驻细菌.现有文献已经确定了与抗生素相关的肠道微生物群 ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- MySQL数据库基础笔记
数据库 MySQL 1.安装MySQL 安装mysql 安装 服务器端 和 客户端 1, 服务器端: 用来存储了数据重点步骤: 设置字符集utf-8避免中文乱码.使用端口号: 默认是3306使用的服务 ...
最新文章
- 热议:大脑功能磁共振数据不可靠?杜克大学教授对自己15年的工作提出质疑...
- Example017简单的下拉框
- linux脚本读取mssql数据库,WebShell通过SQL语句管理MSSQL
- win7计算机中丢失mfc120,mfc120.dll 64位
- 是按压还是触摸_一文读懂,选联想还是华为?Matebook 14锐龙版和YOGA 14s、小新Pro13怎么选?...
- 微课|玩转Python轻松过二级(2.1.3节):字符串与字节串简介
- php 解压有密码的zip文件_文件解压引发的getshell
- C# List的克隆
- 结对编程后传之做汉堡
- 解决bootstrap模态框居中问题
- ZOJ3953 Intervals
- python各种库下载地址:
- 如何调试JavaScript代码
- HTML中的表格和表单(含有示例代码)
- Echarts快速入门
- 3500x架构_r5 3500x处理器深度实用评测3500x游戏性能测评
- HTML 几种特别分割线特效 详细出处参考:http://www.jb51.net/web/28414.html
- 可以结束一个循环的关键字是python_python异常处理会使用到哪些关键字?
- 医疗设备维修保养及常见故障维修技术学习
- LPspice 电路仿真软件