hihoCoder编程练习赛72
题目1 : 玩具设计师
描述
小Ho作为Z国知名玩具品牌AKIRE的首席设计师,对玩具零件的挑剔程度已经到了叹为观止的地步。所有的玩具零件均在一块由N × M个单位块组成的设计板上切割获得。每个单位块有一个耐用指数aij。

由于玩具制作安全标准要求每个零件的面积至少大于等于S,小Ho想要知道设计板上能切割出满足标准的最大耐用指数的玩具零件为多少。
输入
输入共N+1行,第一行三个整数N,M,S表示设计板的大小以及安全标准中对玩具零件面积的最低要求
第二行到第N+1行每行M个整数表示各个单位块的耐用指数。
1 ≤ N, M ≤ 300, 1 ≤ S ≤ 90000, |aij| ≤ 104
输出
输出共一行,表示满足安全要求的最大耐用指数。
- 样例输入
-
3 3 3
-3 -4 2
4 1 -2
3 -2 3 - 样例输出
-
7
思路:枚举矩形左上角点(x,y)和右下角点(i,j),o(n^4)居然也能过
//2018-08-12
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int N = ;
const int INF = 0x3f3f3f3f; int M[N][N], n, m, s; int main()
{
while(cin>>n>>m>>s){
for(int i = ; i < n; i++)
for(int j = ; j < m; j++){
cin>>M[i][j];
}
for(int i = ; i < n; i++)
for(int j = ; j < m; j++)
M[i][j] += M[i-][j];
for(int j = ; j < m; j++)
for(int i = ; i < n; i++)
M[i][j] += M[i][j-];
int ans = -INF;
for(int i = ; i < n; i++){
for(int j = ; j < m; j++){
for(int x = ; x <= i; x++){
for(int y = ; y <= j; y++){
if((i-x+)*(j-y+) < s)break;
int tmp = M[i][j];
if(x- >= )tmp -= M[x-][j];
if(y- >= )tmp -= M[i][y-];
if(y->= && x->=)tmp += M[x-][y-];
ans = max(ans, tmp);
}
}
}
}
cout<<ans<<endl;
} return ;
}
题目2 : 剪切字符串
描述
小Hi有一个长度为N的字符串,这个字符串每个位置上的字符两两不同。现在小Hi可以进行一种剪切操作:
选择任意一段连续的K个字符,把这段子串剪下来,粘在串首或者串尾。例如ABCDE -> ADEBC、ABCDE -> BCADE或者ABCDE -> DEABC等。
小Hi想知道如果可以反复进行任意次剪切操作,他最多可能得到多少种不同的字符串。由于数目可能非常大,你只需要输出模P(P是质数)的余数即可。
输入
三个整数N, K和P。
1 ≤ K ≤ N ≤ 107, 1 ≤ P ≤ 109 P是质数
输出
一个整数代表答案。
- 样例输入
-
6 5 11
- 样例输出
-
6
思路:打表找规律,打表代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <set>
#include <queue> using namespace std; int main()
{
for(int n = ; n <= ; n++){
for(int k = ; k <= n; k++){
string str(n, '.');
queue<string> que;
set<string> st;
set<string>::iterator iter;
for(int i = ; i < n; i++)
str[i] = 'a'+i;
que.push(str);
st.insert(str);
while(!que.empty()){
string ss = que.front();
que.pop();
for(int i = ; i+k < n; i++){
string ss1(ss, i, k);
string ss2 = "";
for(int j = ; j < i; j++)
ss2.push_back(ss[j]);
for(int j = i+k; j < n; j++)
ss2.push_back(ss[j]);
string s1 = ss1+ss2;
iter = st.find(s1);
if(iter == st.end()){
st.insert(s1);
que.push(s1);
}
string s2 = ss2+ss1;
iter = st.find(s2);
if(iter == st.end()){
st.insert(s2);
que.push(s2);
}
}
}
cout<<n<<" "<<k<<" -> "<<st.size()<<endl;
}
} return ;
}
打表代码
AC代码
//2018-08-12
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long using namespace std; int main(){
ll n, k, p;
cin>>n>>k>>p;
ll num2 = 1LL;
for(int i = ; i < n-; i++)
num2 = (num2*(n-i))%p;
ll num1 = (num2*)%p;
if(n==k){
cout<<<<endl;
}else if(k == n-){
cout<<n<<endl;
}else{
if(k&1LL){
cout<<num1<<endl;
}else cout<<num2<<endl;
}
return ;
}
hihoCoder编程练习赛72的更多相关文章
- hihocoder 编程练习赛23
第一题:H国的身份证号码I 题意:一个N位的正整数(首位不能是0).每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K.按从小到大的顺序输出所有合法的N位号码,每个号码占一行. 思路:dfs ...
- hihocoder编程练习赛75
题目1 : 工作城市分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H公司在北京和上海两个城市各有一间办公室.该公司最近新招募了2N名员工,小Hi负责把这2N名员工 ...
- hihoCoder编程练习赛70
题目1 : 数位翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 n,你可以进行若干次操作,每次操作可以翻转 n 的二进制表示下的某一位,即将 0 变成 ...
- hihoCoder编程练习赛69
题目1 : 偶数长度回文子串 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串 输入 输入包含多组数据. ...
- hihoCoder编程练习赛67
题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...
- hihoCoder编程练习赛52
题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...
- hihoCoder编程练习赛49
题目1 : 相似颜色 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000 ...
- hihocoder编程练习赛91:相邻字符串
题目链接 给定一个长度小于1e5的字符串s,s中字符全是大写英语字母.现在要寻找s中有多少组邻近的"hio"字符串,邻近的定义如下:hi距离+io距离+ho距离小于k.输入k和s, ...
- 【hihocoder编程练习赛9】闰秒
题目链接 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g ...
随机推荐
- 解析Java分布式系统中的缓存架构(上)
作者 陈彩华 文章转载交流请联系 caison@aliyun.com 本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1 缓存概述 2 缓存的分类 缓存主要分为以下四类 2. ...
- 几分钟几张图教你学会如何使用UML
很多初次接触UML的朋友们可能会感觉它各种各样的线条.关系.描述等晦涩难懂.本篇文章简单介绍了一下其中几个图,用最朴实的语言结合上图片来让你一眼就能理解他们,如果您在阅读的过程种发现错误之处恳请您在评 ...
- 虚拟机安装mysql
安装mysql8.0方法: 1.首先,ubuntu安装mysql8.0(此版本比较好装),所以要先更新一下源,去MySQL官网http://dev.mysql.com/downloads/repo/ ...
- BaseDao优化
BaseDao优化2种方法 1. try { //读取配置文件,配置文件保存了数据库的东西 String path=”database.properties”; //创建实例化对象 Propertie ...
- linux mint 安装 opencv2.4
Download opencv https://github.com/opencv/opencv/tree/2.4 安装必要的依赖 sudo apt-get install build-essenti ...
- Android内存管理篇 - adj的概念与进程adj级别控制
本文主要介绍Android的lowmemorykiller的oom_adj的相关概念,以及根据一些案例来阐述了解oom_adj对于做Android应用开发的重要意义. 一.lowmeorykiller ...
- Docker概念学习系列之详谈Docker 的核心组件与概念(5)
不多说,直接上干货! 见[博主]撰写的https://mp.weixin.qq.com/s/0omuSAjF5afJBZBxhbKTqQ 想要了解Docker,就必须了解Docker的五大核心概念 ...
- String的split方法,你真的懂吗
String的split方法相信大家都不陌生,或多或少都用过它将字符串转成一个数组,但是就是这样一个简单的方法,里面也有一个不得不注意.不深不浅的小坑. 本地测试代码如下图所示: 图1 大家会发现sp ...
- DWR第一篇之入门示例
1. 新建maven-web项目,目录结构如下: 2. 在pom.xml里添加dwr所需的依赖 <dependency> <groupId>org.directwebremot ...
- Java 容器源码分析之 Deque 与 ArrayDeque
Queue 也是 Java 集合框架中定义的一种接口,直接继承自 Collection 接口.除了基本的 Collection 接口规定测操作外,Queue 接口还定义一组针对队列的特殊操作.通常来说 ...