Codeforces Raif Round 1 (Div. 1 + Div. 2) D

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

D - Bouncing Boomerangs

分析

一个stack用于存只有一个的物品的行的物品位置,一个queue用于存有两个物品的行的左边物品位置

(其实这两个容器用stack还是queue无所谓,只是这样易于区分)

先安排最后一列:0不放,1在[n][n]的位置放

然后从n-1列往前逐列安排,策略:

a[i]=0,continue。

a[i]=1,往上升一行(即 去到一个全新的行),放置,同时把这个物品的信息压入stack。

a[i]=2,因为每行最多放两个物品,所以去找之前只有一个物品的行的物品,这个物品的行是tt,那么第i列放置位置为[tt][i]。把用过的物品从stack中弹出,同时把刚放置的物品位置压入queue。

a[i]=3,先找之前有两个物品的行的左边物品,让回旋镖第三次碰撞到这个物品上。因为这个物品的行已经有两个物品,不能再添加物品,所以可以看作“废弃的行”,那既然如此,为什么不让这个行发挥一下“余热”,去作为另一个回旋镖的第三次碰撞单位呢?所以,全新的一行为row,左边物品列是yy,那么放置的两个物品位置为[row][i]、[row][yy]。把用过的左边物品从queue中弹出,把[row][i]压入queue。

还是a[i]=3,如果找不到有两个物品的行,还可以找有一个物品的行的物品,让回旋镖第三次碰撞到这个物品上。作用和使用方法跟上一段的左边物品相同,但因为这一行不是“废弃的行”,所以不是首选。这个物品作为第三次碰撞的物品后,它的左边就不能再有物品,所以把物品信息从stack中弹出,把[row][i]压入queue。

在整个过程中,一旦发现stack或queue空了,导致没法安排当前元素,直接输出-1return。

用vector存答案,最后统一输出。

代码

#include<bits/stdc++.h>
#define ll long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
int n,a[100005];
vector<pair<int, int> > v;
stack<pair<int, int> > s; //存只有一个的点行的点 
queue<pair<int, int> > q; //存有两个点行的左边那个点 
void solve(){
    cin>>n;
    rep(i,1,n){
        cin>>a[i];
    }
    if(a[n]>1){
        cout<<"-1\n"; return;
    }
    int temrow=0,flag;
    if(a[n]==1){
        v.push_back({n,n});
        temrow=n;
        s.push({n,n});
        flag=1;
    }
    for(int i=n-1;i>=1;i--){
        if(a[i]==0) continue;
        if(a[i]==2){
            flag=0;
            if(s.empty()){
                cout<<"-1\n";
                return;
            }
            pair<int,int> tt=s.top();
            s.pop();
            v.push_back({tt.first, i});
            q.push({tt.first, i});
        }
        if(a[i]==1){
            flag=1;
            if(temrow==0){
                v.push_back({n,i});
                temrow=n; 
                s.push({n,i});
                continue;
            }
            if(temrow>1){
                temrow--;  
                s.push({temrow,i});
                v.push_back({temrow,i}); 
                continue;
            }
            cout<<"-1\n"; return;
        }
        if(a[i]==3){
            if(temrow>1){
                temrow--;
                v.push_back({temrow,i});
                if(!q.empty()){
                    pair<int,int> tt=q.back();
                    q.pop();
                    v.push_back({temrow, tt.second});
                    q.push({temrow,i});
                } 
                else{
                    if(s.empty()){
                        cout<<"-1\n";return;
                    }
                    pair<int,int> tt=s.top();
                    s.pop();
                    v.push_back({temrow, tt.second});
                    q.push({temrow,i});
                }
                continue;
            }
            cout<<"-1\n"; return;
        }
    }
    
    if(v.empty()) {cout<<"0\n"; return;}
    
    cout<<v.size()<<"\n";
    rep(i,0,v.size()-1){
        cout<<v[i].first<<" "<<v[i].second<<"\n";
    }
} 
int main(){
    ios_base::sync_with_stdio(false); 
    cin.tie(0); 
    cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
java链接opc报异常org.jinterop.dcom.common.JIException: Access is denied解决 记录一下这次从发现问题到解决问题的过程 项目是通过java链接OPC,读取数据,并且发送数据的 程序一直运行正常,最近客户反馈说无法读取数据,通过查看,发现访问异常了。花了2天的时间才解决了这个异常。 org.jinterop.dcom.common.JIException: Access is denied, please check whether the [domain-username-password] are correct. Also, if not already done please c 阅读详情

相关推荐

人脸情绪识别(使用深度学习和OpenCV)

基于opencv与深度学习的人脸情绪识别系统

mx0390304的博客 8251

【题解】Codeforces Round 1085 (Div. 1 + Div. 2)

Problem A:处理二进制字符串转换问题,通过分界点将字符串分割为独立区间,计算每个区间可能的最大和最小"1"的数量。时间复杂度为O(n)。 Problem B:模拟电子玩具危险值管理过程,通过排序和归零操作处理特殊数据范围(m*l≤2e5),从后往前考虑归零操作的影响。 Problem C:解决二维水位问题,通过两次吸水操作优化水量收集,使用单调栈预处理左右边界,并分别计算左右方向的水量总和。 Problem D:利用必胜点距离关系进行递推,确

2401_88501775的博客 444

IDEA 2023.2最新破解安装教程(含详细配置步骤及常见问题解决)

本文详细介绍了IDEA 2023.2的安装流程及高效开发环境搭建指南,涵盖基础配置、项目结构优化、核心功能使用、插件推荐、性能优化等全方位内容,帮助开发者快速掌握这一强大的Java开发工具。

x2y3z4a5b的博客 1750

Codeforces Raif Round 1 (Div. 1 + Div. 2) D E

D. Bouncing Boomerangs 题目大意:构造障碍物摆放,使得符合 从 i 列的底部向上投掷反弹次数要求。 题目思路: 首先,我们可以想到,如果第i列只有一次反弹,那么就意味着以后不会再碰到反弹物。 其次就是尽可能重用之前放的物体。 如果第 i 列有两次反弹,那么这个随后肯定需要一个只有一次反弹的点。我们记作 2 -> 1 如果第 i 列有三次反弹,那么这个第三次反弹。那么这个可以重用随后的一次 / 二次 / 三次反弹的点。 记作3-...

qq_41645482的博客 289

OpenCV机械臂手眼标定

这篇文章总结了手眼标定的原理,利用OpenCV自带的函数套用参数即可完成眼在手上和眼在手外两种标定。

Q先森的博客 6588

STM32HAL库学习笔记九——LCD显示

本文不会对驱动编写做特别详细的描述,以记录CubeMX的部署流程为主。

weixin_44762233的博客 6918

Codeforces Raif Round 1 (Div. 1 + Div. 2) 1428D Bouncing Boomerangs 贪心+构造

https://codeforces.com/problemset/problem/1428/D 分四种情况讨论: 1.a[j]==0,此时不能放障碍 2.a[j]==1,第j列可以放1~2个障碍,其中i较大的障碍右面不能放其他障碍(i为行号)。 3.a[j]==2,第j列可以放1~2个障碍,回旋镖先击中(i,j)的障碍,之后击中(i,k)的障碍,因此i行不能放其他障碍,且第k列下方不能放任何障碍。(k>j)。 4.a[j]==3,第j列可以放1~2个障碍,此时回旋镖在第一次击中障碍后,

tongjingqi_的博客 487

uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、摄像头控制,实时推流、回放、放大缩小画面、视频画面截图、截屏抓拍及播放器解决延迟教程

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,vue,海康威视,海康监控,摄像头监控,实时监控画面,海康插件,无法连接,报错,uniApp对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,对接海康监控设备

🏆 前端领域优质创作者 1万+

codeforces1428D Bouncing Boomerangs (Codeforces Raif Round 1 (Div. 1 + Div. 2))

题目链接: https://codeforces.com/problemset/problem/1428/D 题目大意: 给定一个n*n的网格,现在从每一列的最下方向上仍一个回旋镖 网格上有一些障碍物,当回旋镖击打到障碍物时,其会按照 (上到左,左到下,下到右)顺时针方向更改飞行方向,直到出网格 现在我们设在第i列扔出去的飞镖击打到障碍物的个数为ai 给定 a1, a2, ... an 问是否能使用0 <= t <= 2*n 个障碍物使其得以满足 输入与输出: 输入: 第一行一个.

qq_31805591的博客 212

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

自动驾驶模拟器:基于 Python + Carla,在家也能训练一个“L4 级”自动驾驶 AI 模型

市面上有很多模拟器(AirSim, LGSVL),但 Carla 是目前学术界和工业界最主流的选择。画质强:基于 UE4,光影、天气(下雨、夕阳)极其逼真,这对训练视觉模型至关重要。API 爽:完全使用 Python 控制,对 AI 工程师极度友好。资产多:内置各种车辆、行人、交通信号灯、城市地图。编写 Python 代码,让车自己在城市里跑,通过摄像头看到路况,自己决定怎么打方向盘。通过 Carla,我们把价值数百万的自动驾驶测试场搬进了电脑。

BUG猿的博客 267

Codeforces Raif Round 1 (Div. 1 + Div. 2) D. Bouncing Boomerangs(思维+构造)

传送门 题目大意 给出一个n∗mn*mn∗m的方格,保证每行每列最多只能有两个障碍,现在每列都会射出一个飞镖,飞镖碰到障碍物会向右旋转九十度继续直行,保证最多碰到三次障碍物。现在给出每列出发的飞镖最后弹射的次数,如果答案存在,需要我们还原一个合法含有若干障碍物的表格。 解题思路 这道题我感觉有以下两个难想的地方: 首先是不能从左向右构造而需要从右向左构造,原因是弹射两次的飞镖,肯定需要右边弹射一次飞镖的列作为最后一次弹射,弹射三次的飞镖既可以利用右边弹射一次的列而且可以利用右边弹射两次及以上的列。而且

Happig的博客 272

【Clickhouse】Clickhouse写入报错keeper server rejected the connection during the handshake

我的clickhouse集群时不时的报这个错误All connection tries failed while connecting to ZooKeeper. nodes: xxx 到时写入数据失败 用的ck自带的keeper。你需要仔细检查ZooKeeper集群的配置和状态,确保所有节点都正常运行,并且能够正确地选举领导者。检查ZooKeeper的ACL以及ClickHouse连接所使用的凭据,确保它们被正确配置和授权。版本不兼容:有时,不同版本的软件之间可能存在不兼容性,导致连接问题。

九师兄 370

Codeforces Raif Round 1 (Div. 1 + Div. 2)

传送门 Codeforces Raif Round 1 (Div. 1 + Div. 2) A 考虑单一方向,则需要时间 ∣x2−x1∣+∣y2−y1∣|x_2-x_1|+|y_2-y_1|∣x2​−x1​∣+∣y2​−y1​∣;若两个方向距离都大于 000,则需要额外 222 单位的时间改变方向。 #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> using

neweryyy的博客 251

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【解题总结】Codeforces Raif Round 1

A Box is Pull 最优策略必然是至多只拐一个弯。 B Belted Rooms 先缩点,然后看能不能连成一个环。 C ABBB 类似括号匹配,A 是左括号,B 是右括号。 D Bouncing Boomerangs 一个简单的构造方法是按列从右向左考虑,利用右边的列满足左边的条件。 我们考虑遇到某个 aia_iai​ 时怎么满足条件。 如果 ai=0a_i = 0ai​=0,那么就不在这列放障碍物。 如果 ai=1a_i= 1ai​=1,就在 (i,i)(i, i)(i,i) 处先放一个障碍物。

zqy1018的blog 1605

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits(贪心)

传送门 题目大意 给出nnn个萝卜,现在需要分成长度为正整数的若干个萝卜,定义每个长度为xxx的胡萝卜贡献为x2x^2x2,问最小的贡献是多少。 解题思路 手玩一下样例,还是不难得出对于一个胡萝卜若需要切成lll份,那么肯定是均摊才能是贡献最小。但是对于多个胡萝卜,并不容易得出每次切哪一根才能得到最优解。实际上无需考虑这一点,因为萝卜不能拼接,也就是如果最后的答案是将某些胡萝卜切成若干份,每份仍然是均摊的。这就启发我们,对于长度为xix_ixi​假设已经切了pip_ipi​刀的胡萝卜,那么考虑所有胡萝卜被

Happig的博客 321

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

acm-(线段树、栈、思维)Codeforces Raif Round 1 (Div. 1 + Div. 2) F. Fruit Sequences

传送门 本题有至少三种方法可以做。 方法一:考虑对每个连续的111段求解贡献,首先是整体的贡献,此时我们可以分别向左和向右延伸,得到延伸最远的lll和rrr,注意到如果多个连续111段长度相同的,我们把贡献计算在最左边的段上,故延伸到最远的lll必须满足长度小于当前段,最远的rrr则满足小于等于当前段,对于000段需要特殊判断。 然后是当部分贡献,此时我们固定左端点或者右端点然后让另一个端点向对应的方向延伸,类似地讨论来得出当前段的部分的贡献,固定的端点不位于边界上。 具体代码实现的时候需要用线段树来查找.

qq_30361651的博客 174

acm-(多重背包)Codeforces Raif Round 1 (Div. 1 + Div. 2) G.Lucky Numbers

传送门 本题主要就是让选kkk个数字,加起来等于nnn(询问),使得kkk个数字各位上的权值和最大。 先看看权值的定义,对于第xxx位而言,若数字为3t(t=0,1,2,3)3t(t=0,1,2,3)3t(t=0,1,2,3),则权值为tFxtF_xtFx​,且一旦分配,对应总和就会加上3t⋅10x3t\cdot 10^x3t⋅10x,如果将kkk个数字的第xxx位视为一个类型,并且不考虑那些无法被333整除的背包容量,那么选择分配权值的效果等价于从3k3k3k个大小为3⋅10x3\cdot 10^x3⋅.

qq_30361651的博客 219

acm-(贪心)Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits

传送门 本题的贪心十分巧妙,我们考虑将所有数字的划分状态表示为(x,cur,v)(x,cur,v)(x,cur,v)的形式,xxx代表数字值,curcurcur为当前xxx被分成的份数,vvv代表从cur−1cur-1cur−1份到curcurcur份的时候对ansansans的减少量。 ansansans初始化为所有数字的平方和,那么我们每次都选择减去最大的vvv即可,总共可以减k−nk-nk−n次,顺便更新(x,cur,v)(x,cur,v)(x,cur,v)到(x,cur+1,v′)(x,cur+1.

qq_30361651的博客 283

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 167

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 269

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 552

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 17

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 642

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 153
上一篇: 匹配已有字符串
下一篇: 使用django服务的前置操作
mucstdio
博客等级 码龄7年 7粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值