C. Almost Equal

本文探讨了C.AlmostEqual题目,对于n个数字排列成圈,要求任意相邻三数之和的最大最小值差不超过1的问题。文章通过代码实现了解决方案,特别指出当n为偶数时无解,而n为奇数时提供了具体的构造方法。

C. Almost Equal

n个数字全排成一个圈,满足任意相邻n个之和之间最大最小值之差不超过1

n为偶数时

不存在

n为奇数,构造

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define sc(x) scanf("%I64d",&x);
#define read(A) for(int i=0;i<n;i++) scanf("%I64d",&A[i]);
ll A[200005];
ll N;
ll B[200005];
bool check()
{
    ll a,b,c,t;
    c=A[2*N]+A[1]+A[2];
 
    t=A[2*N-1]+A[2*N]+A[1];
    a=min(c,t);
    b=max(c,t);
 
    for(int i=1; i<=2*N-2; i++)
    {
        t=A[i]+A[i+1]+A[i+2];
        a=min(a,t);
        b=max(b,t);
    }
   // cout<<a<<b<<endl;
    return (b-a<=1);
 
}
int main()
{
    sc(N);
    ll k=1;
    if(N%2==0){
        puts("NO");
        return 0;
    }
 
    for(int i=1; i<=N; i++)
    {
        if(i&1){
        A[i]=k;
        k++;
        A[i+N]=k;
        k++;
        }else {
        A[i+N]=k;
        k++;
        A[i]=k;
        k++;
        }
    }
 
 
   // if(check())
    {
        puts("YES");
 
        for(int i=1; i<=2*N; i++)
        {
            cout<<A[i]<<' ';
        }
    }
    // cout<<ans<<'\n';
}

 

转载于:https://www.cnblogs.com/liulex/p/11375521.html

import os import math from tqdm import tqdm import rasterio from rasterio.windows import Window def georeferenced_crop(rgb_path, ndwi_path, label_path, output_dir, crop_size=256): with rasterio.open(rgb_path) as rgb_src, \ rasterio.open(ndwi_path) as ndwi_src, \ rasterio.open(label_path) as label_src: # 增强的空间参考校验(允许浮点数误差) def transform_almost_equal(a, b): return all(abs(a[i] - b[i]) < 1e-9 for i in range(6)) assert transform_almost_equal(rgb_src.transform, ndwi_src.transform) \ and transform_almost_equal(rgb_src.transform, label_src.transform), "空间参考不一致" assert rgb_src.shape == ndwi_src.shape == label_src.shape, "影像尺寸不一致" # 预计算分块总数 height, width = rgb_src.shape x_blocks = math.ceil(width / crop_size) y_blocks = math.ceil(height / crop_size) total_blocks = x_blocks * y_blocks # 创建带进度条的迭代器 pbar = tqdm(total=total_blocks, desc="裁剪进度", unit="block") # 结构优化:封装保存逻辑 def save_crop(data, profile, output_path, band_num=None): profile = profile.copy() profile.update({ 'height': crop_size, 'width': crop_size, 'transform': rasterio.windows.transform(window, profile['transform']), 'count': band_num or profile['count'] }) with rasterio.open(output_path, 'w', **profile) as dst: dst.write(data[0] if band_num == 1 else data) # 主循环 index = 0 for y in range(0, height, crop_size): for x in range(0, width, crop_size): window = Window(x, y, crop_size, crop_size) try: rgb_crop = rgb_src.read(window=window) ndwi_crop = ndwi_src.read(1, window=window) # 明确读取第一个波段 label_crop = label_src.read(1, window=window) if rgb_crop.shape[1:] != (crop_size, crop_size): continue base_name = f"{os.path.basename(rgb_path).split('.')[0]}_{index}" # 并行写入(需根据实际存储类型调整) save_crop(rgb_crop, rgb_src.profile, f"{output_dir}/rgb/{base_name}.tif") save_crop(ndwi_crop, ndwi_src.profile, f"{output_dir}/ndwi/{base_name}.tif", band_num=1) save_crop(label_crop, label_src.profile, f"{output_dir}/labels/{base_name}.tif", band_num=1) index += 1 pbar.update(1) except Exception as e: print(f"Error processing block ({x},{y}): {str(e)}") pbar.close()遇到rgb_src.shape与ndwi_src.shape 空间参考不一致怎么办?
03-22
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[5], line 5 3 import numpy as np 4 import matplotlib.pyplot as plt ----> 5 from scipy.spatial.distance import cdist 6 print(f"numpy: {np.__version__}, matplotlib: {plt.matplotlib.__version__}") 7 except ImportError as e: File D:\miniconda\lib\site-packages\scipy\spatial\__init__.py:110 1 """ 2 ============================================================= 3 Spatial algorithms and data structures (:mod:`scipy.spatial`) (...) 107 QhullError 108 """ # noqa: E501 --> 110 from ._kdtree import * 111 from ._ckdtree import * # type: ignore[import-not-found] 112 from ._qhull import * File D:\miniconda\lib\site-packages\scipy\spatial\_kdtree.py:4 1 # Copyright Anne M. Archibald 2008 2 # Released under the scipy license 3 import numpy as np ----> 4 from ._ckdtree import cKDTree, cKDTreeNode # type: ignore[import-not-found] 6 __all__ = ['minkowski_distance_p', 'minkowski_distance', 7 'distance_matrix', 8 'Rectangle', 'KDTree'] 11 def minkowski_distance_p(x, y, p=2): File _ckdtree.pyx:11, in init scipy.spatial._ckdtree() File D:\miniconda\lib\site-packages\scipy\sparse\__init__.py:300 294 # Original code by Travis Oliphant. 295 # Modified and extended by Ed Schofield, Robert Cimrman, 296 # Nathan Bell, and Jake Vanderplas. 298 import warnings as _warnings --> 300 from ._base import * 301 from ._csr import * 302 from ._csc import * File D:\miniconda\lib\site-packages\scipy\sparse\_base.py:5 1 """Base class for sparse matrices""" 3 import numpy as np ----> 5 from ._sputils import (asmatrix, check_reshape_kwargs, check_shape, 6 get_sum_dtype, isdense, isscalarlike, 7 matrix, validateaxis, getdtype) 9 from ._matrix import spmatrix 11 __all__ = ['isspmatrix', 'issparse', 'sparray', 12 'SparseWarning', 'SparseEfficiencyWarning'] File D:\miniconda\lib\site-packages\scipy\sparse\_sputils.py:10 8 from math import prod 9 import scipy.sparse as sp ---> 10 from scipy._lib._util import np_long, np_ulong 13 __all__ = ['upcast', 'getdtype', 'getdata', 'isscalarlike', 'isintlike', 14 'isshape', 'issequence', 'isdense', 'ismatrix', 'get_sum_dtype', 15 'broadcast_shapes'] 17 supported_dtypes = [np.bool_, np.byte, np.ubyte, np.short, np.ushort, np.intc, 18 np.uintc, np_long, np_ulong, np.longlong, np.ulonglong, 19 np.float32, np.float64, np.longdouble, 20 np.complex64, np.complex128, np.clongdouble] File D:\miniconda\lib\site-packages\scipy\_lib\_util.py:13 10 from typing import TypeAlias, TypeVar 12 import numpy as np ---> 13 from scipy._lib._array_api import array_namespace, is_numpy, xp_size 14 from scipy._lib._docscrape import FunctionDoc, Parameter 17 AxisError: type[Exception] File D:\miniconda\lib\site-packages\scipy\_lib\_array_api.py:18 15 import numpy.typing as npt 17 from scipy._lib import array_api_compat ---> 18 from scipy._lib.array_api_compat import ( 19 is_array_api_obj, 20 size as xp_size, 21 numpy as np_compat, 22 device as xp_device, 23 is_numpy_namespace as is_numpy, 24 is_cupy_namespace as is_cupy, 25 is_torch_namespace as is_torch, 26 is_jax_namespace as is_jax, 27 is_array_api_strict_namespace as is_array_api_strict 28 ) 30 __all__ = [ 31 '_asarray', 'array_namespace', 'assert_almost_equal', 'assert_array_almost_equal', 32 'get_xp_devices', (...) 38 'xp_take_along_axis', 'xp_unsupported_param_msg', 'xp_vector_norm', 39 ] 42 # To enable array API and strict array-like input validation File D:\miniconda\lib\site-packages\scipy\_lib\array_api_compat\numpy\__init__.py:1 ----> 1 from numpy import * # noqa: F403 3 # from numpy import * doesn't overwrite these builtin names 4 from numpy import abs, max, min, round # noqa: F401 File D:\miniconda\lib\site-packages\numpy\testing\__init__.py:11 8 from unittest import TestCase 10 from . import _private ---> 11 from ._private.utils import * 12 from ._private.utils import (_assert_valid_refcount, _gen_alignment_data) 13 from ._private import extbuild File D:\miniconda\lib\site-packages\numpy\testing\_private\utils.py:469 465 pprint.pprint(desired, msg) 466 raise AssertionError(msg.getvalue()) --> 469 @np._no_nep50_warning() 470 def assert_almost_equal(actual, desired, decimal=7, err_msg='', verbose=True): 471 """ 472 Raises an AssertionError if two items are not equal up to desired 473 precision. (...) 537 538 """ 539 __tracebackhide__ = True # Hide traceback for py.test File D:\miniconda\lib\site-packages\numpy\__init__.py:414, in __getattr__(attr) 410 raise AttributeError(__former_attrs__[attr], name=None) 412 if attr in __expired_attributes__: 413 raise AttributeError( --> 414 f"`np.{attr}` was removed in the NumPy 2.0 release. " 415 f"{__expired_attributes__[attr]}", 416 name=None 417 ) 419 if attr == "chararray": 420 warnings.warn( 421 "`np.chararray` is deprecated and will be removed from " 422 "the main namespace in the future. Use an array with a string " 423 "or bytes dtype instead.", DeprecationWarning, stacklevel=2) AttributeError: module 'numpy' has no attribute '_no_nep50_warning'
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值