[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希望你能求出其中最大(元素数目最多)的子矩阵,并且该 ...
随机推荐
- https ssl 总结
主要工作: 1)算法协商: 2)密钥交换: 3)身份认证: 4)数据通信: 1.2.3主要使用握手协议: 4使用记录协议. SSL协议可分为两层:记录协议.握手协议 SSL Record Protoc ...
- android全屏下的输入框未跟随软键盘弹起问题
最近开发中遇到,全屏模式下输入框在底部不会跟随软键盘弹起.于是网上搜索了解决的方案.大致找到了两种方案. 第一种 定义好此类 public class SoftKeyBoardListener { p ...
- MySQL基础命令小结
数据库授权登录[root@localhost ~]# mysql -uroot -p123456mysql> grant select,lock tables on auth.* to 'adm ...
- jsp 判断当前时间是否符合设置的时间条件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 【第三课】kaggle案例分析三
Evernote Export 比赛题目介绍 TalkingData是中国最大的第三方移动数据平台,移动设备用户日常的选择和行为用户画像.目前,TalkingData正在寻求每天在中国活跃的5亿移动设 ...
- vue 登录验证码
vue 登录验证码 最近在开发pc端项目,配合elementui使用 createCode() { var code = ""; var codeLength = 4; //验证码 ...
- es6-Symbol用法
1.symbol概念 这种数据类型提供独一无二值 比如,在JS中,我可以通过数据类型生成变量a=number05,也可以生成b=nubmer05,这两个变量可以说是相等的. 但是用symbol生成的值 ...
- centos 配置svn http serve
你看到的这个文章来自于http://www.cnblogs.com/ayanmw 基本的安装包有: subversion /httpd/ svn的httpd的mod_dav_svn mod_authz ...
- [SDFZOJ]1069:树上统计
神题...std丑的不行. 我们可以发现i->i+1的边被覆盖过i×(n-i)次. 因为以1->i为左端点,以i+1->n的为右端点,i->i+1都将被覆盖这么多次. 然后从1 ...
- IntelliJ IDEA 和 webstorm更换主题
1. 搜索http://color-themes.com/?view=index 2. 查找自己喜欢的主题,下载 3. 放在安装位置(个人习惯,放在哪都行,能找到就行) 4. 然后打开importSe ...