弱鸡儿长乐爆零旅Day3
T1奶牛晒衣服
【问题描述】
在熊大妈英明的带领下,时针和他的同伴生下了许多牛宝宝。熊大妈决定给每个宝宝都穿上可爱的婴儿装。于是,为牛宝宝洗晒衣服就成了很不爽的事情。
圣人王担负起了这个重任。洗完衣服后,你就要弄干衣服。衣服在自然条件下用1的时间可以晒干A点湿度。抠门的熊大妈买了1台烘衣机。使用烘衣机可以让你用1的时间使1件衣服除开自然晒干的A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用。
N件的衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服的最少时间(湿度为0为干)。
【输入格式】
第一行N,A,B,接下来N行,每行一个数,表示衣服的湿度(1<=湿度,A,B<=500000,1<=N<=500000)。
【输出格式】
一行,最少时间。
【输入样例】Dry.in
3 2 1
1
2
3
【输出样例】Dry.out
1
【样例解析】
第1个时间内,用机器处理第3件衣服,此外,所有衣服自然晒干2。花费1时间全部弄干。
优先队列做法
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; priority_queue<int>q; inline int read() {int f=0;char ch=getchar();while(ch>'9' || ch<'0')ch=getchar();while(ch>='0' && ch<='9'){f=f*10+ch-'0';ch=getchar();}return f; } int n,a,b; int main() {freopen("Dry.in","r",stdin);freopen("Dry.out","w",stdout);n=read();a=read();b=read();for(int i=1;i<=n;i++){int x=read();q.push(x);}int i;for(i=0;;++i){int x=q.top();q.pop();if(x-a*i<=0) break;else if(x-b>0)q.push(x-b);}printf("%d",i);return 0; }
O(n)算法 from cjt(长乐某巨佬
#include<iostream> #include<cstdio> #include<cstring> using namespace std; inline int read() {int f=0;char ch=getchar();while(ch>'9' || ch<'0')ch=getchar();while(ch>='0' && ch<='9'){f=f*10+ch-'0';ch=getchar();}return f; } int n,a,b; int cnt[500010]; int main() {int mx=-1;n=read();a=read();b=read();for(int i=1;i<=n;i++){int x=read();cnt[x]++;mx=max(mx,x);}int t=0;while(t*a<mx){t++;if(mx-b>0)cnt[mx-b]++;cnt[mx]--;while(!cnt[mx])mx--;}printf("%d",t);return 0; }
T2解密文本
【问题描述】
已知英语中26个字母出现的概率p[0],p[1]……,p[25](它们的和为1),分别表示’a’, ‘b’,‘c’……出现的概率(大写字母和小写字母被认为是一样的)。
现在有一个加密过的文件,加密方法是将原文件中的每一个字母进行相同的变换,其他的字符不变,变换的方法如下:
如果将a到z编号为0到25,那么字母i将被替换成(i+k) mod 26,0<=k<26。原来是大写的字母,仍然是大写,原来是小写的字母仍然是小写。
但是你并不知道k的值,所以只好枚举。因为知道26个字母出现的频率,所以你可以选择一个尽量好的k,使得频率的方差和最小,方差和定义如下:
假设你枚举的k还原出来的原文件中的26个字母出现的概率为x[0], x[1], ……, x[25],那么方差和为:(p[0]-x[0])^2 + (p[1]-x[1])^2 + …… + (p[25]-x[25])^2。
如果有两个相同的k一样好,那么选较小的k。
最后输出解密出的原文件。
【输入格式】
前26行分别是26个字母出现的概率。
接下来是一个只含有26个大小写字母和空格,换行符,标点符号,阿拉伯数字等的文本。
【输出格式】
解密过的文本。
【输入样例】
0.109375
0.000000
0.062500
0.015625
0.109375
0.015625
0.015625
0.000000
0.062500
0.015625
0.000000
0.078125
0.062500
0.062500
0.093750
0.015625
0.015625
0.031250
0.046875
0.046875
0.046875
0.000000
0.000000
0.000000
0.093750
0.000000
L dp Ol Bxtldq, ru brx fdq fdoo ph VsdfhIobhu.
L dp jodg wr vhh brx.
Hqmrb pb frqwhvw.
【输出样例】
I am Li Yuqian, or you can call me SpaceFlyer.
I am glad to see you.
Enjoy my contest.
分析:处理数据 枚举 完事
-----------------------------------------------------xjh:T2不是很简单吗---------------------------------------------------orz
TvTvTvTvTvT
#include<iostream> #include<cstdio> #include<cstring> #include<string> using namespace std; const int mod=26; string s[1005]; double x[30]; double oc[30],sum1; //oc记录字符串中字母出现次数 int tot; struct rex{double p; }p[26]; struct rec{string s;int len;int bo[10000];//小写0 大写1 符号2 }qaq[1005]; double sq() {double w=0;for(int i=0;i<26;i++)w+=(p[i].p-x[i])*(p[i].p-x[i]);return w; } int main() {//freopen("decode.in","r",stdin);//freopen("decode.out","w",stdout);for(int i=0;i<26;i++){scanf("%lf\n",&p[i].p); //(-w-|||) 不//(-u-|||) 写//(-A-|||) 换//(-a-|||) 行//(-o-|||) 好//(-^-|||) 凉//(-v-|||) 爽 }while(getline(cin,s[++tot])){qaq[tot].s=s[tot];int len=qaq[tot].len=s[tot].length();for(int i=0;i<len;i++){if(s[tot][i]>='a' && s[tot][i]<='z'){oc[s[tot][i]-'a']++;qaq[tot].bo[i]=0;}else if(s[tot][i]>='A'&&s[tot][i]<='Z'){oc[s[tot][i]-'A']++;qaq[tot].bo[i]=1;}else qaq[tot].bo[i]=2;} }for(int i=0;i<26;i++)sum1+=oc[i];int ak=0;double sq1=999999999999;for(int k=0;k<26;k++){for(int i=0;i<26;i++)x[i]=oc[(i+k)%26]/sum1;if(sq1>sq()){sq1=sq();ak=k;}}for(int i=1;i<tot;i++){int len=qaq[i].len;for(int j=0;j<len;j++){char ch=qaq[i].s[j];if(qaq[i].bo[j]==2) cout<<ch;else if(qaq[i].bo[j]==0){cout<<(char)((ch-'a'-ak+52)%26+'a');}else if(qaq[i].bo[j]==1){cout<<(char)((ch-'A'-ak+52)%26+'A');}}cout<<endl;}return 0; }
T3休息
【问题描述】
休息的时候,可以放松放松浑身的肌肉,打扫打扫卫生,感觉很舒服。在某一天,某LMZ开始整理他那书架。已知他的书有n本,从左到右按顺序排列。他想把书从矮到高排好序,而每一本书都有一个独一无二的高度Hi。他排序的方法是:每一次将所有的书划分为尽量少的连续部分,使得每一部分的书的高度都是单调下降,然后将其中所有不少于2本书的区间全部翻转。重复执行以上操作,最后使得书的高度全部单调上升。可是毕竟是休息时间,LMZ不想花太多时间在给书排序这种事上面。因此他划分并翻转完第一次书之后,他想计算,他一共执行了多少次翻转操作才能把所有的书排好序。LMZ惊奇地发现,第一次排序之前,他第一次划分出来的所有区间的长度都是偶数。
【输入格式】rest.in
第一行一个正整数n, 为书的总数。
接下来n行,每行仅一个正整数Hi,为第i本书的高度。
【输出格式】rest.out
仅一个整数,为LMZ需要做的翻转操作的次数。
样例输入 |
样例输出 |
6 5 3 2 1 6 4 |
3 |
【样例解释】
第一次划分之后,翻转(5,3,2,1),(6,4)。之后,书的高度为1 2 3 5 4 6,然后便是翻转(5,4)即可。
【数据范围与约定】
对于10%的数据:n<=50
对于40%的数据:n<=3000
对于100%的数据:1<=n<=100000, 1<=Hi<=n
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int h[1000010],r[1000010],n,now; long long ans=0; inline int read() {int f=0;char ch=getchar();while(ch>'9' || ch<'0')ch=getchar();while(ch>='0' && ch<='9'){f=f*10+ch-'0';ch=getchar();}return f; } void msort(int ll,int rr) {if(ll==rr)return ;int mid=(ll+rr)>>1;msort(ll,mid);msort(mid+1,rr);//递归 int i=ll,j=mid+1,k=ll;while(i<=mid && j<=rr){if(h[i]<=h[j])r[k++]=h[i++];//先赋值再+1else {r[k++]=h[j++];ans+=(long long)mid-i+1;//重点 }}while(i<=mid){r[k++]=h[i++];}while(j<=rr) {r[k++]=h[j++];}for(int i=ll;i<=rr;i++)h[i]=r[i]; } int main() {n=read();h[n+1]=0x3f3f3f3f;for(int i=1;i<=n;i++)h[i]=read();//区间翻转 for(int i=1;i<=n;i++){if(h[i]<h[i+1]){sort(h+now+1,h+i+1);now=i;ans++;}}//归并排序求逆序对msort(1,n);printf("%lld",ans);return 0; }
转载于:https://www.cnblogs.com/WJill/p/11240760.html
弱鸡儿长乐爆零旅Day3相关推荐
- 弱鸡儿长乐爆零旅Day5
T1圆圈舞蹈 [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时针走,到 ...
- 弱鸡儿长乐爆零旅Day4
T1 矩阵(matrix) [题目描述] 从前有个 n×m 的矩阵,初始时每个位置均为 0.你需要依次执行 q 个操作,每个操作会指定一行或一列,然后将该行或该列的所有元素全部赋为一个相同的值. 输出 ...
- 弱鸡儿长乐爆零旅Day1
T1魔法照片 #include<iostream> #include<cstdio> #include<algorithm> using namespace std ...
- 弱鸡儿长乐爆肝旅Day8
T1远征(expedition) [题目描述] 寒枫将军将要带领他的部队去圣雪山消灭那里的冰龙. 部队分成了若干个小队,属于同一个小队的人兵种相同.寒枫将军有着杰出的指挥能力,在战斗的时候,寒枫将军能 ...
- 弱鸡儿终于没爆零Day7
谢谢lpf 终于没爆零了 删除(del) [题目描述] 现在,我的⼿上有 n 个数字,分别是 a1,a2,a3,...,an. 我现在需要删除其中的 k 个数字.当然我不希望随随便便删除,我希望删除 ...
- 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅
这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...
- gdoi2016爆零记
很对不起老师和同学,这次可真的是全程打酱油了. 赛前立的flag不但没有实现,甚至连体面一点的分数都没有拿到,两天的题目加起来仅仅拿了10分,应该算是倒数. day0: 下午一点从石中坐大巴出发到四会 ...
- HNOI2019爆零记
HNOI2019真-爆零祭 我怎么这么菜QAQ day-37 从学科溜过来搞OI. 班主任一直在谈论我退役的事情,这就是NOIP挂分的后果...说我没考好就找理由,人家xxxxxxx可不是xxxxxx ...
- GDKOI2018爆零游记
GDKOI2018爆0游记 大佬们都在blog上写总结了 但是很高兴yzh大佬的总结里面我的名字出现了三次 不行蒟蒻不能写蒟蒻不能发蒟蒻写不出蒟蒻不能写蒟蒻没得写蒟蒻拒绝写 (发出来会被dalao嘲笑 ...
最新文章
- MySQL-获取有性能问题SQL的方法_慢查询 实时获取
- Ubuntu首次开启root用户
- ADF Faces。 立即的自定义客户端事件
- 速度与激情的Webpack
- 漫画:程序员每天的6场战斗
- 开工迎好运,开年好书与开年红包赠予你
- 关于设置table样式后,不停点击按钮table中的数据会逐渐被最后一行替换的问题...
- 第三章 游戏软件工程基础
- Swift中的#pragma mark?
- Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes of storage
- Yii Framework2.0开发教程(8)输入验证
- 在线文档转word文档
- 台式计算机无法连接网络,台式电脑无法连接无线网络怎么办
- MachineLearning in Action (机器学习实战)源码和数据集下载地址
- 河北赛区|数学建模国赛河北赛区成绩发布
- 关闭谷歌Chrome浏览器历史记录提示
- 设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识
- 概率论与数理统计(3.4) 相互独立的随机变量
- ios手机 苹果手机 在小程序里面长按图片 后 点击事件失效问题
- Office WORD如何简繁转换
热门文章
- function 多个函数用一个_程序员如何用一个脚本每天定时给多个女友发微信暖心话...
- oracle安装gcc报错,ubuntu 安装oracle10g
- matlab新建脚本java报错,Matlab(四)脚本的使用
- mysql与php教程,php与Mysql
- SpringBoot 工程目录 整合mybatis-mysql(xml类型)
- 2.3 词嵌入的特性
- Pandas GroupBy对象 索引与迭代
- Pandas Index 属性
- Pandas 文本数据方法 startswith( ) endwith( )
- php中如何滚动文字,HTML_网页HTML代码:滚动文字的制作,制作滚动文字 
通过本章前面 - phpStudy...