随笔分类 - 思维
摘要:题解:求第K大,要求第K大最小,一般都是二分答案 然后不是同一行同一列,显然又是匹配问题 考虑<=x的值,要大于等于n-k+1 然后不断找最小答案, 每次判断答案把图给clear掉,然后重新建图就行了 建模的问题的话,考虑是行和列作为点,然后点作为边,这样考虑就行了,把小于x的元素建边就行了 , 因
阅读全文
摘要:我是不知道我当时咋想的。。。 不知道自己在想啥, 题解: 直接DFS找连通块的数量 N 然后答案是N-1 #include <bits/stdc++.h> using namespace std; int n,x[101],y[101],vis[101]; void dfs(int i) { vis
阅读全文
摘要:题意 给你一个无向图 不会有重边和自环 然后要求你把所有点分成两个集合,每个集合的点必须是个完全图, 如果满足不了上述条件 输出-1; 题解:考虑建原图的补图; 即,若两点之间没有边,则连边; 若这个图不是二分图,那么无解,感性理解一下就行了 注意你虽然是二分图,但是不一定是全联通,可能是很多个连通
阅读全文
摘要:链接https://atcoder.jp/contests/arc097/tasks/arc097_b 题意 给你一个排列 然后给你M个pair,这两个pair位置的值可以互换, 然后问你最多能换成多少个位置的pi=i; 题解: 手玩了一下,发现你连起来的pair,可以互换成全排列, 然后这就是个并
阅读全文
摘要:题意:一个数组 每次选K个连续的数,然后删掉其中最小的数 然后你可以进行Q次操作 要求删去的最大数和最小数的差值最小 求这个差值 题解: 枚举最小数x,依次把每个数作为最小的数, 然后统计答案,发现小于x的数会把整个数组分成各个区间,然后取这些区间里的最小数, 然后用这些最小数里最大的,更新答案就可
阅读全文
摘要:链接https://atcoder.jp/contests/arc099/tasks/arc099_a 题意 一个长度为N 的排列 每次选K个连续的数,然后所有的数都会变成这K个里的最小值,求最小操作次数 题解:水题 显然最后全变成1 从左到右覆盖过去就行了,注意下边界问题就行了 代码 #inclu
阅读全文
摘要:链接:https://atcoder.jp/contests/arc097/tasks/arc097_a 题意: 给一个字符串 求出第K小的字串 后缀自动机,但这是第一题 发现长度比较小,然后我把每个前缀都push进trie树里,mle。。。 然后看了看题解 发现我们只要把长度小于=5的子串拉出来排
阅读全文
摘要:链接:https://atcoder.jp/contests/arc100/tasks/arc100_b 题意 :给一个数组 分成四块 要求最大的加合与最小的加合相差最小 枚举中间的一刀 然后左边的一刀尽量满足差值最小 右边的也是,因为这样才能满足全局最小 , 然后取枚举中间一刀的所有答案 然后发现
阅读全文
摘要:水题 ; 最优解最多只会回头一次 所以依次判断就行了 链接 :https://atcoder.jp/contests/arc101/tasks/arc101_a #include<bits/stdc++.h> #define pb push_back #define fi first #define
阅读全文
摘要:这题纯脑残了 分奇偶处理一下就行了 链接 :https://atcoder.jp/contests/arc102/tasks/arc102_a #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i
阅读全文
摘要:链接 https://atcoder.jp/contests/agc047/tasks/agc047_a 题意:给N个数 问两两相乘是整数的pair的个数 每个数最多有九位小数 题解 把每个数乘1e9 然后判断乘积%1e18是不是0就行了 然后要快速处理这个 我们发现1e18 有18个2和18个5
阅读全文
摘要:题意 : 给N个点, 从里面随机取四个点,如果能构成矩形,求最小的矩形面积 题解: 一旦对角两个点确定 四个点都确定 复杂度N方 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) f
阅读全文
摘要:链接 :http://codeforces.com/contest/1391/problem/C 题解 :一开始 脑残了去推组合数,然后忘了这个东西 然后去网上找了线性推组合数的板子wa了 我吐了。 我纯NT 其实一共N个数的排列,考虑N的位置,然后考虑两边的数,两边的数只要有一边不按升序或者降序排
阅读全文
摘要:链接 :http://codeforces.com/contest/1388/problem/C 题意: 有若干个人,树根为1,从根开始往下走,心情可能会变坏,坏心情不可能变好, 每个城市有个happyness值,问你这个图成不成立, 题解 :dfs树一下,因为dfs树是从下向上回溯,所以反过来,考
阅读全文
摘要:题意 一个树,你每次可以删一条边,然后获得大小为i的连通块 i由字符串决定,第i位为1代表可以 为0代表不可以 题解 构造多个菊花图然后连在一起 利用菊花图的性质就可以了 菊花图: 一个根节点,其他全是叶子 #include<bits/stdc++.h> #define rep(i,a,n) for
阅读全文
摘要:题意:每次可以将较小的字母反转成较大的字母 贪心一下,尽量把操作挪到最大的字母那边 ,然后统计答案 #include <bits/stdc++.h> using namespace std; int x[20][20]; int main() { int t; cin>>t; while(t--)
阅读全文
摘要:题意: 给一个数组 两个人轮流从里面取数,取了的数不能再取 每个人有一个value 取了数之后要和value异或一下 最终value大的那个人 赢 题解: 每次取最高位的那个看即可,若最高位数量是偶数,无论怎么取,两个人这一位都一样 所以取数量是奇数次的最高位 然后分情况手玩一下 #include
阅读全文

浙公网安备 33010602011771号