[CodeM初赛A轮]C

题解T在max和min之间无解。 考虑二分答案,然后判定很简单。 要注意一些坑点,比如解出来的体积小于0,以及没有进行任何二分判定等。 我的方法没过样例,但是过了这题……#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typ...
阅读(128) 评论(2)

[LibreOJ β Round]ZQC的拼图

题目描述ZQC 和他的妹子在玩拼图。她们有 n (1≤n≤100) n \ (1 \leq n \leq 100) n (1≤n≤100) 块神奇的拼图,还有一块拼图板。拼图板是一个 m×m (1≤m≤100) m \times m \ (1 \leq m \leq 100) m×m (1≤m≤100) 的正方形网格,每格边长为 1,如图所示。每块拼图都是直角三角形,正面为白色,反面为黑色,拼图放在...
阅读(62) 评论(0)

[JZOJ5136][SDOI省队集训2017]重排

题目大意做法按拓扑序倒序做。 设出边个数为k。 没有自环可以考虑k^2从大到小枚举权值v然后two pointer来计算P(v)表示>=v的概率,最后前缀相减即可。 注意不要写成k^2带log。 这里很麻烦。 有自环可以考虑二分+判定。 具体见代码。#include #include #include #define fo(i,a,b)...
阅读(53) 评论(0)

[JZOJ5124][SDOI省队集训2017]dierti

题目描述对于一棵有根树,定义一个点u 的k− 子树为u 的子树中距离u 不超过k 的部分。注意,假如u 的子树中不存在距离u 为k 的点,则u 的k−子树是不存在的。 定义两棵子树是相同的,当且仅当不考虑点的标号时,他们的形态是相同的(儿子的顺序也需要考虑)。给定一棵n 个点,点的标号在[1,n],以1 为根的有根树。问最大的k,使得存在两个点u ̸= v,满足u 的k− 子树与v 的k− 子树相...
阅读(98) 评论(0)

[bzoj3711]Druzyny

题目描述体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组。 第i个小朋友希望它所在的组的人数不多于d[i],不少于c[i],否则他就会不满意。 在所有小朋友都满意的前提下,求可以分成的组的数目的最大值,以及有多少种分组方案能达到最大值。神题我们考虑DP。 f[i]表示将前i个人分组的最大值,-1表示不可能,g[...
阅读(107) 评论(0)

IQ测试

题目描述PTY进行IQ测试,测试的项目是判断一个序列是否是另外一个序列删除若干个数字之后得 到的,PTY 深知自己的IQ 低于sqrt(-1),所以他请来了智商超高的你来替他解决问题。乱做水题#include #include #define fo(i,a,b) for(i=a;i=b;...
阅读(108) 评论(0)

[bzoj3492]Binary Dodgeball

结论我把乘2^k变成除以的话和原游戏当然是等价的。 这样的话我们把每个数二进制都写出来,每次就是去掉末尾几个0。 按照除lowbit部分分组,不同组之间互相独立。 每组的游戏可以这样描述: 有一群石子堆,每次从一个石子堆拿走至少一颗石子,若存在两堆相同的石子堆,则一起移走。 没有后面那个的话很容易知道就是nim游戏。 但其实我们可以把移走的两堆绑在一起,那么一个人操作其中一堆,另一个人就...
阅读(56) 评论(0)

[bzoj3072]Two Cakes

题目描述有两个长度为n的排列(1<=n<=1,000,000),然后你要再次写出一模一样的两个排列,于是你的左手和右手同时拿笔开始写。但是为了锻炼自己的协调能力,你不想左手和右手同时在写一模一样的数,每写一个数你就需要花1ms的时间,那么你要写完这两个序列至少要花多久时间呢?注:每个序列同时只准用一只手写。DP要注意到这是两个排列。。 最朴素的dp是设dp[i,j] 如果a[i]!=b[j],肯...
阅读(90) 评论(0)

[bzoj3721]Final Bazarek

题目描述有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价。做法首先肯定要取一个奇数,所以一定取最大的奇数。 一个奇数都没有可以直接-1了。 接下来奇数只能两个两个取,而偶数可以一个一个取。 而且肯定从大到小,所以先排个序。然后num[x]表示取x对奇数前缀和,sum[x]表示取x个偶数前缀和。 假设要取k个,而且我们取了x对奇数,贡献是num[x]+sum[k-2x] 所...
阅读(79) 评论(0)

第K大

题目描述一棵具有n个节点的树,每条边(u,v)有一个边权w(u,v)。定义d(i,j)表示离点i第j近的点的距离,且d(i,1)=0。对于每个点i,给你一个Ki,要对每个点求出d(i,Ki)。点分治二分转为判定性问题。 提前预处理点分治树方便询问即可。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) u...
阅读(131) 评论(0)

[51nod 1184]第N个质数

题目大意找第n个质数,n<=1e9乱搞Drin_E大爷教我的洲阁筛。 但是好像不是正统。 我们可以二分,所以只是判断质数个数的问题。 设c[i]表示第i个质数。 f[i]表示i以内质数个数。 设g(n,m)表示n以内不被c[1~m]整除的数个数。 设q=√n,那么n以内质数个数为f[q]+g(n,f[q])-1(1不是质数要减去) 显然g(n,m)=g(n,m-1)-g(n/c[m],...
阅读(601) 评论(0)

Tree

题目大意有一颗点权树,选择k条点不相交的树路径,价值为覆盖点的点权和除以k+1。 现在你可以给每个点的点权由x变成(x+c)%lim。0<=c<=m。 保证m<lim,x<limm<lim,x<lim。 求最大价值。分数规划先考虑不改变点权或是说点权已知的做法。 怎么做都发现如果要求用几条树路径的最大价值,都无法很快的做。 因此正解肯定不用求用多少每条树路径的最大价值。 考虑分数规划。二...
阅读(131) 评论(0)

最长不下降子序列

题目大意a1=t0 an=(A*an-1^2+B*an+C)%D(n>1) 求该序列最长不下降子序列长度暴力n不是很大显然可以暴力。 n很大呢? 那就不断减循环节长度直至减到一个阈值内,再暴力。 正确性显然,只要阈值不要设太小。#include #include #include #define fo(i,a,b) for(i=a;i<=...
阅读(80) 评论(0)

[51nod 1294]修改数组

题目描述给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数?做法对于i和j(i<ji=j-i。 我们把a[i]变成a[i]-i,在新数组上做最长不下降序列表示最多可以不修改几个数。 由于还要求是正整数,我们可以在数组最前面引进一个0,并要求这个0一定不能修改即可。#include...
阅读(94) 评论(0)

[51nod 1309]Value of all Permutations

题目大意长度为N的整数数组A,有Q个查询,每个查询包含一个数M,对A的所有不同排列,执行find函数(需用到查询中的M),你来计算find函数的返回值的和。由于结果很大,输出Mod 1000000007的结果。find(int permutation_A[], int M) { x = Length(permutation_A) sum = 0 for(i = 0; i <...
阅读(75) 评论(0)
35条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:163738次
    • 积分:8221
    • 等级:
    • 排名:第2254名
    • 原创:640篇
    • 转载:5篇
    • 译文:0篇
    • 评论:159条
    公告
    幻梦终醒,本无不散之宴,却不悔付此华年。
    最新评论
    文章分类