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 ...
随机推荐
- PHP7 ?:和??的区别
?:和??是PHP添加的新特性,我们可以通过下面的代码来理解 $z = $x ?? $y; //等价于下面 $z = isset($x) ? $x : $y; $z = $x ?: $y; //等价于 ...
- JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...
- fescar分布式事务(概览)
1. fescar分布式事务(概览) 1.1. 概述 Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1.2 ...
- mysql 开发进阶篇系列 6 锁问题(事务与隔离级别介绍)
一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁.接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议. 相比其他数据库,m ...
- Gradle安装使用以及基本操作
这两天看到越来越多的在接触Gradle,然后发现我之前没有做过记录,而且之后下个月的一些有关SpringBoot的东西也需要用到,所以这里就来记录一下,方便以后使用. 简单介绍 Gradle是一个好用 ...
- socket编程(C++)
介绍 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 过程介绍 服务器端和客户端通信过程如下所示: 服务端 服务端的过程主要在该图的左侧部分,下 ...
- 【个人杂谈】MacBook Pro的使用心得
上个月刚买的MacBook Pro,苹果就发新版了.... 从apple香港官网入手了一台MacBook Pro,带到公司,用了差不多一个月吧,这里讲讲我对MacBook的看法吧. 先声明一下两点: ...
- angular框架下的跨域问题(获取天气数据)
1.新浪天气:http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=0&city=&dfc=1&am ...
- go使用websocket遇到dial:x509: certificate signed by unknown authority
websocket.DefaultDialer.Dial(url, headers) 改为 websocket.Dialer{TLSClientConfig: &tls.Config{Root ...
- MySQL的GROUP_CONCAT函数
先根据如下语句生成测试表并填充数据 CREATE TABLE z ( a INT, b INT); INSERT INTO Z SELECT 1,200; INSERT INTO Z SELECT 1 ...