清北学堂模拟赛d7t5 做实验】的更多相关文章

题目描述有一天,你实验室的老板给你布置的这样一个实验.首先他拿出了两个长度为 n 的数列 a 和 b,其中每个 ai 以二进制表示一个集合.例如数字 5 = (101)2 表示集合 f1; 3g.第 i 次实验会准备一个小盒子,里面装着集合 ai 所有非空子集的纸条.老板要求你从中摸出一张纸条,如果满足你摸出的纸条是 ai 的子集而不是 ai-bi,ai-bi+1,...,ai-1 任意一个的子集,那么你就要 ***:反之,你就逃过一劫.令你和老板都没有想到的是,你竟然每次都逃过一劫.在庆幸之余…
/* clj:水题别人都满分你不是你就完了,所以说水题一定要细心一点,有这么几个细节:①前导零的处理,全是零的时候要特判②换行要注意,不要多大一行,剩下就是水水的模拟了 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #…
3.棋盘迷宫(boardgame.pas/c/cpp)(boardgame.in/out)时间限制:5s/空间限制:256M[题目描述]小 A 和小 Z 是非常要好的朋友, 而且他们都对迷宫游戏非常有兴趣. 他们经常在自习课上用迷宫来打发时间(两位都是学习效率 400%的 dalao, 大家切记不要模仿) .他们的迷宫非常简单, 又被他们叫做是棋盘迷宫, 迷宫本身是一个 N*M 大小的棋盘, 从左往右列数不断加大, 从上往下行数不断增大, 故左上角的坐标为(1,1),右下角的坐标为(N,M) .…
题目描述众所周知的是,火柴棒可以拼成各种各样的数字.具体可以看下图: 通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推. 现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用完,并且想知道能拼出的最小和最大的数分别是多少. 输入格式(stick.in) 一个数k. 输出格式(stick.out) 两个数,表示最小的数和最大的数.注意这两个数字不能有前导0. 输入样例15 输出样例108 7111111 数据范围对于30%的数据k<=10.对于60%的数据k<=20.对…
题目描述一个神秘的村庄里有4家美食店.这四家店分别有A,B,C,D种不同的美食.LYK想在每一家店都吃其中一种美食.每种美食需要吃的时间可能是不一样的.现在给定第1家店A种不同的美食所需要吃的时间a1,a2,…,aA. 给定第2家店B种不同的美食所需要吃的时间b1,b2,…,bB.以及c和d.LYK拥有n个时间,问它有几种吃的方案. 输入格式(eat.in) 第一行5个数分别表示n,A,B,C,D. 第二行A个数分别表示ai. 第三行B个数分别表示bi. 第四行C个数分别表示ci. 第五行D个数…
题目描述LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目:这里有一个长度为n的正整数数列ai(下标为1~n).并且有一个参数k.你需要找两个正整数x,y,使得x+k<=y,并且y+k-1<=n.并且要求a[x]+a[x+1]+…+a[x+k-1]+a[y]+a[y+1]+…+a[y+k-1]最大.LYK并不会做,于是它把题扔给了你. 输入格式(max.in) 第一行两个数n,k. 第二行n个数,表示ai. 输出格式(max.out)两个数表示x,y.若有很多种满足要求的答…
题目描述 LYK最近在研究位运算,它研究的主要有两个:or和xor.(C语言中对于|和^) 为了更好的了解这两个运算符,LYK找来了一个2^n长度的数组.它第一次先对所有相邻两个数执行or操作,得到一个2^(n-1)长度的数组.也就是说,如果一开始时a[1],a[2],…,a[2^n],执行完第一次操作后,会得到a[1] or a[2],a[3] or a[4] ,…, a[(2^n)-1] or a[2^n]. 第二次操作,LYK会将所有相邻两个数执行xor操作,得到一个2^(n-2)长度的数…
题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,不仅有边权还有点权. LYK给出了一个子图的定义,一张图G’={V’,E’}被称作G的子图,当且仅当 ·G’的点集V’包含于G的点集V. ·对于E中的任意两个点a,b∈V’,当(a,b)∈E时,(a,b)一定也属于E’,并且连接这两个点的边的边权是一样的. LYK给一个子图定义了它的价值,它的价值为:点权之和与边权之和的比. LYK想找到一个价值最大的非空子图,所以它来找你帮忙啦. 输入格式(graph…
分析:直接O(n^3)做是只有50分的,可以加一点小小的优化,就是c[k]可以从c[k-1]得到,但是还是只有60分,从宏观意义上是不能继续优化了.对于这类涉及到位运算的性质的题目,将每个数转化成二进制,两个数第i位异或值为1当且仅当两个数上这一位不同,我们只需要记录每一位上有多少个a为1,有多少个b为1,最后相乘再乘上这一位表示的大小就可以了. #include<iostream> #include<cstdio> #include<cstring> #define…
分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变,check一下 2.将一位1变成0 3.添一位 4.减一位 */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;…