[Offer收割]编程练习赛40
不到一个小时AK,虽然是VP的,舒服,第一次。都简单的一比,没什么可说的。
查找三阶幻方
#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
void makedata() {
freopen("input.txt", "w", stdout);
cout << << endl; for(int i = ; i < ; i++) cout << << ' '; fclose(stdout);
} int a[][];
bool check(int x, int y) {
int sum = a[x][y] + a[x][y + ] + a[x][y + ]; for(int i = ; i < ; i++) {
if(a[x + i][y] + a[x + i][y + ] + a[x + i][y + ] != sum) return false; if(a[x][y + i] + a[x + ][y + i] + a[x + ][y + i] != sum) return false; if(a[x][y] + a[x + ][y + ] + a[x + ][y + ] != sum) return false; if(a[x + ][y] + a[x + ][y + ] + a[x][y + ] != sum) return false;
} return true;
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, m;
cin >> n >> m; for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
cin >> a[i][j];
}
} int ans = ; for(int i = ; i + < n; i++) {
for(int j = ; j + < m; j++) {
if(check(i, j)) ans++;
}
} cout << ans << endl;
return ;
}
双阶乘的末尾数字
#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
void makedata() {
freopen("input.txt", "w", stdout);
cout << << endl; for(int i = ; i < ; i++) cout << << ' '; fclose(stdout);
}
bool f[];
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
lint x;
int t, k;
cin >> t; while(t--) {
cin >> x >> k;
int st = , cnt = ; while(st != k) {
cnt++; if(st == || cnt > ) {
x = -;
break;
} st = st * (x % ) % ;
x -= ; if(x <= ) {
x = -;
break;
}
} cout << x << endl;
} return ;
}
01间隔方阵
#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
void makedata() {
freopen("input.txt", "w", stdout);
cout << << endl; for(int i = ; i < ; i++) cout << << ' '; fclose(stdout);
} int f[][], fl[][], fu[][];
char a[][];
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, m;
cin >> n >> m; for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
cin >> a[i][j];
}
} memset(f, , sizeof(f));
memset(fl, , sizeof(fl));
memset(fu, , sizeof(fu)); for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(j == ) {
f[i][j] = ;
fl[i][j] = ;
} else {
if(a[i][j] == a[i][j - ]) fl[i][j] = ;
else fl[i][j] = fl[i][j - ] + ;
} if(i == ) {
f[i][j] = ;
fu[i][j] = ;
} else {
if(a[i][j] == a[i - ][j]) fu[i][j] = ;
else fu[i][j] = fu[i - ][j] + ;
}
}
} int ans = ; for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(a[i][j] != a[i - ][j - ]) {
f[i][j] = ;
} else {
int tmp = 0x3FFFFFFF;
tmp = min(tmp, fl[i][j]);
tmp = min(tmp, fu[i][j]);
tmp = min(tmp, f[i - ][j - ] + );
f[i][j] = tmp; if(ans < tmp) ans = tmp;
}
}
} cout << ans << endl;
return ;
}
方块游戏
#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
void makedata() {
freopen("input.txt", "w", stdout);
cout << << endl; for(int i = ; i < ; i++) cout << << ' '; fclose(stdout);
} class SegmentTree {
private:
int *data, *lazy;
void pushup(int rt) {
data[rt] = max(data[rt << ], data[rt << | ]);
}
void pushdown(int rt, int m) {
if(lazy[rt] == ) return; lazy[rt << ] = lazy[rt];
lazy[rt << | ] = lazy[rt];
data[rt << ] = lazy[rt];
data[rt << | ] = lazy[rt];
lazy[rt] = ;
}
public:
SegmentTree(int n) : data((int *)malloc((n << ) * sizeof(int))), lazy((int *)malloc((n << ) * sizeof(int))) {}
void Build(int * base, int l, int r, int rt) {
lazy[rt] = ; if(l == r) data[rt] = base[l];
else {
int mid = (l + r) >> ;
Build(base, l, mid, rt << );
Build(base, mid + , r, rt << | );
pushup(rt);
}
}
void Modify(int l, int r, int rt, int L, int R, int v) {
if(L <= l && R >= r) {
lazy[rt] = v;
data[rt] = v;
return;
} pushdown(rt, r - l + );
int mid = (l + r) >> ; if(L <= mid)
Modify(l, mid, rt << , L, R, v); if(R > mid)
Modify(mid + , r, rt << | , L, R, v); pushup(rt);
}
int QueryPoint(int l, int r, int rt, int val) {
if(l == r) return data[rt]; pushdown(rt, r - l + );
int mid = (l + r) >> ;
int ret = ; if(val <= mid) ret = QueryPoint(l, mid, rt << , val);
else ret = QueryPoint(mid + , r, rt << | , val); pushup(rt);
return ret;
}
int QuerySegment(int l, int r, int rt, int L, int R) {
pushdown(rt, r - l + ); if(L == l && R == r) return data[rt]; int mid = (l + r) >> ; if(R <= mid) return QuerySegment(l, mid, rt << , L, R); if(mid < L) return QuerySegment(mid + , r, rt << | , L, R); return max(QuerySegment(l, mid, rt << , L, mid), QuerySegment(mid + , r, rt << | , mid + , R));
}
};
SegmentTree st();
int h[]; int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
memset(h, , sizeof(h));
st.Build(h, , , );
int n, l, r;
cin >> n; for(int i = ; i < n; i++) {
cin >> l >> r;
int tmp = st.QuerySegment(, , , l, r);
cout << (tmp + ) << endl;
st.Modify(, , , l, r, tmp + );
} return ;
}
[Offer收割]编程练习赛40的更多相关文章
- HihoCoder1665方块游戏([Offer收割]编程练习赛40)(线段树)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方 ...
- HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)
给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好. 例如对于 0100100 1000101 0101010 1010101 0101010 在右下角有一个4x ...
- HihoCoder1663双阶乘的末尾数字([Offer收割]编程练习赛40)(暴力||数学)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定正整数x和k,判断是否存在正整数1 ≤ y ≤ x使得x与y同奇偶且(x!!)/(y!!)的个位数字为k. 其中x!! ...
- Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行.每一列 ...
- hihocoder [Offer收割]编程练习赛4
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
- hihocoder [Offer收割]编程练习赛61
[Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...
- [Offer收割]编程练习赛46
[Offer收割]编程练习赛46赛后题解 A.AEIOU 分析
- [Offer收割]编程练习赛48
题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...
- [Offer收割]编程练习赛13 B.最大子矩阵[枚举]
#1502 : 最大子矩阵 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该 ...
随机推荐
- (转)基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
http://www.cnblogs.com/wuhuacong/p/4761637.html 在上篇<基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JST ...
- 安装mysql遇到的几个坑
1. 官网下载压缩版mysql,配置太复杂 弃之 2. 官网下载最新版本mysql安装包 5.8.X,安装成功,一路next,安装成功后发现没有看到自定义安装路径,查看mysql安装完成的路径果然在C ...
- 启动模拟器的qq
#coding = utf-8from appium import webdriver '''1.手机类型2.版本3.手机的唯一标识 deviceName4.app 包名appPackage5.app ...
- Lua操作系统库、流、文件库
Lua操作系统库.流.文件库 1.Lua中所有的操作系统库函数 (1)os.clock() --功能:返回执行该程序cpu花费的时钟秒数 (2)os.time(...) --按参数的内容返回一个时间值 ...
- ES6中的Symbol
---恢复内容开始--- Symbol 1.1 概述 保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突.这就是 ES6 引入Symbol的原因 在es6之前,JavaScript ...
- 洛谷P1057 传球游戏【递归+搜索】
上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:nn个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把 ...
- python中字节与字符串的转换
#bytes object byte = b"byte example" # str object str = "str example" ...
- Django-xadmin+rule对象级权限的实现
原文:https://blog.csdn.net/zcyuefan/article/details/77743380 1. 需求vs现状 1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本 ...
- python 用PIL Matplotlib处理图像的基本操作
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...
- HDU 1704 Rank
Rank Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 17046 ...