哈尔滨工程大学ACM预热赛(A,C,H,I)
A:
链接:https://ac.nowcoder.com/acm/contest/554/A
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
大虎是学校信息学集训队的,立刻想到用计算机来解决这个问题,并很快有了解答:13。第二天他把问题拿到了学校,并说如果第一行有N个格子,第二行有N-1个格子,…,第N行有1个格子,怎么办?现在请你一块来帮助他解决这个难题。
数据范围
30%数据:1≤N≤12
50%数据:1≤N≤30
100%数据:1≤N≤100
输入描述:
仅一行,一个正整数N。
输出描述:
一行,方案总数。
输入
复制
2
输出
复制
4
说明
样例1说明N=2时,有如下4中摆放棋子法(*表示棋子,_表示空格):方案法 1 2 3 4摆放法 *_ ** *_ **摆放法 _ _ * *
输入
3
输出
13 思路:看到这种小规模题,先打表。打表代码:大力搜
LL sum = 0; int n = 6;// 改变n void dfs(int now,int dep){if(dep == 1){now==0?sum+=1:sum+=2;return;}for(int i = 0 ; i <= now && i <= dep; i++){dfs(i,dep-1);} } int main() {for(int i = 1 ; i <= n ; i ++){dfs(i,n-1);}printf("%lld\n",sum); }
然后发现,4,13,41,131,428。。。。卡特兰数减去一。
再看了看数据很大又没有取模。直接Py写了组合数。
卡特兰数 H[n] = c(2*n,n)/(n+1);
代码:
comb = [[0 for i in range(212)] for i in range(212)] for i in range(0,210):comb[i][0] = comb[i][i] = 1;for j in range(1,i):comb[i][j] = comb[i-1][j] + comb[i-1][j-1]; n = int(input()); n+=1; print(comb[2*n][n]//(n+1) - 1);
C题:链接:https://ac.nowcoder.com/acm/contest/554/C来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
第一天可以产a吨粮食,第二天会变成前一天的a倍,以此类推。
n天后大臣准备把这些粮食尽可能多的平均分给b个城池
为了方便,每个城池分到的粮食都是整吨整吨哒!
剩下的粮食国王准备贪污
国王能贪到多少吨粮食呢?
输入描述:
输入的第一行为一个数字T(T<=100),表示数据输入的组数。之后每行3个数字,分别表示 a, n, b(1<=a,n<= 1000,000,000;1<=b<=1000 )。
输出描述:
对于每组数据输出对应结果
输入
1 2 2 3
输出
1
快速幂取模。a^n % b;不贴代码了 H:链接:https://ac.nowcoder.com/acm/contest/554/H来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
输入数据为T组数据(1<=T<=10)。每组数据输入包含三个数字N,A,B(1<=N<=1000000,1<=A<B<=N)。
输出描述:
对于每组数据,输出一个整数,表示从第A个人到第B个人之间有多少人站着。
输入
1 5 1 3
输出
2
思路:又是打表找规律题。首先确定一个位置pos,改变的次数是pos的因子数减1 次。(假设首先是蹲着) 打表:
int a[1001]; memset(a,0,sizeof(a)); int op = 1000; for(int i = 2 ; i <= op ; i++ ){for(int j = 2 ; j <= i ; j++){if(i%j == 0){a[i] ^= 1;}} } for(int i = 1 ; i <= op ; i++){printf("%d ",a[i]);if(!a[i])puts(""); }puts("");
很容易发现1的个数会每次+2。
求个前缀和就行了。
代码:
#include<bits/stdc++.h> using namespace std; #define LL long long #define INF 2000000000 const LL mod = 1e9+7; int a[2000100]; int main() {memset(a,0,sizeof(a));int p = 0,k = 0;while(k <= 1000001){a[k++] = 0;for(int i = 0 ; i < 2*p && k <= 1000001; i++){a[k++] = 1;}p++;}for(int i = 2 ; i <= 1000000 ; i++){a[i] += a[i-1]; }int t;scanf("%d",&t);while(t--){int n,x,y;scanf("%d %d %d",&n,&x,&y);printf("%d\n",a[y] - a[x-1]); } } /* 2 9 1 4 1000000 1 1000000 */
I:
链接:https://ac.nowcoder.com/acm/contest/554/I
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
输入包含多组测试数据。每组测试输入包含一组数字包含的整数个数n以及n个整数mi(1<=n<1000,0<=mi<=10000)给定的整数互不重复。
输出描述:
对于每组测试数据,输出一个整数,给定整数按升序排序时所需花销的最小值。
输入
4 3 1 5 4
输出
13 思路:首先肯定交换的肯定是闭环上的数。比如说 4 3 1 2 5。第一个环是4-->2-->3-->1-->4,这几个位置上的数,交换一下位置可以得到递增的。环是以number-->pos[number]-->pos[pos[number]]....下去的。比赛的时候爆WA了,说说赛中的想法。赛中的时候想法就是肯定是用环中最小的数作为媒介去交换啊,记一个环的元素有k个,最小的数为Min,环的元素和为Sum。肯定是拿Min去做n-1次交换啊,所以答案是(Sum-Min)+(k-1)*Min;即用最小的元素去跟其他的k-1个交换产生的价值。没考虑到另外一种情况,举个例子:1 400 200 300,这个数组,环是400->300->200->400。那么我们拿200去换吗?肯定不是,显然用1作为媒介交换是最合适的。 所以有了第二种情况(赛后看了下AC的代码发现的思维误区),即拿数组中最小的元素作为媒介,去把当前环中的数交换成有序的。记全部元素中最小的数是All_Min产生的代价是Min+Sum+(k-1)*All_Min。手推一下就OK的。所以每次环增加的代价是这两种情况取小的那种。(说实话这题很质量啊,很考验思维。。哎还是我太菜了) 最后注意的是离散化一下数组,因为题目中给定的不是完全的1~n的数字。代码:
#include<bits/stdc++.h> using namespace std; #define LL long long #define INF 2000000000 const LL mod = 1e9+7; int mp[10001]; int main() {int a[1001],pos[1001],vis[1001];int n;while(~scanf("%d",&n)){memset(mp,0,sizeof(mp));vector<int>vec;int Min = 100000000;for(int i = 1 ; i <= n ; i++){scanf("%d",a+i);vec.push_back(a[i]);Min = min(a[i],Min);pos[i] = i;//应该在的位置 }sort(vec.begin(),vec.end());for(int i = 0 ; i < n ; i++){mp[vec[i]] = i+1;}//离散化 LL sum = 0;memset(vis,0,sizeof(vis)); for(int i = 1 ; i <= n ; i++){if(!vis[i]){if(pos[i] != mp[a[i]]){int be = i;vector<int>v;int nowsum = 0;//存储当前环中元素和 while(!vis[be]){v.push_back(a[be]);vis[be] = 1;nowsum += a[be];be = pos[mp[a[be]]]; }sort(v.begin(),v.end());int useself = (v.size()-2)*v[0]+nowsum;int use_min_number = v[0] + nowsum + (v.size()+1)*Min;//两种情况取小的那种,加到sums上。 sum += min(useself,use_min_number);}else{vis[i] = 1;}}}cout<<sum<<endl;} } /* 5 1 2 3 4 0 4 1 300 400 100 */
转载于:https://www.cnblogs.com/Esquecer/p/10650175.html
哈尔滨工程大学ACM预热赛(A,C,H,I)相关推荐
- 哈尔滨工程大学ACM预热赛
Problem A https://ac.nowcoder.com/acm/contest/554/A 题解: 找规律 /* *@Author: STZG *@Language: C++ */ #in ...
- 大连海事大学ACM校赛题解
大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...
- 广东工业大学acm校赛总结(基础差的人的自我觉悟)
2022.03.27 广东工业大学acm校赛总结: 实话说,这次校赛表现非常不好,B题的钩子就差一点点,分块了,也知道%k也知道分奇数偶数,就是最后差一个特判不知道怎么解决,寥寥草草一个三等奖,练了这 ...
- ICPC 山东省省赛刷题 第十七届哈尔滨工程大学ACM程序设计竞赛 牛客 AKE题 补题
A:As long as I was by her side 题意:连续三个人的高度和是三的倍数,就说这三个人是"挺好的",一组数据进行排序,要求最多"挺好的" ...
- 中国石油大学ACM俱乐部开放训练赛
文章目录 中国石油大学ACM俱乐部开放训练赛 A. sciorz画画(凸多边形最优三角型剖分,区间DP) B. 奎奎发红包(贪心) C. 关于我转生变成史莱姆这档事(DFS) F. 求和(矩阵构造+矩 ...
- 记2020年(第16届)湖南ACM省赛
记2020年(第16届)湖南ACM省赛 写在前面 我很喜欢<龙族>里那个叫路明非的衰小孩.虽然我也不知道为什么要说这个,逃 这个世界有多大,取决于你认识的人,你每认识一个人,世界对你来说就 ...
- 山东ACM省赛酱油记
ACM省赛酱油记 比赛结束许久了,但一直没能静下心写点感想.直到昨天,集训队的所有队员集聚一堂,包括已经考上研的集训队第一批学长学姐,一起谈了谈多年的ACM经历.感受与收获,感触良多,又在今天看到了学 ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- ACM训练赛--递推专题
1001: Buy the Ticket Problem Description The "Harry Potter and the Goblet of Fire" will be ...
最新文章
- JSONP--解决ajax跨域问题
- HTML+CSS基础(2)-HTML标签的简单介绍和网页注释
- 如何让Unity支持中文
- python多态的概念_Python 多态
- Ubuntu13.04 下源码安装Rapidsvn
- 已知二叉树的前序遍历、中序遍历或者中序遍历、后序遍历求二叉树结构的算法
- WINCE6.0远程桌面显示修改
- python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...
- matlab中waitbar用法,matlab中waitbar
- 【点宽专栏】Dual Thrust 交易策略
- 当你的MS OFFICE打不开时,安全模式也失效,来看我给你变戏法吧
- Markdown文档编写规则:标题
- Simulink自动代码生成5——控制函数原型(control function prototype)
- AForge “未能加载文件或程序集“AForge.Video.FFMPEG.dll”或它的某一个依赖项。找不到指定的模块”
- Scalar Evolution
- 鸿蒙系统网络连接设置ip,G1 IP话机网络配置和话机设置
- Python 关于网站更新消息并发送邮箱通知
- 在jsp中通过I/O流方式读取图片并展示到页面
- chown和chgrp和chmod的区别和使用
- D. Deleting Divisors(博弈)
热门文章
- java2048设计说明,Html5中的本地存储设计理念
- 伏安特性曲线实验报告_【鼎阳硬件智库原创 | 测试测量】动手测量电解电容器的阻抗频率特性...
- 服务器日志监控系统怎么解决,服务器日志监控系统
- lesson 4 Show Messages in Messagebox
- 一天搞定DXUT三步曲之二:添加文本
- java中jsp时间插件_日期插件 - WEB源码|JSP源码/Java|源代码 - 源码中国
- Android打砖块课程设计报告,c+课程设计打砖块游戏0_毕业论文
- 怎么在html mui中找到下拉刷新,HelloMUI例子中的下拉刷新
- Java面试题-2021
- SpringBoot Unable to find a @SpringBootConfiguration, you need to use....