- 博客(7)
- 收藏
- 关注
原创 BZOJ4381: [POI2015]Odwiedziny
题目大意:给你一棵树和一堆询问,每个询问是问从x到y的路径,从x开始每k个节点就加一次当前点权值,最后一步如果小于k就直接加上y的权值,问这条路径总权值是多少 看一眼数据范围猜可能是分块,然后就不会了..... 于是就去膜拜了Claris,果然是分块啊,不过题解好简短,没看懂 只能和xuruifan研究了半天,大概是这么一个思想 把询问按大于根号n和小于根号n分成两类 对于小于根
2016-04-30 19:01:17 1225
原创 BZOJ4379: [POI2015]Modernizacja autostrady
题目大意:给定一棵无根树,边权都是1,去掉一条边并加上一条新边,输出所有可能的新树的直径中的最小值和最大值 一看就知道肯定是treeDP了 我们可以考虑对于每一条边,假设把它删掉,会得到两棵小树 此时新树的最大直径肯定是把两个小树的直径连起来,使得L=L1+L2+1 而最小直径肯定是连接两个直径的中点,使得L≈max(L1,L2) 所以我们需要得知对于每条边两边的小树的直径分别是
2016-04-30 18:38:46 1365
原创 BZOJ4378: [POI2015]Logistyka
每个数对答案的贡献=min(a[i],s) 所以用树状数组维护小于等于每个数的权值和以及个数 每次对于一个s,把小于s的所有数加起来,再把大于s的当成s,统计一下贡献,看能否实现 #include #include #include #include #define N 2000010 using namespace std; struct ppp {long long siz,su
2016-04-29 16:07:11 972
原创 BZOJ4377: [POI2015]Kurs szybkiego czytania
题目大意:给定n,a,b,p,其中n,a互质。定义一个长度为n的01串c[0..n-1],其中c[i]==0当且仅当(ai+b) mod n 给定一个长为m的小01串,求出小串在大串中出现了几次。 首先很容易想到,当确定小串的第一位在大串当中的位置时,小串中所有数的值就都确定了 先不考虑0和1 不妨设x为小串第一个数实际的值 则我们可以知道小
2016-04-29 15:13:46 1302
原创 BZOJ 3750 [POI2015]Pieczęć
题目大意:给你一个图案和一个印章,问能不能恰好用这个印章印出这个图案,即不能重合也不能印到纸的外面 这套POI最水的题 暴力就好了,如果可行的话,图案中的第一个有墨水的地方一定也是印章上第一个有墨水的地方,然后暴力盖上印章,把被盖上的地方变成没有墨水就好了 时间复杂度O(N*M) #include #include #include #define N 1010 using
2016-04-29 14:57:09 1163
转载 BZOJ 3748: [POI2015]Kwadraty
Orz Claris http://www.cnblogs.com/clrs97/p/4608345.html #include #define N 507 typedef long long ll; ll n,l=12,r=1442250,mid,t,ans; int i,j,v[N],sum[N],f[N]={0,1,0,0,2,2,0,0,0,3,3,0,0
2016-04-29 14:47:32 1004
原创 BZOJ 3747: [POI2015]Kinoman
题目大意:每个点有一个权值和一个颜色,每种颜色有一个得分,每个区间的得分为这个区间内只出现过一次的颜色的得分总和,求最大得分 说个O(nlogn)的做法吧 先预处理出对于每个节点,下一个跟他相同颜色的点的位置 然后枚举最后选的那个区间的左端点r,用一颗线段树记录对于每个r,这个区间的得分是多少 当左端点l向右移时,设当前左端点颜色为i,相当于把以l到nxt[i]-1为结尾的区间的得
2016-04-29 14:18:33 1307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人