首页 > 其他分享 >IndiaHacks 2nd Elimination 2017A. Binary Blocks

IndiaHacks 2nd Elimination 2017A. Binary Blocks

时间:2024-03-26 18:45:54浏览次数:30  
标签:Binary Blocks IndiaHacks int ll pri 2nd include

https://codeforces.com/contest/838/problem/A
二维前缀和的应用,注意可能比较绕
然后注意边界可以拿min的替换就行

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>

using namespace std;
typedef long long ll;

ll mp[2510][2510];
bool is_prime(ll x)
{
	for (ll a = 2; a * a <= x; a++)
		if (x % a == 0)
			return false;
	return true;
}
int main()
{
	ll n, m; cin >> n >> m; cin.get();
	string s;
	for (int i = 0; i < n; i++)
	{
		getline(cin, s);
		for (int j = 0; j < m; j++)
		{
			mp[i + 1][j + 1] = s[j] - '0';
		}
	}
	//前缀和
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			mp[i][j] += mp[i - 1][j] + mp[i][j - 1] - mp[i - 1][j - 1];
		}
	}
	queue<ll>qu_pri;
	qu_pri.push(2);
	for (ll i = 3; i <= min(n, m); i += 2)
		if (is_prime(i))
			qu_pri.push(i);
	ll ans = LLONG_MAX;
	while (!qu_pri.empty())
	{
		ll now = qu_pri.front(); qu_pri.pop();
		ll ans_tmp = 0;
		for (ll i = 1; (i - 1) * now < n; i++)
		{
			for (ll j = 1; (j - 1) * now < m; j++)
			{
				ll tg = mp[min(i * now, n)][min(j * now, m)]
					+ mp[(i - 1) * now][(j - 1) * now]
					- mp[min(i * now, n)][(j - 1) * now]
					- mp[(i - 1) * now][min(j * now, m)];
				ans_tmp = ans_tmp +min(tg,now*now-tg);
			}
		}
		ans = min(ans, ans_tmp);
	}
	cout << ans;
	return 0;

}

标签:Binary,Blocks,IndiaHacks,int,ll,pri,2nd,include
From: https://www.cnblogs.com/zzzsacmblog/p/18097329

相关文章

  • C. Anji's Binary Tree
    网站:https://codeforces.com/problemset/problem/1900/C这里比较容易搞混的就是各个节点的关系,不要用2*n来表示左孩子!!以及记得添加快读快写ios::sync_with_stdio(false);cin.tie(nullptr);加在intmain()里即可这里还有一个priority_queue的小技巧:结构体内部定义运算符,好像和......
  • CF1945E Binary Search 题解
    CF1945EBinarySearch题目大意给定一个\(1\simn\)的排列\(A\)(不保证有序),对这个排列用如下代码片段二分,查找\(m\)的位置。intl=1,r=n+1;while(r-l>1){intmid=(l+r)/2;if(A[mid]<=m) l=mid;else r=mid;}cout<<l;显然不一定能查找到正确位置,所以在......
  • LeetCode 1161. Maximum Level Sum of a Binary Tree
    原题链接在这里:https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/description/题目:Giventhe root ofabinarytree,thelevelofitsrootis 1,thelevelofitschildrenis 2,andsoon.Returnthe smallest level x suchthatthesumofa......
  • 【算法】二分查找——BinarySearch
    一、概述二分查找又称折半查找,是一种能够大幅减少时间复杂度的查找方法,但是二分查找要求线性表必须词用顺序储存结构,而且表中元素按关键字有序排列。在后续讨论中,我们假设有序表递增有序。二分查找中使用的术语:目标Target——你要查找的值索引Index——你要查找的当前......
  • Binary Heap
    BinaryHeap一个基于concept的二叉堆板子实现。template<typenameTy,typenameCompare,typenameContainer=std::vector<Ty>>requiresrequires(Comparecomp,Tya,Tyb){std::is_same_v<bool,decltype(comp(a,b))>;}&&r......
  • B. Quasi Binary
    It'sasimpleproblemoncodeforces.wetraversethethroughthestringn,ifweencoutera'1',weaddanewstringtoansandsetstoptofalse.Otherwise,westoptheloop.Oncewefind1,wethenappendeither'1'or'0�......
  • Binary Tree Maximum Path Sum
    SourceGivenabinarytree,findthemaximumpathsum.Thepathmaystartandendatanynodeinthetree.ExampleGiventhebelowbinarytree,1/\23Return6.题解1-递归中仅返回子树路径长度题目很短,要求返回最大路径和。咋看一下......
  • CF1066E Binary Numbers AND Sum 题解
    分析因为\(a\)是一直没有改变的,移动的只有\(b\),所以从\(a\)的每一位的贡献入手。对于\(a\)中的从低到高第\(i\)位,其对应的十进制值是\(a_{n-i+1}\times2^{i-1}\)。注意到\(b\)是每次右移一位的,所以在\(b\)中能与\(a_{n-i+1}\)匹配的都是在下标区间\([1,m-i+1]......
  • windows下用Code::blocks gcc/mingw系使用wxWidgets库
    很多Windows下用Code::blocks+wxWidgets的朋友最开始的时候都会因为这个错误无法编译而放弃wx。下面给出详细解决方法:1.到WX的目录下,找到include\wx\platform.h文件,用Codeblocks打开它2.Codeblocks下用菜单栏的Search->Find功能,找到#include"wx/setup.h"一行3.将"wx/set......
  • codeblocks两种创建文件的方式(含调试教程)
    codeblock用法以及调试教程codeblock两种创建文件的方式:1.直接建一个空白文件这种方式创建新文件的缺点是不能调试,debug是灰色的不能点第二种创建文件的方式:新建一个项目project创建一个空项目同样新建一个空白文件,只不过这种方法会提示你是否要把这个文件放在项目里先......