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项目启动时执行指定方法的几种方式
很多时候我们都会碰到需要在程序启动时去执行的方法,比如说去读取某个配置,预加载缓存,定时任务的初始化等.这里给出几种解决方案供大家参考. 1. 使用@PostConstruct注解 这个注解呢,可以在 ...
- 音频处理库—librosa的安装与使用
序言 Librosa是一个用于音频.音乐分析.处理的python工具包,一些常见的时频处理.特征提取.绘制声音图形等功能应有尽有,功能十分强大.本文主要介绍librosa的安装与使用方法. 一.lib ...
- 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)
原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...
- JavaScript优化细节(一)
1.置空Closure(闭包)引起的Memory leak滞留的Object和domain 2.用fragment实现append大量元素 var f= document.createDocument ...
- vue 解决无法设置滚动位置的问题
问题描述 在实现锚点定位的时候发现无法设置滚动条的位置. 在Vue中,使用 document.body.scrollTop=952 无法设置滚动条的高度. document.body.scrollTo ...
- 13 Tensorflow API主要功能
要想使用Tensorflow API,首先要知道它能干什么.Tensorflow具有Python.C++.Java.Go等多种语言API,其中Python的API是最简单和好用的. Tensor Tr ...
- Java生成sitemap网站地图
访问我的博客 sitemap 是什么?对应没有接触过网站 SEO 的同学可能不知道,这里引用一下百度站长的一段解释. Sitemap(即站点地图)就是您网站上各网页的列表.创建并提交Sitemap有助 ...
- SLAM入门之视觉里程计(3):两视图对极约束 基础矩阵
在上篇相机模型中介绍了图像的成像过程,场景中的三维点通过"小孔"映射到二维的图像平面,可以使用下面公式描述: \[ x = MX \]其中,\(c\)是图像中的像点,\(M\)是一 ...
- Go语言的map如何判断key是否存在
判断方式为value,ok := map[key], ok为true则存在 package main import "fmt" func main() { demo := map[ ...
- [THUWC2017] 在美妙的数学王国畅游
Description 懒得概括了.. Solution 挺裸的LCT+挺裸的泰勒展开吧... 稍微了解过一点的人应该都能很快切掉...吧? 就是把每个点的函数泰勒展开一下然后LCT维护子树sum就行 ...