AGC019-E Shuffle and Swap】的更多相关文章

[AGC019E]Shuffle and Swap 题目大意: 给出两个长度为\(n(n\le10000)\)的\(01\)串\(A_{1\sim n}\)和\(B_{1\sim n}\).两个串均有\(k\)个'1'.令\(a_{1\sim k}\)和\(b_{1\sim k}\)分别表示\(A\)和\(B\)中所有'1'出现的位置.将\(a\)和\(b\)等概率随机排列,按\(1\sim k\)的顺序交换\(A_{a_i}\)和\(A_{b_i}\).令\(P\)表示操作完成后\(A\)与\…
给定两个长度为\(n\le 10^5\)的\(01\)串 \(A, B\), 满足 \(1\) 的数量相等 求通过下列方式将\(A\)变成\(B\)的概率 (mod意义下) 构造序列\(a,b\). 使得 \(a_i = A中第i个1的位置\), b同理 对\(a,b\)进行shuffle 然后for i from 1 to n: swap(A[a[i]], A[b[i]]) Analysis 瞎推了一波 显然, \(A,B\)中同为 \(0\) 的项没有用的, 且 答案只与 \(A,B\)中同…
题目链接 https://atcoder.jp/contests/agc019/tasks/agc019_e 题解 tourist的神仙E题啊做不来做不来--这题我好像想歪了啊= =-- 首先我们可以考虑,什么样的操作序列才是合法的? 有用的位置只有两种,一种是两个序列在这个位置上都是1, 称作11型,另一种是一个0一个1, 称作01型.设两种位置分别有\(A\)个和\(2B\)个. 考虑一个操作序列,交换两个11型相当于没交换,每个11型只会被交换两次,每个01型只会被交换一次.这也就是说,如…
\(\mathcal{Description}\)   Link.   给定 \(01\) 序列 \(\{A_n\}\) 和 \(\{B_n\}\),其中 \(1\) 的个数均为 \(k\).记 \(A\) 中 \(1\) 的位置为 \(\{a_k\}\),\(B\) 中的为 \(\{b_k\}\).现任意排列 \(\{a_k\}\) 和 \(\{b_k\}\),然后依次交换 \(A_{a_i}\) 和 \(A_{b_i}\),\(i=1,2,\dots,k\).求使操作完成后 \(A=B\)…
A - Ice Tea Store 算一下每种零售最少的钱就行,然后优先买2,零头买1 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define MAXN 100…
Collections 工具类 * Collection与Collections区别 Collection 接口,(大部分集合类的实现接口) Collections 工具类(针对列表) * Collections工具类常用方法 1.父类的引用指向子类的对象(复习) 2.sort(List list)排序 3.sort(List list, Comparator comparator);排序 4.binarySearch,搜索指定元素索引,前提列表必须有序 5.reverse反转 6.重新洗牌sh…
Collections算法类: Collections是一个算法类,提供了一系列静态方法,实现对集合的排序.替换.交换.搜索.拷贝等操作: 用法:Collections.方法名(要操作的集合): 就像数组的操作类Arrays类一样,Collections类是一个操作集合的类,注意:只能操作Collection接口下的集合(Map集合不能使用该类) 具体方法有: 1.addAll方法:可以对所有Collection集合使用 2.sort(),reverse(),replaceAll(),binar…
1.Collections.sort方法(以及自定义的比较字符串长度排序) package Collections; import java.util.*; class StrLenComparator implements Comparator<String>{ public int compare(String s1, String s2) { if(s1.length()>s2.length()){ return 1; } if(s1.length()<s2.length()…
复习 多线程 程序.进程.线程的概念.区别 并行.并发 创建线程的四种方式:继承Thread.实现Runnable接口.实现Callable接口.线程池 线程的生命周期 线程的同步方式,三种:同步方法,同步代码块,lock 线程的通信,notify,notifyAll,wait 常用类 String 定义的两种方式,内存存放的位置 常用方法,intern()方法的作用 与基本数据类型,包装类的转换,与char[]的转换,与byte[]数组的转换,与StringBuilder.StringBuff…
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] nums = {1,2,3}; Solution solution = new Solution(nums); // Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally lik…