传送门 唉我觉得这题数据范围1e5都能做啊... 居然只出了2000 考完听zxyzxyzxy说我的贪心可以卡但过了? 可能今天本来是0+10+00+10+00+10+0只是运气好T1T1T1骗了100pts100pts100pts吧233. 下面讲讲贪心: 令wi=∏i=1kpiaiw_i=\prod_{i=1}^kp_i^{a_i}wi​=∏i=1k​piai​​ 令A=∑aipi是好质数,B=∑ai,pi是坏质数A=\sum_{a_i} p_i是好质数,B=\sum_{a_i},p_i是坏…
传送门 显然的贪心题啊...考试没调出来10pts滚了妙的一啊 直接分别用堆贪心出洗完第iii件衣服需要的最少时间和晾完第iii件衣服需要的最少时间. 我们设第一个算出来的数组是aaa,第二个是bbb,然后令ccc数组是bbb的一个任意排列. 于是要求minminmin{maxmaxmax{a1+c1,a2+c2,...al+cla_1+c_1,a_2+c_2,...a_l+c_la1​+c1​,a2​+c2​,...al​+cl​}} 里面东西跟排序不等式很像啊 ,于是aaa正序bbb倒序加起…
传送门 唉蒟蒻又退化了,这道sb题居然做了20min,最后发现是updcovupdcovupdcov写成了updaddupdaddupdadd我还能说什么233233233 就是让你转边权为点权之后,支持树上路径覆盖,单点覆盖,路径加,求路径最大. 直接乱码一发居然AAA了? 贴代码了(稍微有点长): #include<bits/stdc++.h> #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p…
题目链接:http://codeforces.com/problemset/problem/402/D 题意: 给你一个长度为n的数列a[i],又给出了m个“坏质数”b[i]. 定义函数f(s),其中p是s的最小质因子: f(1) = 0 f(s) = f(s/p) + 1 (p不是坏质数) f(s) = f(s/p) - 1 (p是坏质数) 你可以任意次数地进行操作:给a[1 to i]的每个数都除以gcd(a[1 to i]). 问你 ∑ f(a[i)最大为多少. 题解: 函数f(s)的实际…
传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前几位跟nnn相同,后面比nnn小的方案数. 这个显然是可以用组合数算的. 注意nnn自己的也要算进贡献. 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod=10000007; l…
传送门 状压dp入门题. 按照题意建一个图. 要求的就是合法的链的总数. 直接f[i][j]f[i][j]f[i][j]表示当前状态为jjj,下一位要跟iii连起来的方案数. 然后从没被选并且跟iii连通的点转移就行了. 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=20; bool tran[N][N]; int n,K,up,s[N]; ll f[N][1<<…
传送门 g[i][j][k][l]g[i][j][k][l]g[i][j][k][l]表示将区间l,rl,rl,r变成最小值等于kkk,最大值等于lll时的花费的最优值. f[i][j]f[i][j]f[i][j]表示取掉区间l,rl,rl,r的最优值. 考虑ggg数组的转移. g[i][j+1][min(k,w[j+1])][max(l,w[i+1])]=min(g[i][j+1][min(k,w[j+1])][max(l,w[i+1])],g[i][j][k][l])g[i][j+1][mi…
传送门 排列组合入门题. 令X=p1a1p2a2..pkakX=p_1^{a_1}p_2^{a_2}..p_k^{a_k}X=p1a1​​p2a2​​..pkak​​ 那么答案1就等于∑i=1kai\sum_{i=1}^ka_i∑i=1k​ai​ 答案2等于(∑i=1kai)!∏i=1ka[i]!\frac {(\sum_{i=1}^ka_i)!} {\prod_{i=1}^ka[i]!}∏i=1k​a[i]!(∑i=1k​ai​)!​ 边分解质因数边统计就行了. 代码: #include<io…
传送门 直接先看最多能够凑出几个. 然后可以得到一个结论就是如果保证所有页数之和是小于等于A+BA+BA+B的一定都对应着一种合法方案. 如何构造? 我们对于第一天的AAA个小时,从大向小选,如果当前的能选就选,不能选的就分给第二天. 这样一定能构造出合法解. 代码: #include<bits/stdc++.h> using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))c…
[POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作.每次询问独立,即每次询问不会对序列进行修改. n<=1e6 修改数值不好掌握.我们离线读入询问,把所有的s,a离散化下来. 发现,对于一个Z c s,我们只要判断能不能操作.所以只关心大小关系. 大于等于s的数可以在s次中都参与贡献,小于s的数只能部分参与贡献. 设cnt为不小于s的数的…