不到一个小时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的更多相关文章

  1. HihoCoder1665方块游戏([Offer收割]编程练习赛40)(线段树)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方 ...

  2. HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)

    给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好. 例如对于 0100100 1000101 0101010 1010101 0101010 在右下角有一个4x ...

  3. HihoCoder1663双阶乘的末尾数字([Offer收割]编程练习赛40)(暴力||数学)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定正整数x和k,判断是否存在正整数1 ≤ y ≤ x使得x与y同奇偶且(x!!)/(y!!)的个位数字为k. 其中x!! ...

  4. Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行.每一列 ...

  5. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  6. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  7. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  8. [Offer收割]编程练习赛48

    题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...

  9. [Offer收割]编程练习赛13 B.最大子矩阵[枚举]

    #1502 : 最大子矩阵 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该 ...

随机推荐

  1. C# 前一个数是后一个数的父级

    private void button2_Click(object sender, EventArgs e) { var str = "1 2 3 4 5 6 7 8 9 10 11 12 ...

  2. EF test

    LibraryEntities db = new LibraryEntities(); private void btnSelect_Click(object sender, EventArgs e) ...

  3. XML的解析方式

    //解析和输出XML public void showXml() { string filepath = Application.dataPath + @"/my.xml"; if ...

  4. 在Unity中客户端与服务器端的2种通信方式(Socker)

    15:17 2019/5/10 //第一种 using UnityEngine; using System.Collections; //引入库 using System.Net; using Sys ...

  5. eas之编辑界面中分录默认携带的标题栏

    this.kdtEntrys_detailPanel.setTitle("物件内容");   KDContainer kdtEntrys_Container = (KDContai ...

  6. [luogu 1092] 虫食算 (暴力搜索剪枝)

    传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...

  7. AtCoder ABC 076D - AtCoder Express

    传送门:http://abc076.contest.atcoder.jp/tasks/abc076_d 本题是一个运动学问题——匀变速运动. 一个质点,从静止开始运动.按照速度限制,可将运动划分成n个 ...

  8. 多层下firebird自增长字段的处理

    使用unidac可以解决自增长字段处理的问题. 对于多层就是一个比较烦人的事情,解决办法:cliendataset中自增长字段的处理:id:自增长字段.在client中的处理方法:clientdata ...

  9. csu1395模拟

    #include<stdio.h> #include<string.h> #define N  10 char s[N][N][N]={{"***",&qu ...

  10. 0918如何利用jmeter通过程序插入测试数据

    第一步 添加线程组 第二步 添加HTTP信息头管理器 第三步 添加HTTP请求 第四步 添加HTTP请求[POST] 第五步 添加查看结果树