1、Lbf) st.clear() ; st.insert(-b) ; st.insert(L+f) ; scanf(%d , &n) ; for(int cas = 1 ; cas = n ; cas+)%d%dk , &x) ; if(k = 1) int ok = 1 ; for(ita = st.begin() ; ita != st.end() ; ita+) itb = ita ; itb+ ; if(itb != st.end() & *ita+b+x+f = *itb ) carcas = make_pair(*ita + b , *ita + b + x) ; st.insert
2、(carcas.first) ; st.insert(carcas.second) ; ok = 0 ; printf(%dn , carcas.first) ; break ; ita+ ; if(ok) puts(-1) ; else st.erase(carx.first) ; st.erase(carx.second) ; return 0 ;xi yi zi , xi必选,yi zi 选1个,最少typedef pair PII ;int cmp(PII a , PII b) if(a.y != b.y) return a.y b.y ; else return a.x b.x ;P
3、II ptmaxn ;int amaxn , Amaxn ;int m ;vector g ;int have(PII &p , int c) int i = lower_bound(a , a+m , p.x) - a ; if(ai = c) i+ ; if(i m & ai t ;= t ; for(int i = 0 ; i pos) pos = gi.y ; ans+ ;Case #%d: %dn , cas , ans) ;首先求系数矩阵。由每个数的范围可以确定每个数转化成二进制以后最多有63位,那么我们构造一个63*100的矩阵,aij表示第j个数的第i个二进制位,因为我们想要结
4、构最大,最后一列置为1,然后用高斯消元判断每一行即想要结果的每一位能不能取得1。从高位向低位,判断每一行是否有可控制变元(是否有1),如果有那么这一行可以取得1,同时从该行往下依次异或掉该列不为0的行,即异或掉该变元。如果没有可控制的变元,但是最后一列是0,该行结构也是1,若最后一列不为0说明该行结果为0。从高位向低位,每次确定了一位后,就更新ans的值,最后取得一个最大值。int a65110;int n;void Gauss() int x; LL ans = 0; for(int i = 0; 63; x = -1; for(int j = 0; j n; j+) if(aij) x =
5、 j; /找到一个可控制的变元 break; /若没找到,但最后一列为0,该行结果是1 if(x = -1 & ain = 0) ans += (1ll(62-i); /若找到了一个控制变元 else if(x != -1) ans += (1ll /从该行一下异或该变元 for(int j = i+1; j+) if(ajx) for(int k = 0; k = n; k+) ajk = aik; cout ans endl; LL x;,&n); memset(a,0,sizeof(a); scanf(%lldx); if(x & (1ll(62-j) ) aji = 1; i+) ai
6、n = 1; Gauss(); return 0;比如(2,4,4,1)和(33,57,57,2)匹配const int maxn = 100008 ;int Nextmaxn ;int amaxn , bmaxn ;int samaxn26 , sbmaxn26 ;int n , m , k ;int ok1(int i , int j) int l1 , l2 , e1 , e2 ; l1 = l2 = e1 = e2 = 0 ; for(int t = 1 ; t = k ; t+) if(t bi) l1 += sbit - sbi-jt ; else if(t = bi) e1 +=
7、 sbit - sbi-jt ; bj) l2 += sbjt ; e2 += sbjt ; return l1=l2 & e1=e2 ;int ok2(int i , int j) ai) l1 += sait - sai-jt ; else if(t = ai) e1 += sait - sai-jt ; else if(t = bj)void getNext() int i,j; j=0; Next1=0; for(i=2;i0 & !ok1(i , j+1) j=Nextj; if(ok1(i , j+1) j+; Nexti=j;int kmp() int cnt=0; / 初始状态
8、为 0 for(i=1;=n;ok2(i,j+1) if(ok2(i , j+1) if(j = m) cnt+; j = 0 ; /特殊处理一下 return cnt; int main() int i , j ;nmk) memset(sa , 0 , sizeof(sa) ; memset(sb , 0 , sizeof(sb) ; for(i = 1 ;ai) ; for(j = 1 ; j+) saij = sai-1j ; saiai+ ;= m ;bi) ; j+) sbij = sbi-1j ; sbibi+ ; getNext() ; , kmp() ;typedef lon
9、g long LL ;const int maxn = 2008 ;LL dpmaxn , hmaxn;int _stackmaxn , top ;int getidx(int i) while(top = 0 & h_stacktop = hi) top- ; _stack+top = i ; if(top 0) return _stacktop-1 ; else return 0 ; int n , m ; char strmaxn ; LL sum ;m) sum = 0 ; memset(h , 0 , sizeof(h) ; memset(dp , 0 , sizeof(dp) ;
10、while(n-)%s , str+1) ; top = -1 ; for(int i = 1 ; if(stri = w) hi+ ; else hi = 0 ; int j = getidx(i) ; dpi = dpj + hi * (i - j) ; sum += dpi ; cout sum endl ;int amaxn , n ;int cmaxmaxn20 , cminmaxn20 , tlogmaxn ;void rmqinit() i+) cmaxi0 = cmini0 = ai ; for(int j = 1 ; (1j) i + (1j) - 1 cmaxij = st
11、d:max(cmaxij-1 , cmaxi + (1(j-1) j-1 ) ; cminij = std:min(cminij-1 , cmini + (11 + 1 ;int rmqmax(int l , int r) int i = tlogr - l + 1 ; return std:max(cmaxli , cmaxr - (1i) + 1i) ;int rmqmin(int l , int r)min(cminli , cminr - (1std: ptmaxn ; int k , i , l , r , m , mxlen ; i+) scanf( rmqinit() ; l =
12、 r = 1 ; m = mxlen = 0 ; while(1) if(rmqmax(l , r) - rmqmin(l , r) mxlen) mxlen = r - l + 1 ; m = 0 ; pt+m = std:make_pair(l , r) ; else if(r - l + 1 = mxlen) r+ ; else l+ ; while(l r) r+ ; if(r n) break ;%d %dn , mxlen , m) ; i+) printf( , pti.first , pti.second) ;求最小的容量依次给出1-M的靶子需要编号为Ai的箭,初始箭袋为空1、
13、如果箭在袋子里,射靶子,然后再把箭放在袋子里2、如果箭不在袋子里,花1分钟时间,然后再射靶子,再把箭放在袋子里。3、如果袋子的箭数量“容量”了,保留最近使用的“容量”支箭。int n , M , CCtime ;int amaxn ;const int inf = 100000000 ;struct Item int id ; int tim ; Item() ; Item(int _id , int _tim):id(_id) , tim(_tim) ; friend bool operator b.tim ;int vismaxn ;int judge(int Cap) int tim =
14、 0 ; fill(vis , vis+1+n , inf) ; priority_queue que ; int qsize = 0 ;= M ; int id = visai ; if(id != inf) que.push(Item(ai , i) ; visai = i ; continue ; if(+tim CCtime) return 0 ; if(qsize Cap) qsize+ ; else if(qsize = Cap) while(! que.empty() Item it = que.top() ; if(it.tim != visit.id) que.pop() ;
15、 else break ; if(it.tim = visit.id) que.pop() ; visit.id = inf ; return 1 ;int gao() int l = 1 , r = M , s = -1 , mid ; while(l 1 ; if(judge(mid) s = mid ; r = mid - 1 ; else l = mid + 1 ; return s ; int t ; while(t-)n , &M , &CCtime) ; , gao() ;const int maxn = 1000008 ;int nextmaxn ;void getnext(c
16、har s) int len = strlen(s) ; next0 = -1 ; int i = 0 , j = -1 ; while(i = 1) if(y & 1) s *= x ; s %= mod ; x *= x ; x %= mod ;int n , m , len ;LL ans() if(m = 0) return Pow(26LL , n) ; LL sum = Pow(26LL , x1 - 1) ; if(xi - xi-1 = len) sum *= Pow(26LL , xi - xi-1 - len) ; sum %= mod ; if(st.find(xi - xi-1 + 1) = st.end() return 0 ; sum *= Pow(26LL , n - xm - len + 1) ; return sum ; , word) ; getnext(word) ;xi) ; len = strlen(word) ; int i = len ; while(nexti != 0) st.insert(len - nexti + 1) ; i = nexti ; ans() 给你一个n位数,每次操作可以选该数任意的相邻两位进行交换,如果最多可以操作k次,那么最终可以得到的最小的数是什么.(n位且不能含前导零)?char
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1