首页 > 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], bYACS 两数之积 题解
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; cinCF662B 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],[],[]]输出:[nullAtCoder 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\) 然后输出即可。 iABC246 简要题解
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<int1013 数素数 (20 分)
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。 输入样例: 5 27FPGA奇数分频的实现
在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的子串的字符次数 intRange and Partition (贪心+双指针)
D. Range and Partition [Link](D. Range and Partition) 题意 给你一个长为 n n n的数组,让你分成 k kP4119 [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[1CF 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