7.9模拟比赛解题报告
7.9模拟比赛
注:本场考试3道题,时间3个小时。全部为codevs上的题目
1、2124 美丽的大树
题目描述 Description
平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下:
1 3 5 7 ………… 45 47 49 …………99 第一行
2 4 6 8 ………… 46 48 50 …………100 第二行
但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中的一部分! 公安部门马上出动,列出了被偷去了大树的编号。现在摆在我们面前的情况是,如果你带领的游客走过的旁边是空空的树坑,那是令人无法接受的,因此我们只能压缩游客在平江路上的旅游距离,务必使游客在连续的大树边游玩,当时,我们就得找出一列(边)最长的连续的大树展现在游客面前。请你编写程序解决这一难题。
输入描述 Input Description
N (表示有N棵大树被盗) N1 N2 N3……NN (被盗大树的编号)
输出描述 Output Description
M X (表示从第M棵大树开始,共有连续的X棵大树,如果有多个解,输出M最小的解即可)
样例输入 Sample Input
5 9 15 27 35 6
样例输出 Sample Output
8 47
数据范围及提示 Data Size & Hint
N<=100
75分代码,特判没有处理好
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 1010 int n,vis[N],q[N],o[N],qz,oz; int qd,ans; int main(){scanf("%d",&n);for(int i=1,x;i<=n;i++){scanf("%d",&x);vis[x]=1;if(x%2) q[++qz]=x;else o[++oz]=x;}sort(q+1,q+qz+1);sort(o+1,o+oz+1);for(int i=1;i<=qz;i++){int j;for(j=q[i]+2;!vis[j]&&j<=100;j+=2);j-=2;if((j-q[i])/2>ans){qd=q[i]+2;ans=(j-q[i])/2;}}for(int i=1;i<=oz;i++){int j;for(j=o[i]+2;!vis[j]&&j<=100;j+=2);j-=2;if((j-o[i])/2>ans){qd=o[i]+2;ans=(j-o[i])/2;}}int j;for(j=q[1]-2;!vis[j]&&j>0;j-=2);if((q[1]-j)/2>ans){qd=j+2;ans=(q[1]-j)/2;}for(j=o[1]-2;!vis[j]&&j>0;j-=2);if((o[1]-j)/2>ans){qd=j+2;ans=(o[1]-j)/2;}printf("%d %d\n",qd,ans);return 0; }
题解:讨论奇偶(全奇/全偶/部分奇偶),然后模拟
AC代码:
1、(注意特判)
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 1010 int n,vis[N],q[N],o[N],qz,oz; int qd,ans; int main(){scanf("%d",&n);for(int i=1,x;i<=n;i++){scanf("%d",&x);vis[x]=1;if(x%2) q[++qz]=x;else o[++oz]=x;}sort(q+1,q+qz+1);sort(o+1,o+oz+1);if(!qz){int j;for(j=1;!vis[j]&&j<=100;j+=2);j-=2;if((j-1)/2+1>ans){qd=1;ans=(j-1)/2+1;}}else{for(int i=1;i<=qz;i++){int j;for(j=q[i]+2;!vis[j]&&j<=100;j+=2);j-=2;if((j-q[i])/2>ans){qd=q[i]+2;ans=(j-q[i])/2;}}}if(!oz){int j;for(j=2;!vis[j]&&j<=100;j+=2);j-=2;if((j-2)/2+1>ans){qd=2;ans=(j-2)/2+1;}}else{for(int i=1;i<=oz;i++){int j;for(j=o[i]+2;!vis[j]&&j<=100;j+=2);j-=2;if((j-o[i])/2>ans){qd=o[i]+2;ans=(j-o[i])/2;}}}int j;for(j=q[1]-2;!vis[j]&&j>0;j-=2);if((q[1]-j)/2>ans){qd=j+2;ans=(q[1]-j)/2;}for(j=o[1]-2;!vis[j]&&j>0;j-=2);if((o[1]-j)/2>ans){qd=j+2;ans=(o[1]-j)/2;}printf("%d %d\n",qd,ans);return 0; }
2、(不需要特判的讨论)
#include<cstdio> #include<iostream> #include<algorithm> #define N 110 using namespace std; int vis[N],cnt; struct node{int len,begin; }e[N]; inline bool cmp(const node &x,const node &y){if(x.len>y.len) return 1;if(x.len==y.len&&x.begin<y.begin)return 1;return 0; } int main(){int n;scanf("%d",&n);for(int i=1,x;i<=n;i++){scanf("%d",&x);vis[x]=1;}bool flag=0;for(int i=1;i<=100;i+=2){if(!flag&&!vis[i]){flag=1;++cnt;e[cnt].begin=i;e[cnt].len=1;}else if(flag){if(!vis[i])e[cnt].len++;else flag=0;}}flag=0;for(int i=2;i<=100;i+=2){if(!flag&&!vis[i]){flag=1;++cnt;e[cnt].begin=i;e[cnt].len=1;}else if(flag){if(!vis[i]) e[cnt].len++;else flag=0;}}sort(e+1,e+cnt+1,cmp);printf("%d %d",e[1].begin,e[1].len);return 0; }
2、1507 酒厂选址
题目描述 Description
Abstinence(戒酒)岛的居民们酷爱一种无酒精啤酒。以前这种啤酒都是从波兰进口,但今年居民们想建一个自己的啤酒厂。岛上所有的城市都坐落在海边,并且由一条沿海岸线的环岛高速路连接。酒厂的投资者收集了关于啤酒需求量的信息,即每天各城市消费的啤酒桶数。另外还知道相邻城市之间的距离。每桶啤酒每英里的运费是1元。日运费是将所需要的啤酒从酒厂运到所有城市所必需的运费之和。日运费的多少和酒厂的选址有关。投资者想找到一个合适的城市来修建酒厂,以使得日运费最小。
请设计一个程序:从文件bre.in 读入城市的数目、相邻两城市间的距离以及每个城市消费的啤酒桶数,计算最小的日运费,将结果写到输出文件bre.out中。
输入描述 Input Description
第一行是一个整数n(5 <= n <= 10000) ,表示城市的数目。 城市沿高速路编号,使得相邻的城市的编号也相邻(城市1和n也被认为是相邻)。 以下的n行,每行有两个非负整数。第I+1行的数 zi、di分别是城市I每日的啤酒消费量(桶)和从城市I沿高速路到下一个城市的距离(英里)。高速路的总长不会超过65535 英里。每座城市的日消费量不会超过255桶。
输出描述 Output Description
一个整数,表示所需的最小日运费(元)。
样例输入 Sample Input
6
1 2
2 3
1 2
5 2
1 10
2 3
样例输出 Sample Output
41
数据范围提示:
文本:
int ://int范围至少需要9位数(保守起见) //单纯取大: 0x7f------------127memset(a,127,sizeof a);a[0]------2139062143 //(2e9)0x7fffffff------2147483647 //(2e9)//还要运算:memset(a,127/3,sizeof a);a[0]------707406378 //(2e9)0x3f3f3f3f------1061109567 //(1e9)long long ://long long范围至少需要13位数(保守起见) //一般情况下取大和运算:0x7ffffffffff-----------8796093022207 //(8e13)//极限取大: 9223372036854775807LL---9223372036854775807 //(9e19)
AC代码:
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 10010 long long n,v[N],d[N],s[N],sum; int main(){cin>>n;for(int i=1;i<=n;i++){cin>>v[i]>>d[i];sum+=d[i];s[i]=s[i-1]+d[i-1];}long long ans=0x7ffffffffff;for(int i=1;i<=n;i++){long long t=0;for(int j=1;j<=n;j++){if(i!=j){long long q=abs(s[j]-s[i]);long long dis=min(q,sum-q);t+=dis*v[j];}}ans=min(ans,t);}cout<<ans<<endl;return 0; }
3、1697 ⑨要写信
题目描述 Description
琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。
由于以下三点原因……
- 琪露诺的符卡 冰符“Icicle Fall”-Easy的弹幕有够蠢的,只要站在她的正前方就没任何弹幕会碰到你;
- ZUN在《红魔乡》中介绍她时已经说她有点笨笨的了;
- 在ZUN放出《东方花映冢》的介绍图时,在图中把琪露诺放在了⑨的位置上,并以“⑨笨蛋”简单带过,从此“⑨”及“笨蛋”就成为她的别名了……
所以琪露诺便得到了“笨蛋”的别称。
某日,琪露诺又2了……
她写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
输入描述 Input Description
信和信封的数量N。
输出描述 Output Description
装错的可能性的数量。
样例输入 Sample Input
输入样例1
2
输入样例2
4
样例输出 Sample Output
输出样例1
1
输出样例2
9
数据范围及提示 Data Size & Hint
1≤N≤100
//方程:f[i]=(f[i-1]+f[i-2])*(i-1){f[1]=0,f[2]=1} //f[i]表示i封信要装到i个信封里面全都装错有f[i]种可能性 //本题还需要用高精度 #include<cstdio> #include<cstring> using namespace std; #define N 510 int n,a[N],b[N],c[N],az,bz,cz; int main(){scanf("%d",&n);b[1]=1;az=bz=1;if(n==1){printf("0\n");return 0;}if(n==2){printf("1\n");return 0;}for(int i=3;i<=n;i++){cz=bz;for(int j=1;j<=cz;j++){c[j]+=(i-1)*(a[j]+b[j]);c[j+1]+=c[j]/10;c[j]%=10;}for(;c[cz+1]!=0;cz++){c[cz+2]+=c[cz+1]/10;c[cz+1]%=10; }for(int i=0;i<N;i++) a[i]=b[i];az=bz;for(int i=0;i<N;i++) b[i]=c[i];bz=cz;memset(c,0,sizeof c);}while(b[bz+1]!=0) bz++;if(b[bz]==0) bz--;for(int i=bz;i>=1;i--) printf("%d",b[i]);puts("");return 0; }
转载于:https://www.cnblogs.com/shenben/p/5655861.html
7.9模拟比赛解题报告相关推荐
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(
我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...
- [180609] A fumble fish week(BISTU第九届C语言基本技能比赛 解题报告)
比赛链接:http://acm.bistu.edu.cn/acmhome/contest.do?&method=contestDetail&contestId=66 (外网可能上不去) ...
- 10月9日模拟题解题报告
PS:昨天月考,极其恶劣的成绩,结果李总在伤口上给我们撒盐,今天搞了个模拟赛--- 1.期末考试 finaltest.cpp/c/pas 1s / 128M [题目描述] 山山同学在期末考试前向他妈 ...
- 2020年蓝桥杯模拟赛解题报告(Python真香)
第一题 单位变换 题目 [问题描述] 在计算机存储中,15.125GB是多少MB? [答案提交] 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填 ...
- 谷歌中国算法比赛解题报告 APAC2015C
Problem A. Minesweeper Problem B. Taking Metro Problem C. Broken Calculator Problem D. Tetris 这次的题侧重 ...
- 2019.03.13 ZJOI2019模拟赛 解题报告
得分: \(55+12+10=77\)(\(T1\)误认为有可二分性,\(T2\)不小心把\(n\)开了\(char\),\(T3\)直接\(puts("0")\)水\(10\)分 ...
- 10.31NOIP模拟赛解题报告
心路历程 预计得分:\(100 +100 +80\) 实际得分:\(30 + 100 + 80\) 天天挂分..感觉我noip要凉.. T1不难,但是太坑了 T2不难 T3不难,但是在小机房考试脑子都 ...
- Noip模拟题解题报告
Pro 第一次AK. 题目链接 Sol 站军姿 算是数学题吧,求出两圆的位置关系,然后余弦定理和扇形面积什么的搞搞就行. #include<iostream> #include<cs ...
最新文章
- 最高10万奖励!不限选题!高通AI应用创新大赛应用赛道详解
- Ubuntu 组态 Tomcat而每天的错误解决
- Swift 4.1增强了泛型、编译器和包管理器
- CentOS 7 安装 MySQL
- android.provider.documentscontract cannot be resolved.
- 在CentOS上使用Jexus托管运行 ZKEACMS
- Asp.net 自定义config文件读取
- CREO - 基础3 - 用拉升的方法构建一个双轮胎模型
- RTT线程管理篇——RTT什么时候调度
- aix linux ftp,在AIX下安装配置FTP服务器
- 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(五)
- R语言绘制 tan 图像
- vue组件库(Element UI)
- 如何把微信消息或者短信实时转发到另一个手机上
- 英语单词记忆(词缀 / 前缀)
- JQuery实现步骤条效果(上一步,下一步)
- 湿敏电阻CM-R / HR202应用 原理图 IO输出交流 AD采样
- 【DNS】Windows查看和清理DNS缓存
- android自适应屏幕翻转,Android中正确自适应屏幕翻转
- 关于 PM2 Daemon 进程,内存爆涨的问题分析及解决
热门文章
- 零基础学会3DsMax超炫酷战斗机飞行动画
- CF #764 Div.3(B ~D)
- 一文搞懂地域和可用区如何选择
- poj2965 The Pilots Brothers' refrigerator
- 蓝牙血压计PCBA硬件解决方案
- scrapy爬虫框架 (5. 避免被封措施)
- 挽救婚姻从“心”开始
- NASA推出新型纳米离子RF开关
- could not load library cudnn_ops_infer64_8.dll. Error code 126
- 剑灵灵动区服务器位置,剑灵第四次合服或将来临,终于合大区