Luogu P2036 [COCI2008-2009 #2] PERKET】的更多相关文章

P4312 [COCI 2009] OTOCI / 极地旅行社 题目描述 不久之前,Mirko建立了一个旅行社,名叫"极地之梦".这家旅行社在北极附近购买了N座冰岛,并且提供观光服务. 当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走在各个冰岛之间.Mirko的旅行社遭受一次重大打击,以至于观光游轮已经不划算了.旅行社将在冰岛之间建造大桥,并用观光巴士来运载游客. Mirko希望开发一个电脑程序来管理这些大桥的建造过程,以免有不可预料的错误发生.这些冰岛从1到N标号.一开始时…
emmm-标题卡着长度上限- LCT板题-(ε=ε=ε=┏(゜ロ゜;)┛) CODE #include <cctype> #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; char cb[1<<15],*cs=cb,*ct=cb; #define ge…
原题地址:P4312 [COCI 2009] OTOCI / 极地旅行社/SP4155 OTOCI - OTOCI lct入门难度的题,十分弱智(小蒟蒻说lct是什么,能吃吗?) bridge操作判联通,用find,不同的话link一下 penguins修改点权,把这个点旋转到树根暴力修改并pushup excursion先判联通,如果联通输出点权之和 操作就是这样,简单有点像P2147 [SDOI2008]洞穴勘测 代码: #pragma GCC optimize("O3") #in…
上学路线_NOI导刊2009普及(6) 题目详见:上学路线_NOI导刊2009普及(6) 这是一道基础的DFS(深搜)题,堪称模板,是新手练习搜索与回溯的好题选. 大致思路:从(1,1)开始搜索,每次只能往上走或往右走一个格(遇到题目给出的障碍物则直接不走),一直到(a,b),再回来找另一条路.每到一遍(a,b)就让计数器tot+1,最后输出tot,即为最终方案总数. AC代码: #include<iostream> #include<cstdio> #include<cst…
题面 BZOJ传送门 Luogu传送门 分析 考虑如何最小割建图,因为这仍然是二元关系,我们可以通过解方程来确定怎么建图,具体参考论文 <<浅析一类最小割问题 湖南师大附中 彭天翼>> 那么我们来看看怎么解方程 设存在一对二元关系<x,y><x,y><x,y>,那么假设分在SSS一边表示不雇佣,TTT一边表示雇佣.先把总收益全部加起来,那么只要考虑会每种情况会在此基础上减去多少. 如果两个都雇佣 : a+b=A[x]+A[y]a+b=A[x]+A…
又是有关于\(1-n\)排列的题,考虑从大到小依次插入构造排列 对于第\(i\)个数(也就是\(n-i+1\)),只有当它插在当前排列最前面时才会使那个什么数的个数+1,而在最前面的概率为\(\frac{1}{i}\),所以插入\(i\)增加的什么数的期望个数为\(\frac{1}{i}\),所以答案就是\(\sum_{i=1}^n \frac{1}{i}\) 但是这题\(n\)有\(2^{31}-1\)那么多,,, 这时要用到一个新东西--调和级数 这个数就是\(\sum_{i=1}^n \f…
题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题)对于一个节点,如果左儿子的sum小于等于(R-L+1)/2,则答案不可能在左儿子中:右儿子同理.然后对有可能的儿子递归寻找答案,如果左右儿子都不可能,则不存在答案. 代码: BZOJ 3524: #include<cstdio> #include<cstring> #include&l…
二分答案+堆优Dijkstra 这个题有些巧妙. 首先,因为要在油量耗完之前跑到终点,所以我们可以用最短路.只要从\(s\)出发到\(t\),它的最短距离大于油量,我们就可以断定它一定走不通,直接输出\(-1\). 然后因为要求最大值最小,所以考虑二分答案.用一个数组来储存点的值从大到小的排序,然后边界范围设置 : \(L\)为\(s\)和\(t\)的中较大的拿一个的排名,\(R\)为n.为什么\(L\)要这样设置呢?因为\(s\)和\(t\)是必经的点,所以它们一定要选,所以最小值只能设为它们…
题目传送门 这道题可以使用dfs深搜实现,在每次递归深搜时要更新ans. #include<bits/stdc++.h> using namespace std; ,s=,b; ]; struct node{ int s,b; }a[]; void dfs(int k){ if(k==n) ans=min(ans,abs(s-b)); ;i<=n;i++){ ){ s*=a[i].s;b+=a[i].b; flag[i]=true; if(ans>abs(s-b)) ans=abs…
题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,-,n. 这个国家的政府修建了m条双向的公路.每条公路连接着两个城市.沿着某条公路,开车从一个城市到另一个城市,需要花费一定的汽油. 开车每经过一个城市,都会被收取一定的费用(包括起点和终点城市).所有的收费站都在城市中,在城市间的公路上没有任何的收费站. 小红现在要开车从城市u到城市v(1<=u,v<=n).她的车最多可以装下s升的汽油.在出发的时候,车的油箱是满的,并且她在路上不想加油. 在路上,每经过一个城市,她都要交一定的费用…