题意: 给定大小为 \(n\) 的环,环上有和为 0 的 \(n\) 个整数(可能为负) 每次操作任选一位置 \(i\) 和整数 \(x\),令 \(a_i\) 加 x,相邻的一个书减 x。问至少几次操作可使所有数为 0 思路: 把环切成尽可能多的段,每段和为 0。答案就是 n-段数 正解是取出现次数最多的前缀和值就行了。 记录
注意点 bool cmp_diy(const pair3& a,const pair3& b){//const xxx & x 作用是引用某个变量,只读它的内容,但不能修改这个引用的变量 代码 #include <iostream> #include <cstdio> #include <string> #include <map> #include <set> #include <utility> #in
法1: a = input() b = input() sum = 0 for i in set(a): if i in set(b): sum += 1 print(sum) 法2:使用dict 正确代码; a=input() b=input() mp1={} mp2={} for i in a: mp1.setdefault(i,1) for j in b: mp2.setdefault(j,1) ans=0 for i in mp1.keys()
1、基础 CRUD BaseMapper 接口中大量使用到 Wrapper(涉及条件查询) 先不考虑条件查询,对基础 CRUD 进行测试。 ① 增 自动生成 ID,无需设置(主键 ID 生成策略,默认为序列号)。 User user = new User(); user.setName("ump1"); user.setPassword("123456"); userDao.insert(user);
1. 标准CRUD使用 2. 新增 @Test public void testSave() { User user = new User(); user.setName("黑马程序员"); user.setPassword("itheima"); user.setAge(12); user.setTel("4006184000"); int count = userDao.insert(use
大家好,我是一航! 事情是这样!某天中午午休完,正在开始下午的搬砖任务,突然群里面热闹起来,由于忙,也就没有去看,过了一会儿,突然有伙伴在群里@我,就去爬楼看了一下大家的聊天记录,结果是发现了一个很有意思的Bug;看似很基础Map的取值问题,对于基础不是特别扎实的朋友来说,但如果真的遇到,可能会
今天2021.10.6。 中午组队赛,遇到一个分层图最短路的模板题,但是不会做。。没学过,所以现学了一下:https://blog.csdn.net/Mr_dimple/article/details/120629967; 把昨天最后的那道题补了: 1475.C Ball in Berland(思维,容斥) 题意: 一共n对关系 (xi,yi),从中挑出两对,确保两队中人不冲
题目链接 题目思路 第一眼以为是二分,但是发现倒了 那么就肯定是和二进制有关 其实差不多能发现性质 就是必须为偶数,并且这个区间的第k位二进制全部为1,且位数大于k位的二进制数,异或起来都为0就行 但是感觉写起来没那么简单,看了一下一个大佬的写法,一下就解决了 我的复杂度多了一个lo
题解 \(by\;zj\varphi\) 考虑对于母串的每个字符,它在匹配串中有多少前缀,多少后缀。 设 \(f_i\) 表示 \(i\) 位置匹配上的前缀,\(g_i\) 为后缀,那么答案为 \(\sum_{i=1}^{len}f_i×g_i\) 那么如何求出 \(f_i\) 和 \(g_i\),考虑二分,求出一个最长的前缀,后缀。 在初始化时,将所有后缀记录
传送门 考试的时候只来得及糊了个\(n^4\)的暴力,结果考完发现\(n^2\)比\(n^4\)还好写 题意就是就是要求把一堆字符串的前后缀拼起来之后在原串中出现了多少次 然而前后缀可以有很多,再枚举组合就炸没了 先考虑\(n^2\) 写法: 可以先预处理出所有前后缀,分别扔到map里 枚举原串中的每一
传送门 题意: 有n层具有颜色的涂层,其每层的颜色由Ri, Ci,Bi三个指标对应6个长度的16进制数表示的。现问你 [li, ri]区间涂层的颜色重叠在一起是什么颜色。重叠规则如下: * 若第i层的 wi==1,那么它只会显示自己的颜色(Ri,Gi,Bi)。 * 若第i层的 wi==2,那么它的颜色就是自
题意: 我们规定一个伪叶子节点,假如这个节点只有一个节点与它相连,我们就称之为伪叶子节点。 输入描述: 首先输入n(1<=n<=1e6),分别表示输的节点个数和边数。节点的编号在1-n之间,并且节点编号各不相同。 然后我们输入n-1行,每一行输入x,y,表示x,y之间存在一条边(x<=x,y<=n)。 输出描述: 首
https://blog.csdn.net/a845717607/article/details/86530433 map使用: 声明:map<键,值> 变量名; 存储: scanf("%d %lf",&e,&coe); mp1[e]=coe; 遍历:for(map<int,double>::iterator it=mp1.begin();it!=mp1.end();++it) 逆序遍历:for(map<int,doub
https://codeforces.com/problemset/problem/1000/A 题意: 有n个人,给出每个人的衣服的尺码,现在,将这n件衣服的尺码换成另外的n种尺码,如果有尺码一样的衣服,则不需要换,问,最少需要更换几件衣服。 思路: map记录一下每种尺码的衣服出现的次数,然后对新尺码进行一
There are n lines l1,l2,…,ln on the 2D-plane. Staring at these lines, Calabash is wondering how many pairs of (i,j) that 1≤i<j≤n and li,lj share at least one common point. Note that two overlapping lines also share common points. Please write a progra
题目大意: 给定n个点 求任选一对点连成的直线斜率为1或-1的概率 对于点(x1,y1) 和 点(x2,y2) 斜率 k=(y1-y2)/(x1-x2) 当k=1 则 (y1-y2)/(x1-x2)=1 -> y1-y2=x1-x2 -> y1-x1=y2-x2 当k=-1 则 (y1-y2)/(x1-x2)=-1 -> y1-y2=-(x1-x2) -> y1+x1=y2+x2 那么记录下所有点的 y-x 和
有墙的最大匹配问题 将行和列进行初始化划分 再对左图(r)右图(c)进行匈牙利算法 #include<bits/stdc++.h> using namespace std; #define N 105 char mp[N][N]; int mp2[N][N]; int used[N]; int vis[N]; int n,m,r,c; bool dfs(int x) { for(int j=1;j<=c;j++) {