CF1244F Chips】的更多相关文章

题目链接 problem 有一个长度为\(n\)个点连成的环.每个点为黑色或白色.当一个点和与他相邻的两个点颜色不同时.该点的颜色就会改变. 问改变\(K\)次后每个点的颜色. solution 发现两个性质: 1.发现如果一个点在第一次时就不需要改变.那么他以后都不需要改变. 2.如果有个点在某次不需要改变,那么下一次他相邻的两个点也一定不需要改变. 所有思路就很明显了.从不需要改变的点开始\(bfs\).得到每个点最早不需要改变的时间.然后与\(K\)取\(min\)后计算出最终颜色就行了.…
CF1257F Make Them Similar $solution:$ 折半搜索后考虑如何维护两个数组的和,可以将 $A$ 中每个数减 $A_1$ ,$B$ 中每个数被减 $B_1$ ,$map$ 维护一下即可. #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<map> #include<vector> using…
Description A prominent microprocessor company has enlisted your help to lay out some interchangeable components(widgets) on some of their computer chips. Each chip’s design is an N × N square of slots. Oneslot can hold a single component, and you ar…
D. Chips time limit per test:1 second memory limit per test:256 megabytes input:standard input output:standard output Gerald plays the following game. He has a checkered field of size n × n cells, where m various cells are banned. Before the game, he…
B. Chips Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/333/problem/B Description Gerald plays the following game. He has a checkered field of size n × n cells, where m various cells are banned. Before the game, he has to…
Chips Challenge Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 96    Accepted Submission(s): 33 Problem Description A prominent microprocessor company has enlisted your help to lay out some in…
Gerald plays the following game. He has a checkered field of size n × n cells, where m various cells are banned. Before the game, he has to put a few chips on some border (but not corner) board cells. Then for n - 1 minutes, Gerald every minute moves…
Chips CodeForces - 333B 题意:有一个n*n的棋盘,其中有m个格子被禁止.在游戏开始前要将一些芯片(?)放到四条边上(但不能是角上).游戏开始后,每次操作将每一个芯片移动到它四周四格中某一格,并且要用n-1次操作将所有的芯片移到与其初始位置相对的一条边上.在移动过程中,不能有任何芯片经过被禁止的格子,不能有任何多个芯片重叠,不能在一次操作中使两个芯片交换位置(在将两个芯片放在相对的两条边上相对的位置时,就会发生).问如果要求完成游戏,最多可以在棋盘上放几个芯片. 方法: 事…
Cookies Without Chocolate Chips In the HTTP sense, a cookie is a name with an associated value. A server sends the name and value to the client, and expects it to get sent back on every subsequent request to the server that matches the particular con…
依据 material guidelines, chips 可以用来做 filter https://material.io/design/components/chips.html#filter-chips 但是 ng material 的却很差. 没有 animation 没有勾勾也就算了. click 事件也没有, 要使用 keyboard 的 space 来 select chips.. 这啥操作啊 ... 还有 formControl 在没有 selected 的情况下返回的值是 un…
这是小川的第次更新,第篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第270题(顺位题号是1217).There are some chips, and the i-th chip is at position chips[i]. You can perform any of the two following types of moves any number of times (possibly zero) on any chip: Move the i-th chi…
题目如下: There are some chips, and the i-th chip is at position chips[i]. You can perform any of the two following types of moves any number of times (possibly zero) on any chip: Move the i-th chip by 2 units to the left or to the right with a cost of 0…
We have n chips, where the position of the ith chip is position[i]. We need to move all the chips to the same position. In one step, we can change the position of the ith chip from position[i] to: position[i] + 2 or position[i] - 2 with cost = 0. pos…
注意:横向纵向交叉时,只要两条边不是正中的边(当n&1!=1),就可以余下两个chip. 代码里数组a[][]第二维下标 0表示横向边,1表示纵向边. #include<stdio.h> #include<string.h> ][]; int main() { int n,m,i,j,x,y; scanf("%d%d",&n,&m); ;i<n;i++) { a[i][]=a[i][]=; } ;i<m;i++) { scan…
题目大意: 传送门 $n*n$的棋盘,有一些位置可以放棋子,有一些已经放了棋子,有一些什么都没有,也不能放,要求放置以后满足:第i行和第i列的棋子数相同,同时每行的棋子数占总数比例小于$\frac{A}{B}$.求最多可以放多少,无解则输出$impossible$. 题解:   Orz一发大佬——传送门. 先把整张图放满,题目就转化为最少删多少点就合法. 我们用$numx$来记录每行可以放的和已经放棋子总数,$numy$记录每列.从$S$向第i行连流量为$numx_i$的0费用边,从第j列向$T…
国际惯例题面:如果我们枚举放几个零件的话,第二个限制很容易解决,但是第一个怎么办?(好的,这么建图不可做)考虑我们枚举每行每列最多放几个零件t,然后计算零件总数sum.这样如果可行的话,则有t*B<=sum*A.考虑第一个限制怎么办.我们可以钦定所有可行的位置都放上零件,然后再把多的零件拆下来.我们令sxi为第i行能放的最多零件数,syi为第i列能放的最多零件数.由源点向每一行连流量sxi费用0的边,每一列向汇点连流量syi费用0的边.然后让每一行i向每一列i连流量t费用0的边,表示第i行和第j…
题面 数据范围看起来很像网络流诶(滚那 因为限制多而且强,数据范围也不大,我们考虑不直接求答案,而是转化为判定问题 可以发现第二个限制相对好满足,我们直接枚举这个限制就可以.具体来说是枚举所有行中的最大值$x$,然后下面那个式子移项就可以得到$a*tot>=b*x$,其中tot表示芯片的总数 然后发现第一个限制还是很强,不好满足.怎么办呢?正难则反,转化成补集的问题:先把所有能安的芯片都安了,然后扣出来合法的答案 那么现在我们要扣掉的芯片尽量少,同时还要先保证扣出来的结果合法,那考虑用最小费用最…
https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装好之后满足如下两条要求: 1.第 i 行和第 i 列的零件数目必须一样多(1≤i≤N). 2.第 i 行的零件数目不能超过总的零件数目的 A/B(1≤i≤N,0≤A≤B≤1000,B≠0). 求最多可以另外放多少个零件(就是除掉必须放的).如果无解输出impossible. zkw费用流就是像跑最大…
题意 给出一个n*n的网格,有些格子必须染成黑色,有些格子必须染成白色,其他格子可以染成黑色或者白色.要求最后第i行的黑格子数目等于第i列的黑格子数目,且某一行/列的格子数目不能超过格子总数的A/B. (把某个格子染黑等价于"在这个格子放一个芯片") n<=40 分析 假设一共用了X个芯片(包括'C'和'.'两种情况下放的),那么每行每列最多放的芯片个数Y=X*A/B可以算出来.发现不同的Y值最多有40个,我们可以考虑枚举每个Y值,Y值确定之后X有一个下界,我们考虑此时最多放下的…
两个条件都不太好处理 每行放置的个数实际很小,枚举最多放x 但还是不好放 考虑所有位置先都放上,然后删除最少使得合法 为了凑所有的位置都考虑到,把它当最大流 但是删除最少,所以最小费用 行列相关,左行点,右列点 S到行,流“能填位置”费0 列到T,流“能填位置”费0 i行到i列,流x,即枚举的最大个数 空位(i,j),i行连j列,流1费0 最小费用最大流 意义:流过i行到i列的流量,象征留下一个芯片 流过费用为1的,象征把这个芯片删除. 最大流保证所有位置都考虑到了 最小费用使得最少. 可以发现…
参考:https://blog.csdn.net/Quack_quack/article/details/50554032 神建图系列 首先把问题转为全填上,最少扣下来几个能符合条件 先考虑第2个条件,枚举f为一个每行/列最大剩几个,然后记录一下每行列的零件个数(包括填上的) 然后建图 s向所有行连流量为这行的零件数的边,所有列向t连流量为这列的零件数的边,i行向i列连流量为f的边,表示这行列最多流f,每个能扣下来的(i,j)连i行j列,因为这个要尽量小而且需要计数,所以附加上1的价值(别的边都…
传送门 显然可以注意到连续的两个相同颜色的位置颜色是不会改变的,并且它还会把自己的颜色每秒往外扩展一个位置 同时对于 $BWBWBW...$ 这样的序列,它每个位置的颜色每一秒变化一次 然后可以发现,对于一个位置 $x$,在 $x$ 左边和右边 连续两个相同颜色 扩展到 $x$ 之前, $x$ 的颜色一定是每秒变化一次 考虑每个位置 $x$ 第 $k$ 秒时的颜色,如果 $x$ 初始往 左或者往右的连续两个相同颜色 扩展到 $x$ 的时间都大于 $k$ ,那么我们可以通过 $k$ 的奇偶性和 $…
/* 可以发现一个性质:连续两个相同色块永远不会变色 继而可以发现,这个色段每次迭代都向左向右拓展长度1,直到撞上其他扩张的色段 所以预处理出所有连续色段,然后对于所有不在色段里的点,我们可以预测其最终的颜色: 其本身每次迭代改变一次颜色,如果k>= 离其最近的那个色段到其的距离Len,那么其就会被那个色段覆盖 那么就要预处理出这些点两侧最近的色段距离和颜色 由于是环形,所以扩张两倍即可来求边界 */ #include<bits/stdc++.h> #include<vector&…
原题链接 简要题意: 每个点有起始目标和终点(二维).要求每次将所有点向一个方向移动一次(四方向,若出界则不变),使得每个点均 经过 其终点. 本题只要抓住本质,瞬间得解. 你会发现,如果要求每个点最终在终点上,肯定大多数数据是无解. 只要求经过即可. 而且,不要求最少步数. 所以,只要让每个点遍历棋盘即可. 但是,每个点的起始点不同啊. 所以,先把每个点移到左上角,然后遍历即可. 妙不妙!!! 你谷上才17个人A,怎么想的 #pragma GCC optimize(2) #include<bi…
题目大意:一个n*m的棋盘上有k个棋子,k个棋子相互关联,可以一起向上向下向左向右,当碰到边界时,如果继续移动会发生越界,那么该棋子会保持不动,其余棋子继续移动.问能否在2*n*m的移动次数内,使各个棋子到达其约定的位置. 题解:将所有的棋子汇集于一点,然后蛇形遍历棋盘复杂度为n*m+n+m-3.(这种方法想到了,复杂度计算错了...然后直接就pass掉了QWQ) code: #include<bits/stdc++.h> using namespace std; ; int arr[N][N…
\(为什么说这是个陷阱呢??\) \(因为不管你脑洞多大,数学多好,都发现会束手无策\) \(每移动一次不知道往哪个方向,不知道先访问哪个点,同时要记录所有点的坐标,记录每个点是否访问过目标点......\) \(但是题目里说了移动次数只要不超过2nm就可以\) $2nm?把所有点走一遍不过nm,剩下nm把所有点移到最左上角,然后一排一排S型走......$ #include <bits/stdc++.h> using namespace std; int n,m,k; struct p{ i…
原题传送门 题目分析 给定一张n*n的芯片. '.'表示该格子可以放一个零件. 'C'表示该格子已经放了一个零件(不能拆下). '/'表示该格子不能放零件. 要求在芯片的现有基础上,放置尽可能多的零件,使得: 第i行与第i列零件数相等. 每行每列零件数<=总零件数*A/B. 条件1 考虑如何使得第i行第j列零件数相等. 首先可以想到经典的行列二分图模型,即\((i,j)\)如果可放置零件,则连边:如果必须放置零件,则记录其为必选.最后跑最大流即可. 然而这种模型的局限性就在于无法控制行列相等.…
题目链接 题意 网格上放点,有些强制放,有些不能放,有些可以放可以不放.要求: 第 \(i\) 行的点数 = 第 \(i\) 列的点数 每一行每一列的点数不超过总点数的 \(k\) 倍(\(k\) 已知,且不大于1) \(n <= 40\) 题解 最小割好题. 那么多行行列列肯定要将行列看作点,然后将各自看作边.首先第二个要求可以直接枚举,主要是第一个要求. 根据常见套路,我们可以先把所有点都放上,然后再拿走一些点.这样,放上的点有两种选择:留着或被拿走.因此我们连两种边:如果 \((i, j)…
传送门 题解: 给你n个数的坐标,你需要把他们移动到一个位置,有两种移动方式 1.向左或者右移动2 2.向左或者右移动1,但是耗费1 求最小耗费 题解: 很简单就可以想到,看一下偶数坐标多还是奇数坐标多 减一加一改变奇偶性,但是减二加二不改变 代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std…
一.题目 有一个 \(n\times n\) 的矩阵,每个元素可能是 ..C./ 的其中一种,分别表示可以放置芯片.已经放置了芯片.不能放置芯片,你可以分别决定是否可以放置芯片的位置放置芯片. 最后需要满足 \(\forall i\),第 \(i\) 行的芯片个数等于第 \(i\) 列的芯片个数,每一行的芯片个数都不超过总芯片个数的 \(\frac{A}{B}\),问在此情况下能额为放置的芯片个数最大值,如果怎么样都不合法输出 impossible \(n\leq 40\) 二.解法 如果直接做…