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 ...
随机推荐
- ProgressDialog修改TextView的TextSize
ProgressDialog修改TextView的TextSize 问题描述 今天UI过来找我说是加载条的字号太小了,不好看,希望可以改一下,然后我就研究一下如何修改ProgressDialog里面T ...
- Docker学习笔记-CentOS7镜像
前言: 环境:centos7.5 64 位 正文: 第一步:下载centos7镜像 docker pull centos 第二步:建立centos7的容器 sudo docker run --priv ...
- spring中的mybatis的sqlSession是如何做到线程隔离的?
项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按照原来的jdbc的使用方式,每次操作完成之后都要将连接关闭,但是实际使用中我们并没有这么 ...
- 使用线程统计信息(Thread Statistics)
可在session log中使用线程统计信息来判断source,target或组的性能瓶颈 默认情况下,Integration Service在运行session时,使用一个reader thread ...
- 【PHP篇】变量与常量
变量: 变量的作用域为函数区域 判断是否存在:isset($变量名)://返回bool 判断是否为空:empty($变量名)//变量未声明或者值为空返回1,否则返回false 清除变量:unset($ ...
- CentOS安装Nginx Pre-Built
CentOS安装Nginx Pre-Built比较简单,具体可参见:http://nginx.org/en/linux_packages.html#stable. 本文列出详细步骤,已做备份: cat ...
- Express框架之Jade模板引擎使用
日期:2018-7-8 十月梦想 node.js 浏览:2952次 评论:0条 前段时间讲说了ejs模板引擎,提到了jade的效率等等问题!今天在这里简单提一下jade的使用方式!结合expr ...
- Jade是变体的HTML
在这段HTML代码中,div 包含了一个 a 元素与一段没有标记包围的文本.若要用Jade表述这段HTML,div 元素和 a 元素都可以用前面所述的方法实现,但剩下的那个没有标记包围的文本就不能用前 ...
- Oracle nal() 和count(*)的注意点
select count(*) into fhave from tab_ppxuser where name = userstr;和select nvl(hphotourl, '0') into ph ...
- linux 清空历史命令
系统版本:CentOS 6 history -c 命令可以清空当前窗口的历史输出命令. 要彻底删除历史命令可以有如下几种方式: 在当前用户的-目录下执行: 方式1: echo > .bash_h ...