首页 > TAG信息列表 > Cnt1

LeetCode 1151 Minimum Swaps to Group All 1's Together 滑动窗口

Given a binary array data, return the minimum number of swaps required to group all 1’s present in the array together in any place in the array. Solution 注意这里的交换 \(swap\) 并不是相邻两个元素的,而是任意位置的都可以。所以我们需要找到一个区间,使得所有1变换

1044 [HAOI2012]ROAD dijkstra递推求最短路径数+生成反向最短路拓扑图 计算以每个点为顶点,每条边上的最短路条数

 链接:https://ac.nowcoder.com/acm/contest/26077/1044来源:牛客网 题目描述 C国有n座城市,城市之间通过m条单向道路连接。一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小。两条最短路不同,当且仅当它们包含的道路序列不同

QOJ3225 Snake

等价于对于折线每个端点,都能找到一条直线使得所有之前和之后的点分立两侧,在每个点处极角排序 + 双指针即可。 #include <stdio.h> #include <algorithm> typedef long long ll; const int MAXN = 1010; int n, tot; struct point{ ll x, y; int id; }; point a[MAXN], b

YACS 两数之积 题解

link   分别考虑原数组 $a[]$ 中所有的正数,负数以及 0 的数量:设 $a[]$ 中正数的数量为 $cnt1$ 个,把 $a[]$ 中所有正数保存在 $bz[]$ 数组中,负数数量为 $cnt2$ 个,保存在 $bf[]$ 数组中,0 的数量为 $cnt0$ 个。----------------------------------设 $x1$, $x0$, $x2$ 分别为两两相

Educational Codeforces Round 132 (Rated for Div. 2) A-C

Educational Codeforces Round 132 (Rated for Div. 2) https://codeforces.com/contest/1709 这场ab很模拟(但我写的很慢),c居然比d难(策略性失误,悲) A. Three Doors 读题读了半天 题意 有三扇门,编号1-3,只有对应的钥匙才能开这扇门。 初始的时候手里有一把钥匙 现在有两扇门后面各藏

(未完)Codeforces Round #798 (Div. 2) AB...

Codeforces Round #798 (Div. 2) https://codeforces.com/contest/1689 菜鸟来补题了。。。还妹写完 AB过的有些出乎意料,毕竟我是乱构造的 A. Lex String A要干啥来着,,不记得了,明天看看 #include <bits/stdc++.h> using namespace std; void solve () { int n, m, k; cin

CF662B Graph Coloring题解--zhengjun

题目传送门 题目大意 给你一张无向图,图中每条边是蓝色或者红色的,让你每次选一个点,就会把与这个点相连的边的颜色反转(红变蓝,蓝变红),求最少步数的方案使得最后所有边的颜色都一样。 思路 好像没有 \(2-sat\) 的题解,那我就来一发。 首先分类讨论:要么都变成红色,要么都变成蓝色。 如果

vue3 watch监听多个数据

第一个参数返回ref数组即可 <script setup lang="ts"> const cnt1 = $ref(0) const cnt2 = $ref(0) watch(() => [cnt1, cnt2], () => console.log(cnt1, cnt2)) </script> <template> <div> <button btn @click="cnt1++&

按键消抖实验

当按键被按下在到被释放,期间产生的输入信号会发生抖动,如果不进行消抖处理,直接使用可能就会误触发。 按键消抖实验设计思路,当按键被按下,隔20ms取数据,也就是说20ms的前后各取一次数据进行边沿检测: (1)、需要一个计数器cnt,因为按键随时都可能会被按下,所以计数器需一直启动在计数,需一直

剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null

AtCoder Beginner Contest 247 赛时记录

目录A - Move RightB - Unique NicknamesC - 1 2 1 3 1 2 1D - CylinderE - Max MinF - CardsG - Dream Team 切了四题就摸去给学妹讲题了(,EFG 都是赛后花 40min 做/口胡 的,实际上也受到了 nyy 提示的影响 A - Move Right 去掉字符串最后一位,在前面加上一个 \(0\) 然后输出即可。 i

ABC246 简要题解

A 由题意模拟,在已知的 \(3\) 个点中仅出现 \(1\) 次的横坐标即为缺失的那个,纵坐标同理。 int a,b,c,d,e,f,x,y; map<int,int> cnt1,cnt2; signed main(){ cin>>a>>b>>c>>d>>e>>f; ++cnt1[a],++cnt1[c],++cnt1[e]; ++cnt2[b],++cnt2[d],++cnt2[f]; if(cnt1[

2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛

比赛链接 2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 G.天气预报 给定一个01串,找到有多少个至少包含a个0,b个1的子串 解题思路 双指针 可以发现,对于一个位置来说,其往左满足至少有 \(a\) 个 \(0\) 且至少有 \(b\) 个 \(1\) 的位置 \(p\) 是确定的,且

021-2022-INES A. Armor and Weapons Solution(玄学剪枝,限界)

LINK #include<bits/stdc++.h> #include <unordered_set> #define int long long using namespace std; typedef pair<int, int> PII; typedef pair<PII, int> PIII; #define x first #define y second const int N = 2e5+10; unordered_map<int

1013 数素数 (20 分)

令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出从 PM​ 到 PN​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。 输入样例: 5 27

FPGA奇数分频的实现

在FPGA开发中,我们往往需要对时钟进行分频,得到满足我们需求的时钟频率。尽管这些分频的工作完全可以由PLL等ip核完成,但通过verilog语言同样也可以实现。在本博客中,我们仅讨论整数倍分频。 偶数倍分频 偶数倍分频的实现较为简单,一般是设置一个计数器,从0开始计数,达到N-1后又重新

AtCoder Beginner Contest 237 G - Range Sort Query

原题链接 G - Range Sort Query 思路: \(x\)是固定的,所以考虑将排序维护成0 1串,为\(p_i < x\)为\(0\),那么\(p_i \geq x\)为\(1\),那么这样就可以用线段树维护了,我们可以维护每个区间1的个数,设为\(cnt\),对于升序来说,设我们需要更新的这个区间\([l, r]\),那么现在查询后,更新新的区间就

leetcode刷题——字符串的排列(Java)

1.题目 2.条件与思路 统计s1各个字符的数量保存至cnt1[26],利用两个指针,两个指针中间相差s1的长度,统计指针之间的字符个数保存至cnt2,分别对于比较下标相同的值是否相同,如果全部相同表示可以返回true,否则同时移动两个指针一步,循环如此。 3.解题过程 class Solution { pub

选择困难症[NC13594]折半搜索+二分

选择困难症[NC13594]折半搜索+二分 题目描述 小L有严重的选择困难症。 早上起床后,需要花很长时间决定今天穿什么出门。 假设一共有k类物品需要搭配选择,每类物品的个数为Ai,每个物品有一个喜欢值Vj,代表小L对这件物品的喜欢程度。 小L想知道,有多少种方案,使得选出来的总喜欢值>M 需

字符串的排列

太久没写博客,随便来一个class Solution { public boolean checkInclusion(String s1, String s2) { int n=s1.length(); int m=s2.length(); if(n>m) return false; //cnt1为s1的字符次数 //cnt2为s1的子串的字符次数 int

Range and Partition (贪心+双指针)

D. Range and Partition [Link](D. Range and Partition) 题意 给你一个长为 n n n的数组,让你分成 k k

P4119 [Ynoi2018] 未来日记

P4119 [Ynoi2018] 未来日记 有一个长为 \(n\) 的序列 \(a\),有 \(m\) 次操作: 把区间 \([l,r]\) 内所有的 \(x\) 变成 \(y\)。 查询区间 \([l,r]\) 内第 \(k\) 小值。 \(1 \leq n,m,a_i \leq 10^5\),时限 \(1.00\text{s}\),空限 \(512\text{MB}\)。 sol 最初分块。 难度评分:\(8.5\)

牛客寒假算法基础集训营

第一场 F 中位数切分 题目 样例 思路以及证明 因为整个数列中的数只有两种情况,即大于等于m和小于m两种情况,所以可以直接将原来的数列抽象成01串的形式,我们大于等于m的数为1,小于m的数为0。 又因为我们现在要让1处于中间位置,那么我们很容易得出:假设存在某个区间满足题设,若想要这个

P2078朋友

一、题目描述             二、题目分析   这个题目我觉得题意有点问题的,后面把并查集的模板改成等于就行了,也就是计算两个公司认识1号人的人数取个最小值,因为你不可能凭空造人,对吧? 三、代码实现    1 #include "bits/stdc++.h" 2 using namespace std; 3 int a[1

CF 1266D - Decreasing Debts

题目链接: https://codeforces.com/problemset/problem/1266/D 题目大意: 有 \(n\) 个人,有 \(m\) 条债务关系,定义 \(d(a, b)\) 表示 \(a\) 欠 \(b\) 块钱,如果 \(c\) = 0,那么就相当于没有债务关系,现在想简化每个人之间的债务关系。 有以下两种简化方案, 1、当 d(a, b) > 0,d(c, d) > 0