题目1 : 玩具设计师

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小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 : 剪切字符串

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小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的更多相关文章

  1. hihocoder 编程练习赛23

    第一题:H国的身份证号码I 题意:一个N位的正整数(首位不能是0).每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K.按从小到大的顺序输出所有合法的N位号码,每个号码占一行. 思路:dfs ...

  2. hihocoder编程练习赛75

    题目1 : 工作城市分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H公司在北京和上海两个城市各有一间办公室.该公司最近新招募了2N名员工,小Hi负责把这2N名员工 ...

  3. hihoCoder编程练习赛70

    题目1 : 数位翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 n,你可以进行若干次操作,每次操作可以翻转 n 的二进制表示下的某一位,即将 0 变成 ...

  4. hihoCoder编程练习赛69

    题目1 : 偶数长度回文子串 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串 输入 输入包含多组数据. ...

  5. hihoCoder编程练习赛67

    题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...

  6. hihoCoder编程练习赛52

    题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...

  7. hihoCoder编程练习赛49

    题目1 : 相似颜色 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000 ...

  8. hihocoder编程练习赛91:相邻字符串

    题目链接 给定一个长度小于1e5的字符串s,s中字符全是大写英语字母.现在要寻找s中有多少组邻近的"hio"字符串,邻近的定义如下:hi距离+io距离+ho距离小于k.输入k和s, ...

  9. 【hihocoder编程练习赛9】闰秒

    题目链接 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g ...

随机推荐

  1. 「ZJOI2017」树状数组(二维线段树)

    「ZJOI2017」树状数组(二维线段树) 吉老师的题目真是难想... 代码中求的是 \(\sum_{i=l-1}^{r-1}a_i\),而实际求的是 \(\sum_{i=l}^{r}a_i\),所以 ...

  2. Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

    最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法 ...

  3. stc15f104w模拟串口使用

    stc15f104w单片机体积小,全8个引脚完全够一般的控制使用,最小系统也就是个电路滤波----加上一个47uf电容和一个103电容即可,但因为其是一个5V单片机,供电需要使用5V左右电源. 该款单 ...

  4. Spring Boot 自定义日志详解

    本节内容基于 Spring Boot 2.0. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring ...

  5. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings

    [解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...

  6. JavaScript优化细节(一)

    1.置空Closure(闭包)引起的Memory leak滞留的Object和domain 2.用fragment实现append大量元素 var f= document.createDocument ...

  7. Microsoft 机器学习产品体系对比和介绍

    Microsoft 提供多种多样的产品选项用于生成.部署和管理机器学习模型. 本文将比较这些产品,并帮助你选择所需的产品,以便最有效地开发机器学习解决方案. 机器学习产品 描述 作用 Azure云端服 ...

  8. Android内存管理篇 - adj的概念与进程adj级别控制

    本文主要介绍Android的lowmemorykiller的oom_adj的相关概念,以及根据一些案例来阐述了解oom_adj对于做Android应用开发的重要意义. 一.lowmeorykiller ...

  9. 设置Firefox(火狐)浏览器的中文菜单/界面

    步骤一: 设置Firefox浏览器的中文菜单/界面.首先需要查一下正在使用的火狐版本号(小生使用的火狐版本是55.0.3).      步骤二: 下载对应版本的xpi中文插件 其次,访问下面的火狐官方 ...

  10. Python从入门到精通系列文章总目录

    Python最新全套课程(8月中旬开的课),共四个月.所有课件,项目源码,课后习题和答案都包括在内. 包括:Python实战项目引入.Python基础.爬虫基础.爬虫库.Scrapy爬虫框架.动态页面 ...