07 2016 档案
摘要:终于是道中文题了。。。。 当时考试的时候就考的这道题。。。。 果断GG。 思路: 因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点。 随后就进行一遍树形DP就好了。。 x表示当前的节点。j表示j的空间最多能放多少价值的软件。 状态转移方程:f[x][j]=max(f[x...
阅读全文
摘要:题意:电视台发送信号给很多用户,每个用户有愿意出的钱,电视台经过的路线都有一定费用,求电视台不损失的情况下最多给多少用户发送信号。 转自:http://www.cnblogs.com/andre0506/archive/2012/10/09/2717441.html思路: 基础树形...
阅读全文
摘要:大神们的题解我一个都没看懂。。。。。。。。。。。十分的尴尬 题意:算出闭区间内二进制中0的个数大于等于1的个数的数字有多少个 思路: 组合数学(n小于500的时候都可以出解,只不过高精比较麻烦)。 这道题还算比较仁慈。。。Discuss里面有一段说得挺好的 看完各家算法,尝试独立...
阅读全文
摘要:题意:给你两个数:p和a,如果p是素数输出no,如果p不是素数,判断a^p%p==a是否成立,如果成立输出yes,否则输出no。注意: 1.因为a和p不互质,不能用费马小定理。。。 2. 用long long // By SiriusRen #include #include #i...
阅读全文
摘要:题意:找强连通中点数大于2的强连通分量个数 思路:Tarjan// By SiriusRen #include #include using namespace std;int n,m,ans=0,t=0,cnt=0,tot=1,top=0,dfn[50050],low[50050...
阅读全文
摘要:好像可以用高斯消元???但是用搜索写 这题就很水了。、。// by SiriusRen#include #include using namespace std;bitsetb;int jy;bool dfs(int t,int pos){ if(!b.to_ulon...
阅读全文
摘要:只需要对John的付款数做一次多重背包,对shopkeeper的找零钱数做一次完全背包即可。最重要的是上界的处理。可以注意到,John的付款数最多为maxv*maxv+m,也就是24400元。同理,shopkeeper找钱最多的数目为maxv*maxv.证明如下:如果John的付款...
阅读全文
摘要:题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个 将这些石头叠加起来,问能够达到的最高高度。 题意转载自:http://blog.csdn.net/wangjian8006/article/details/7607...
阅读全文
摘要:一个完全背包 很裸,对于我这种DP渣渣都能1A。。// by SiriusRen#include #include #include using namespace std;int cases,n,E,F,f[20050],w[505],v[505];int main(){ ...
阅读全文
摘要:题意:给你6个数。让你求出1~100范围内的数 最优情况下由这六个数加减几步得到。 输出平均值和最大值。 思路: 我就随便写了写,,,感觉自己的思路完全不对。 但是交上去 AC了!!! 我先当减法 不存在 完全背包 出来1~10100范围以内的最优解 然后再枚举一下从哪个地方开...
阅读全文
摘要:题意: 两辆车去运一堆货物,货物数量小于等于10,问最少需要几趟能把货物全部运到目的地。 思路: 思路很简单,就是状态压缩成二进制。判断一下每个状态能不能运输。再进行一下DP。 设s[]数组里记录所有能转移的状态。 状态转移方程:f[i|s[j]]=min(f[i|s[j]],f[...
阅读全文
摘要:思路: 枚举第一个点集中起点是哪个。 因为第i个点集总和第i-1个点集和第i+1个点集相连。 我们就可以DP求出最优解了。 f[i][j]=min(f[i][j],f[i-1][k]+dis(i,j,i-1,k));// by SiriusRen#include #include...
阅读全文
摘要:思路:匈牙利 n-ans/2;// by SiriusRen#include #include #define N 505using namespace std;int jy,xx,yy,n,tot,ans;int first[N],next[N*N],v[N*N],mat[N]...
阅读全文
摘要:思路: 很普通很普通的一道差分约束。。 就是Dijkstra的时候要进行堆优化// by SiriusRen#include #include #define N 150050using namespace std;int n,m,xx,yy,zz,tot=1;int fir...
阅读全文
摘要:大致题意: 有n座城市和m(13次(不包括3),所走的方案必然出现了环路(网上的同学称之为“闸数”)。因此只需把bool vist[] 修改为 int vist[] 进行标记,本题就能解决了。但是并没有说出为什么一个点被访问3次就不能更优了,, 所以我认为这是数据水,卡过去的。。我...
阅读全文
摘要:It is confirmed that these sections do not overlap with each other. 一句话 就变成水题了,,,// by SiriusRen#include using namespace std;int n,m,xx,y...
阅读全文
摘要:题意:给你个数n 让你求从x出发用乘除法最少多少步算出x^n。 思路: 一看数据范围 n#include #include using namespace std;int n,T,s[33],flag,vis[2048];void dfs(int t){ if(t==T+...
阅读全文
摘要:题意:输出a^3=b^3+c^3+d^3的所有a,b,c,d的值。 b,c,d由小到大且b,c,d都大于1。 思路: 按照题意写就好。。。。// by SiriusRen#include using namespace std;int num[105],n,t,s[5];void ...
阅读全文
摘要:这道题输出特别坑。。。。题目的意思也不太好理解。。就解释一下输出吧。。 它让你 从下往上输出。 如果有多种情况,按照字典序从小往大输出。。。 就是这个多种情况是怎么产生的呢。 下面给一组样例。 很明显 A在最底下且A在Z下,Y和这个连通块 没有相交。 答案是: AYZ AZ...
阅读全文
摘要:题意:求最大无坏点三角形 思路: 模拟? (为什么我模拟过了。。。) 有人用 DP,有人用 搜索。。。 // by SiriusRen#include #include #include using namespace std;char a[222][222];int cases...
阅读全文
摘要:题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图)。 最后一行有n个数,下一次要填的数是c。 里面预先已经填好了数字。(0为未填) 得分的标准是这个分数的连通块周围没有空的地方。 就能得到连通块大小的分。 失分是 当前块能得分,但不巧,当前块内的数字是要...
阅读全文
摘要:思路:首先 先普及一个性质: 循环矩阵*循环矩阵=循环矩阵 由于此题是距离小于d的都加上一个数。 那么 构造矩阵的时候 我们发现 诶呦 这是个循环矩阵 看看数据范围 n^2log(k)可以过。 那就把这个矩阵改一改。 因为这是个循环矩阵, 所以呢 只用保...
阅读全文
摘要:嗯嗯 就算是水题吧。 (缩完行就15行) 题意:两个n*n的矩阵相乘(n#include #define ff(N) for(int i=1;i<=n;i++){for(int j=1;j<=N;j++)using namespace std;int n,a[801][801],...
阅读全文
摘要:题意: 给你一个n*n的矩阵 让你求S: 思路: 只知道矩阵快速幂 然后nlogn递推是会TLE的。所以呢 要把那个n换成log那这个怎么搞呢二分!当k为偶数时: 当k为奇数时: 就按照这么搞就能搞出来了 (我是看的题解才A的,,, 中间乱搞的时候犯了一些脑残的错误)...
阅读全文
摘要:题意: 已知: 当x#include using namespace std;int cases,k,ans,a[10][10],mod;struct matrix{int a[10][10];void init(){memset(a,0,sizeof(a));}}first,cp...
阅读全文
摘要:题意:中文题 我就不说了吧,。。。 思路:矩阵快速幂// by SiriusRen#include #include using namespace std;int cases,n,k,mod=9973,ans;struct matrix{int a[100][100];matr...
阅读全文
摘要:题意: 给你一棵树,求树中最长的xor路径。(n#include #include #define N 305000using namespace std;int first[N],next[N],v[N],w[N],W[N],trie[N*10][2];int xx,yy,zz,...
阅读全文
摘要:题意: 让你从小到大输出给的字符串中既是前缀又是后缀的子串的长度。 思路: 先要了解这个东西: KMP中next数组表示的含义:记录着字符串匹配过程中失配情况下可以向前多跳几个字符,它描述的也是子串的对称程度。那么我们可以用next数组来乱搞怎么个乱搞法呢? 前缀的next[len...
阅读全文
摘要:题意: 求s到e恰好经过n边的最短路 思路: 这题已经被我放了好长时间了。 原来是不会矩阵乘法,快速幂什么的也一知半解现在终于稍微明白了点了其实就是把矩阵乘法稍微改改 改成能够满足结合律的矩阵“加法”,也就是floyd的步骤。 我就直接把集训队论文放上来吧。。。。(证明它满...
阅读全文
摘要:题意: 让你用矩阵来找Fibonacci数 思路: 不用矩阵快速幂会TLE,只能学一下啦 (其实也不难)// by SiriusRen#include using namespace std;struct matrix{ int a[2][2]; void init()...
阅读全文
摘要:题意: 如果给出的单词能够首尾相接,请按字典序输出单词,中间要加’.’ 否则输出三个”*”. 思路: 欧拉回路 记得按字典序排序哦~ 加边的时候要倒着加。(邻接表遍历的时候是反着的)记得清空vis数组(因为这个无脑错误WA了好长时间。。。。。)随便搞搞 就能过了。 数据不是很...
阅读全文
摘要:背景NOIP2014提高组第二题描述无向连通图G有n个点,n-1条边。点从1到n依次编号,编号为i的点的权值为Wi ,每条边的长度均为1。图上两点(u, v)的距离定义为u点到v点的最短距离。对于图G上的点对(u, v),若它们的距离为2,则它们之间会产生Wu×Wv的联合权值。请...
阅读全文
摘要:题意:让你找最小重复串的个数加深KMP中对next数组的理解#include #include using namespace std;int next[1000500],slen;char s[1000500];void get_next(){ int i=1,j=0; ...
阅读全文
摘要:经过上午的学习,终于对KMP有了初步的了解 这里就是在get_sum的时候进行了一下小小的变形。 (听说要写快速乘,网上copy了一份。 留着以后用吧)http://uoj.ac/problem/5 UOJ数据挺好的,重点是可以看别人的程序(也可以hack别人的程序)#includ...
阅读全文
摘要:【题意】给定n对字符串,求每组的前一个字符串在后一个字符串之中出现了几次 一道裸的KMP这里就放个模板吧。。。。以后KMP就这么写了// by SiriusRen#include #include using namespace std;int alen,cases,blen,ne...
阅读全文
摘要:我的hash从来没写对过。。。。。。。。 (白学了快一年OI ……原来连个hash都没写对过) 但是 但是 今天是一个值得纪念的日子。看看标题 我竟然在写hash的题解。 (好了好了 废话少说) 题意: 给你一个串,求长度为n的不同的子串的个数。 题目中的NC是什么意思 ...
阅读全文
摘要:嗯嗯 一道找规律的题。。。。 真佩服那些把表打出来的人//By SiriusRen#include #include using namespace std;char a[1005],b[1005];int main(){ scanf("%s%s",a,b); ...
阅读全文
摘要:题意: 求逆序对个数 没有重复数字 线段树实现: 离散化。 单点修改,区间求和// by SiriusRen#include #include #include using namespace std;long long ans=0;int n,t,f[2555555],sum[...
阅读全文
摘要:寻找道路 NOIP2014 day2 t2 描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到 终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指向的点都直接或间接与终点连通。 2.在满足条件 1 的...
阅读全文
摘要:计算系数 NOIP2011 day2 第一题 描述 给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数。 输入格式 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。 输出格式 ...
阅读全文
摘要:[NOIP2012T4]同余方程 noip2012-tg 描述 求关于 x的同余方程 ax ≡ 1(mod b) 的最小正整数解。 输入格式 输入文件 mod.in 输入只有一行,包含两个正整数a,b,用一个空格隔开。 输出格式 输出文件 为 mod...
阅读全文
摘要:[NOIP2013T2]火柴排队背景noip2013day1描述涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各 自 排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:∑(ai-bi)2,其中 ai 表示第一列火柴中第 i 个火柴的...
阅读全文
摘要:描述n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置, ……, 依此类推。 游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1...
阅读全文
摘要:[NOIP2013T3]货车运输背景noip2013day1描述A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重 量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的 情况下,最多能运多重的货物。输入格式...
阅读全文
摘要:[NOIP2013T4]积木大赛 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景noip2013day2描述春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大 厦,大厦可以看成由n块宽度为1的积木组成,第n块积木的...
阅读全文
摘要:P1692 铺地毯 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景NOIP2011 day1 第一题 描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从...
阅读全文
摘要:思路: Kruskal求最大生成树+倍增LCA// by SiriusRen#include #include #include using namespace std;#define N 105000int n,m,tot=0,xx,yy,zz,ans;int first[N],...
阅读全文
摘要:生无可恋 查RE查了一个多小时。。 原因是我N define的是250500 应该是500500!!!!!!!!! 身败名裂,已无颜面对众人。。吐槽完了 我们来说思路。。。 思路: 判有向图能否形成欧拉路 但是他给的是string,怎么转化成int呢? trie树! 这东西有多么...
阅读全文
摘要:题意: John要去访问他的朋友,在这个城市中有n条街道,每条街道与别的街道有两个交点,现在给出这些街道的信息(即输入x y z表示街道z的两个端点为x,y),问其是否可以每条街道只经过一次,如果存在,则输出字典序最小的路线,不存在则输出”Round trip does not e...
阅读全文
摘要:题意:给你一个图 判断最少用几笔把这个图画出来(画过的边不能重新画) 思路: 并查集+欧拉回路 仔细想一想。 在一个强连通分量中 所有度为奇数的点之和÷2就是要画的笔画数 Now question :如果这是个欧拉回路怎么办? +1就OK啦答案就是奇度数的点÷2+欧拉回路的个数//...
阅读全文
摘要:题意:要开启一扇门,n个单词是密码,n个单词中,如果一个单词的首字母和前一个单词的尾字母相同,并且每个单词都能这么连起来且只用一次,则门可以开启,否则不能开启,现给出单词,判断门是否可以开。有向图欧拉通路充要条件:D为有向图,D的基图连通,并且所有顶点的出度与入度都相等;或者除两个...
阅读全文
摘要:题目翻译: 公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43 (= 1 + 2 + 34 + 6) 是所有可...
阅读全文
摘要:题意: 从一个点出发,8个方向,给出每一步的方向,求出走过的路径形成的多边形的面积。 思路: 先普及一下向量叉乘、、 (摘自度娘) 也就是x1y2-x2y1。 那这不就好说了嘛。 一个经过原点的闭合多边形的面积可以分割成多个三角形。 每个三角形的面积就是相邻向量叉乘的一半。 大功...
阅读全文
摘要:直接解释输入了: 第一行cases. 然后是n和m代表有n个人,m个操作 给你两个空的集合 每个操作后面跟着俩数 D操作是说这俩数不在一个集合里。 A操作问这俩数什么关系 不能确定:输出Not sure yet. 在一个集合里:输出In the same gang. 不在一个集合里...
阅读全文
摘要:// by SiriusRen#include #include #include using namespace std;int cnt=0,jy,a[30500],n,m,root=-1;struct node{ int left,right,count_left,cou...
阅读全文
摘要:背景 XLk觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。 描述“第一分钟,X说,要有数列,于是便给定了一个正整数数列。 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作。 第三分钟,k说,要能查询,于是便有了求一段数的和的操作。 第四分钟,彩虹喵说...
阅读全文
摘要:题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1。 如果两只虫子相恋且距离为零,则它们是同性恋。(出题人好猥琐啊) 注意: 不能输入一半就break出来。。。。。一定要读入所有的数据!!!! 因为是多组询问。。。被这个东西坑惨了。//By S...
阅读全文
摘要:我是不会说这个题很坑的。。 改了一晚上。。。 // by SiriusRen#include #define N 150000#define LSON l,mid,lson#define RSON mid+1,r,rson#define LL long longusing name...
阅读全文
摘要:题意: 单点修改,区间最值 思路: 线段树 原题请戳这里//By SiriusRen#include #include #include #define LSON l,mid,lson#define RSON mid+1,r,rson#define N 500000 #define...
阅读全文
摘要:题意:Farmer John想按照奶牛产奶的能力给她们排序。现在已知有N头奶牛(1 ≤ N ≤ 1,000)。FJ通过比较,已经知道了M(1 ≤ M ≤ 10,000)对相对关系。每一对关系表示为“X Y”,意指X的产奶能力强于Y。现在FJ想要知道,他至少还要调查多少对关系才能完成...
阅读全文
摘要:题意: 给你n*m的矩形,有k个坏点 问最大坏点连通块的坏点数。 一发水题。。 裸的DFS // by SiriusRen#include #include using namespace std;int n,m,k,jy,jyx,jyy,xx[]={1,-1,0,0},yy[]=...
阅读全文
摘要:一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。给出这些牛的高度,要求每头牛可以看到的牛的数量的和。把要求作一下转换,其实就是要求每头牛被看到的次数之和。这个可以使用单调栈来解决。从左...
阅读全文
摘要:题目描述:S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为...
阅读全文
摘要:题目描述: 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来n天的借教室信息,其中第i天学校有r(i)...
阅读全文
摘要:河中跳房子总时间限制: 1000ms 内存限制: 65536kB 描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石。这项激动人心的活动在一条长长的笔直河道中进行,在起点和离起点L远 (1 ≤ L≤ 1,000,000,000) 的终点处均有一...
阅读全文
摘要:大致题意: 就是公平地分披萨pie 我生日,买了n个pie,找来f个朋友,那么总人数共f+1人 每个pie都是高为1的圆柱体,输入这n个pie的每一个尺寸(半径),如果要公平地把pie分给每一个人(就是所有人得到的pie尺寸一致,但是形状可以不同),而且每个人得到的那份pie必须是...
阅读全文
摘要:题意:有一些衣服,每件衣服有一定水量,有一个烘干机,每次可以烘一件衣服,每分钟可以烘掉k滴水。每件衣服没分钟可以自动蒸发掉一滴水,用烘干机烘衣服时不蒸发。问最少需要多少时间能烘干所有的衣服。 思路:首先可以想到二分枚举答案。枚举一个mid值时,若一件衣服的水量大于mid,则一件衣服...
阅读全文
摘要:题意:直接解释输入了,,,先输入个数字t表示t组数据,每组数据前两行各一个数M,H。 接下来H行每行俩数 Ai,Bi。 让求下式的结果。 // by SiriusRen#include using namespace std;int t,m,h,ans,xx,yy;int chen...
阅读全文
摘要:cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句std::i...
阅读全文
摘要:我觉得这个DP挺难的。。。然而这只是lydrainbowcat学长幻灯片上的第一题…… 明天考试要GG。 题意: 给你一个序列,让你选出两个集合S和T。保证S里的数都在T里的数的左边。求一共有多少个集合满足S的异或所得等于T的与的所得,并mod一个大素数。 思路: 上课讲的DP,可...
阅读全文

浙公网安备 33010602011771号