题面 养鸽人要监视他的鸽子,有n只鸽子站在平面上,他可以在m个给定的点上设置监视器,如果一只鸽子在某个监视器上或者在两个监视器所连直线上或者在三个监视器所连直线的三角形内则其就咕咕咕了,现在养鸽人要让所有鸽子咕咕咕,请问他最少需要设置多少监视器. 对于100%的数据n≤100000,m≤500,坐标绝对值不超过10的9次方. 100 首先转化一下题意,就是选取尽量少的点,然后生成一个凸包,包住给定的一个凸包. 显然在给定凸包内的点是没有用处的. 对于不在给定凸包内的点,我们枚举它们: 对于一个点…
题面 对于一个字符集大小为C的字符串P,我们可以将任意两种字符在P中的位置进行互换,例如P=abcba,我们交换a,b就变为bacab,交换a,d就变为dbcbd,交换可以进行任意次.若交换后P变为了字符串Q,则我们称Q与P是匹配的. 现在给定两个字符集大小为C的字符串S,T,请你求出S中有多少个连续子串与T是匹配的. 100%的数据:1 <= n,m,C <= 10^6 , Case = 3 100 考虑哈希, 我们给一个长度为m的序列,规定它的哈希值为:\(\sum_{c \belong…
[问题描述] 小P和小R在玩一款益智游戏.游戏在一个正权有向图上进行. 小P控制的角色要从A点走最短路到B点,小R控制的角色要从C点走最短路到D点. 一个玩家每回合可以有两种选择,移动到一个相邻节点或者休息一回合. 假如在某一时刻,小P和小R在相同的节点上,那么可以得到一次特殊奖励,但是在每个节点上最多只能得到一次. 求最多能获得多少次特殊奖励. [输入格式] 第一行两个整数n,m表示有向图的点数和边数. 接下来m行每行三个整数xi,yi,li,表示从xi到yi有一条长度为li的边. 最后一行四…
[问题描述] 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两个东西结合在一起.众所周知,独立集是需要一个图的.那么顺旺基同学创造了一个算法,从冒泡排序中产生一个无向图. 这个算法不标准的伪代码如下: Pascal版本 C/C++版本 procedure bubblesortgraph(n, a[]) : /*输入:点数n,1到n的全排列a. 输出:一个点数为n的无向图G.*/ 创建一个有…
怕老婆 [问题描述] 有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋.但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择. hzy9819因为欣欣的要求,所以只喜欢高度h mod p=k的房子.但hzy9819是个鬼畜boy,他总是忘记欣欣的要求,但他不知道其实不是他记错了而是每次欣欣讲的p k都不同. 假设hzy9819每次知道了欣欣要求后是从大道的li点进入,ri点出去.因为害怕老婆的hzy9819怕自己数错,所以…
一.拓扑(top)[ 题目描述]:给你一个有向二分图,求他的拓扑序列的个数.[ 输入]:第一行两个数 N,M,表示点数和边数.接下来 M 行每行两个数 a,b,表示 a 向 b 有一条有向边.[ 输出]:仅一行,为拓扑序列个数 mod 10007.[ 样例输入]:8 101 51 62 62 73 53 83 74 54 74 6[ 样例输出]:972[ 说明]:10%的数据:N≤10:30%的数据:N≤20:60%的数据:N≤30:100%的数据:N≤40:   状压DP ...算了   二.…
第一题: 盾盾的打字机 (drdrd) [题目描述] 盾盾有一个非常有意思的打字机,现在盾哥要用这台打字机来打出一段文章. 由于有了上次的经验,盾盾预先准备好了一段模板 A 存在了内存中,并以此为基础来 打出文章 B.盾盾每次操作可以将内存中的某一个字符改成另一个字符,或者在某一个位置 插入一个字符,或者删除某一个位置上的字符.另外,为了避免自己预存的模板太腿反而浪 费时间,盾哥在所有操作之前会斟酌一下选择留下模板 A 的某一个最优的子串以保证操作 次数尽量少(当然盾盾也可以全保留或一个都不留)…
题面 有一张n个点m条边的有向图,每条边有一个互不相同的边权w,有q个询问,要求你从点a经过不超过c条边到点b,要求经过的边权递增并和尽量小,求出最小的边权和,如果没有合法方案则输出-1. 对于100%的数据,n≤150,m≤5000,q≤1000,w≤5000. 100 为了去除递增的条件, 我们先给边按边权从大到小排序,然后逐一加入图中. 现在为了去除边数要求,发现最优路径经过的边最多为\(n\)条,那么我们开一个\(f_{i,j,k}\)表示: 从\(i\)到\(j\)至多走\(k\)条边…
题面 有一个长度为n 的排列,现在有一些位置的数已经模糊不清了,你只知道这个排列的逆序对个数是K,你能计算出总共有多少可能的排列吗? 对于100% 的数据,n <=10^3,K<=10^9,0 的个数不超过14. 100 折半搜索. 先用\(C_{14}^7\)把\(14\)个\(0\)分成两组,然后分别用\(7!\)来算出两组内部的贡献, 然后在用桶之类的统计两组相互之间的贡献.…
题面 100 注意到ban的只会是一个子树,所以我们把原树转化为dfs序列. 然后题目就转化为,询问一段ban的区间,之后的背包问题. 比赛的时候,我想到这里,于是就开始想区间合并,于是搞了线段树合并,遂无果,爆零. 由于ban的是一段区间,所以肯定是将前缀和后缀合并. 我们预处理出前缀背包,和后缀背包. 然后合并两个背包就可以了. 具体的合并,Two pointers. 还要卡常. Code #include<iostream> #include<cstdio> #include…
1 第一题看着就觉得猎奇,于是就想着打暴力就跑. 但是很严重的问题就是... \(D\)和\(B\)打反了,都不知道当时在干什么??? 原本可以拿35. 2 第二题看着就觉得套路,于是想着今天就攻这题. 但是很严重的问题就是... 发现了ban的区间是dfs序上的一段后,就开始yy套路,结果居然想着线段树合并. 而且还把决策单调性推错了. 事实证明,都不知道当时在干什么??? 3 第三题看着就觉得很数据结构,于是打了暴力就跑. 但是很严重的问题就是... 没有想到会有dad[x]=x的情况. 傻…
题面 CJY很喜欢吃奶酪,于是YJC弄到了一些奶酪,现在YJC决定和CJY分享奶酪. YJC弄到了n-1块奶酪,于是他把奶酪挂在了一棵n个结点的树上,每根树枝上挂一块奶酪,每块奶酪都有重量. YJC和CJY决定这样分奶酪:首先砍掉一根树枝,把树分成两部分,每人取一部分,然后各自在自己取的那部分树上选择一条路径并取走路径上的奶酪,然后把剩下的奶酪拿去喂老鼠. 两人都想让自己取走总重量尽量大的奶酪,但他们不知道砍掉哪一根树枝最好.所以他们想让你计算,对于每一根树枝,砍掉之后每个人取走的奶酪的总重量的…
题面 有n个点,它们从1到n进行标号,第i个点的限制为度数不能超过A[i]. 现在对于每个s (1 <= s <= n),问从这n个点中选出一些点组成大小为s的有标号无根树的方案数. 100%的数据:n <= 100 100 prufer序列 每个大小为n,有标号无根树都可以表示成一个长度为(n-2)且取值在[1,n]的序列. 这个序列就叫prufer序列. 树转prufer序列 1.每次查找一个标号最小且度数为一的点,使与之相连的点的编号加入序列尾: 2.删除树中的这个点. prufe…
题目大意:给定一些合金,选择最少的合金,使这些合金能够按比例合成要求的合金 首先这题的想法特别奇异 看这题干怎么会想到计算几何 并且计算几何又怎么会跟Floyd挂边 好强大 首先因为a+b+c=1 所以我们仅仅要得到a和b就可以 c=1-a-b 所以c能够不读入了 然后我们把每种原料抽象成一个点 可知两个点能合成的合金一定在两点连线的线段上 证明:设两个点为(x1,y1)和(x2,y2),新合成的合金为(ax1+bx2,ay2+by2) (a+b=1,a,b>0) 两点连线为(y-y1)/(x-…
思路:将所有的直线的两个端点和城市混在一起,将能直接到达的两个点连线,求一次floyd最短路径.二分枚举bag容量,然后按给的要先后占领的城市由前向后,把能到一步到达的建一条边.然后求一次最小路径覆盖,就是最少需要多少个士兵才能全部占领,跟给出的p值进行比较. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #def…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1027 共三种金属,\(m\)种材料,给出每种材料中三种金属的占比. 给出\(n\)种合金的三种金属占比.用材料做合金,问最少需要多少种材料. 分析 首先,由于三种金属的占比相加为1,所以确定了前两项,最后一项也就确定了,我们可以用二唯坐标\((x,y)\)表示前两项,这样每种材料和合金就是二维平面上的一个点. 接下来是用材料做合金. 首先来考虑用两种材料做合金,两种材料为\((x1,y1)和…
1027: [JSOI2007]合金 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 2970  Solved: 787[Submit][Status][Discuss] Description 某 公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一 定量,经过融解.混合,得到新的合金.新的合金的铁铝锡比重为用户所需要的比重. 现在,用户给出了n种他们需要的…
题目链接:点击打开链接 gg.. . #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <iostream> #include <algorithm> #include <string.h> #include <vector> #include <queue> #include <math.h&…
题目 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的 原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金的铁铝 锡比重为用户所需要的比重. 现在,用户给出了n种他们需要的合金,以及每种合金中铁铝锡的比重.公司希望能 够订购最少种类的原材料,并且使用这些原材料可以加工出用户需要的所有种类的合金. 输入格式 第一行两个整数m和n(m, n ≤ 500),分别表示原材料种数和用户需要的合金种数.第2到m +…
题解就看这位仁兄的吧-不过代码还是别看他的了- 同样的方法-我200ms,他2000ms. 常数的幽怨- CODE #include <bits/stdc++.h> using namespace std; const int MAXN = 505; const double eps = 1e-8; struct Point { double x, y; Point(){} Point(double x, double y):x(x), y(y){} inline Point operator…
[bzoj1027]合金 分析 数形结合+计算几何+Floyd最小环. http://blog.csdn.net/popoqqq/article/details/40539273 虽然这样占大家的很不好,但是我的确需要这么做. 小结 (1)最小环的写法 (2)凸包的一种简易算法 RT. (3)关于计算几何的练习 通过做这道题,计算几何的模板也熟悉了一些. 计算几何如何调试? 这个么...好像只能瞪眼法了. 代码 #include <cstdio> #include <climits>…
计算几何之所以难学 就是因为太抽象了 不够直观 而且情况很多 很繁琐 甚至有一些东西不清不楚.. 这道题注意到题目中的描述 一个鸽子在两个点所连直线上也算. 通过看题解 发现这个地方并非直线而是线段 这不是明摆着坑人.. 先考虑m<=10的做法 可以想到爆搜 然后 就利用直线 点 三角形来判断复杂度\(2^m\cdot m^3\cdot n\) 期望得分30. 其中直线判断的时候 严谨一点是 如果在直线上再判断len的大小 可是当时考试的时候发现题目中的这句话了所以就没管. 三角形 的话容易转圈…
第四步: 扫码成功后获取最近联系人信息---day3代码 settings.py """ Django settings for weixin project. Generated by 'django-admin startproject' using Django 2.0.1. For more information on this file, see https://docs.djangoproject.com/en/2.0/topics/settings/ For…
今天模拟赛题目 纯考输入的傻逼题,用$scanf$用到思想僵化的我最终成功被$if$大法爆$0$了(这题只有一组$100$分数据). 输入后面那个$(+1/2)$很难$if$判断,所以我们要判两个字符串中间空的是空格还是换行.$getchar$和$cin.getline$都可以做到. 会输入基本上就做完了.至于题面的意思,也比较绕,但想想就明白了,飞机来回两次飞行一次是顺着地球自转.一次是逆着地球自转,所以时间可能一长一短. 根据“假设飞机来回飞行时间相同,求飞机的飞行时间”一句话,结合样例,可…
NOIP不考可持久,弃坑…
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <queue> using namespace std; typedef long long ll; ,mod=; int c[N][N],s[N][N],…
[ 问题描述]有一天, 小 A 得到了一个长度为 n 的序列.他把这个序列的所有连续子序列都列了出来, 并对每一个子序列都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,最后他报出了第 k 小的平均值.你要做的就是模仿他的过程.[ 输入格式]第一行两个整数 n,k, 意义如题中所述.第二行 n 个正整数, 即为小 A 得到的序列.[ 输出格式]一行一个实数, 表示第 k 小的平均值, 保留到小数点后 4 位.[ 样例输入输出] ave.in ave.out 6 103 5 4 6…
终于A题啦鼓掌~开心~ 开考看完题后,觉得第二题很好捏(傻叉上线 搞到十一点准备弃疗了然后突然发现我会做第一题 于是瞎码了码,就去准备饭票了... 好了,停止扯淡(就我一个我妹子每天不说话好难受QAQ ---------------------------------------------------- T1 题意:huffman树的过程,只不过不贪心取,随机取,问最后的期望结果 好像很多人做对的样子.. 发现其实结果和每个数是什么是没有关系的,而且每个数对答案的期望贡献是相同的 于是我们可以…
典型树形dp 这里,我们应该看到一些基本性质: ①:如果这个边不能改(不是没有必要改),我们就不改,因为就算改过去还要改回来,显然不是最优的 注意:"不能改"是指边的性质和要求的相同而不包括对边的颜色没有要求的情况! ②:如果我们每翻转一条边,就认为将这条边的两个端点度数+1,那么不难看到,最后翻转的所有边构成的路径总数就是度数为奇数点个数的1/2 (性质②的证明:一条路径只会对两端的点产生度数上的影响,而中间的点都是+2,还是偶数,所以无影响) 接下来,我们进行dp: 记状态f[i]…
典型的状压思想 设0表示黑球,1表示白球,用一串01序列代表剩下的球的状态,记f[i]表示在i状态下取球的最大期望 那么可以利用记忆化搜索更新,每一层枚举可能拿走的球然后向下搜索,同时记忆化即可 在状态中删去一个点可以利用位运算实现 同时要注意一个问题,就是状态0010和状态010并不是相同的状态,但是如果不做处理在记忆化的过程中很可能把他俩算成相同的状态,所以我们在初始状态最前面放一个1,这样就可以区分上述两种状态了 还有就是本题卡常卡的很厉害,所以对比较小的状态我们用数组,对过大的状态再使用…