2017北大校赛 J题 pairs】的更多相关文章

题目链接 http://poj.openjudge.cn/practice/C17J/ orz 原来是一道无脑枚举题目 只是很卡常数而已 复杂度算错也是很醉orz 当时怎么没想着优化常数呢 题解:枚举x,p,y,就可以了 当然,普通暴力枚举肯定会超时,复杂度是M^1.5 (一开始算的是M^1.5logM,实际上算错了,因为M + M/4 + M/9 + .... 不超过2*M) 我们考虑预处理一些部分,其实就是预处理出每个数i的小于sqrt(i)的所有约数 这个复杂度实际上是MlogM 之后我们…
网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直接判断情况就可以,于是出现 #include<stdio.h> int main() { int T,n,m,a,b,u,v,i,flag; scanf("%d",&T); while(T--) { flag=; scanf("%d%d%d%d",&…
题目连接 : https://nanti.jisuanke.com/t/A1256 Life is a journey, and the road we travel has twists and turns, which sometimes lead us to unexpected places and unexpected people. Now our journey of Dalian ends. To be carefully considered are the following…
题目链接 题意 : 给出一副图,大连是起点,终点是西安,要求你求出从起点到终点且经过中转点上海的最小花费是多少? 分析 : 最短路是最小费用最大流的一个特例,所以有些包含中转限制或者经过点次数有限制的最短路问题都可以考虑使用最小费用最大流来建图解决. 首先对于每个点都只能经过一次这个限制,在网络流中是比较常见的一个限制,只要将所有的点由一拆二且两点间连容量为 1 且花费为 0 的边. 这题的建图很巧妙,是将中转点作为汇点,提示到了这里不如停下来想想如何建图? 然后抽象出一个超级源点,然后将起点和…
luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 思路 找循环节.答案即为 (循环节的长度\(-1\)) 对所有循环节求和. 如果只能交换相邻两个,那么就是求逆序对个数.因为交换相邻两个数字的效果是使逆序对个数\(-1\). Code #include <bits/stdc++.h> #define maxn 100010 using name…
第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4800 题目大意:给定C(3,N)支队伍之间对战的获胜概率,再给定一个序列存放队伍编号,每次获胜之后可以选择和当前战胜的对手换队伍.问按给定序列依次挑战全部胜利的最大概率. 解题思路:状压DP dp[i][j]表示使用队伍i从编号j开始挑战全胜的概率,ai[i]表示i位置的队…
 0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大部分是去年的题,简单过了一遍,重点放在那几道新题. 有五道新题,自己又不是专业CTFer,菜鸡一枚,做多少记录多少. 目前做出了<阳光总在风雨后>和<default>,<Document>get了shell,但无奈死活找不出flag. 下面是题解,不定期更新题目WP 0X1…
数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入  第一行两个正整数h 和 w (2 ≤ h, w ≤ 100),h是多边形所在平面的高,w是多边形所在平面的宽,接下来h行,每行w个字符,描述了整个平面的每个单元(每个单元是一个单位面积),字符只会是’\’,’/’和’.’其中之一,’\’,’/’表示多边形的边,’.’表示空白单元. 输出  输出一个数,输入代表的平面内…
思路:这题对于其他能退出所有值的情况比较好像,唯一不能确定的是XXOXXOXXOXX这个形式的序列,其中XX表示未知,O表示已知. 我们令num[1]=0,那么num[4]=sum[3]-sum[2]+num[1]; 可以递推,num[i]=sum[i-1]-sum[i-2]+num[i-3],(i%3==1). 这样求出来的每个num值就是相对于num[1]的值. 假使某个num[i]<0,表示第i个数相对于num[1]为负数,题目要求每个数都大于等于0,所以num[1]>=(-num[i]…
题意: 剪一段丝带,对于剪完后的每一段丝带长度必须是a,b,c 输入丝带的长度  n 和  a  b  c 输出一个整数,代表最多能剪成多少段 样例输入 5 5 3 2 7 5 5 2 样例输出 2 2 解析: 完全背包啦..就是让求在背包正好装满的情况下 所获取的价值(分成的段数)最大 在要装当前容量 j 时,判断一下j-A [i] 这个容量是否存在...所以要把背包容量为0时初始化为1 因为0肯定可以装出来...然后用完全背包的思想一层层 向上推...最后要减去0时的那个1 附01背包的变形…