分类: 未分类

544 篇文章

P3520 [POI2011]SMI-Garbage(欧拉回路)
jisoo 可以证明,一定只需要考虑需要翻转的边 如果一种合法方案,需要翻转不需要翻转的边,那么就必然有一个过程是把这条边翻转过来, 那么这一条边有两种可能,要不它连着偶数个由需要翻转的边组成的环,要不是有许多同样的此类不翻转边组成的环 对于以上两种可能,可以发现都会出现需要翻转的边连成环的可能。 然后如此,就是求欧拉回路 #include<…
P1983 [NOIP2013 普及组] 车站分级
jisoo 这是一个拓扑排序,对于一条路线,中间没有走过的节点,一定等级低于路线上经过的节点 然后就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #…
P6155 修改
Jisoo 首先呢,可以知道,每个数都要去它右边第一个空位置 然后对于$a_i,a_j$,假如$b_i,b_j$是空位的话,那么无论$a_i,a_j$谁去哪里,总距离不变 那么显然让每一个数去它右边的第一空是最有的(拉开距离差距) 然后按照距离分配b #include<iostream> #include<cstdio> #…
P3174 [HAOI2009]毛毛虫
Jisoo $dp_i$表示节点i为头的最长毛毛虫 (我这里i的父节点呗算作腿的一条) 然后就可以不用特判地进行转移 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define int long l…
P2224 [HNOI2001]产品加工
Jisoo 这种背包是不是把一维扔进状态就都能做了啊 $dp_{i,j}$表示到了第i个任务的时候A机器工作了j时间,转移显然 有点卡时间,注意常数优化 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> …
P2851 [USACO06DEC]The Fewest Coins G
Jisoo 显然找硬币和付钱是两个过程 然而最多给多少钱呢 有应该找最多多多少呢? 方案一 时间绰绰有余,我们开的大一点 证明 找钱的数量不会超过$V_{max}^2$ #include<iostream> #include<cstdio> #include<algorithm> #include<cstr…
P4310 绝世好题
jennie 怎样处理呢 $O(n^2)$肯定不行 不如,二进制拆分一下 这样$do_i$表示第i位为1的最长长度 对于每一个数,如果他的某一个二进制位为1,那么他可以从之前这一位为1的状态转移过来,然后转移这一位为1的状态 #include<iostream> #include<cstdio> #include<al…
P2340 [USACO03FALL]Cow Exhibition G
Lisa 情商和智商和,这不就是个背包 怎样保证大于零呢,我们吧一个商作为维度存进去,另外一个商就是我们转移的值了 然后,直接背包 最后检查所有大于零的部分,统计就可以了 $dp_i=max(dpi,dp{i-s[i]+f_i})$ 注意一下负数要反着转移 然后就可以了 #include<iostream> #include<cs…
P5858 「SWTR-03」Golden Sword
Jennie 一个比较水的动态规划 $dp[i][j]=max(dp[i][j],dp[i-1][k])+a_i*jquad kin [j-1,j-1+s]$ 然后这个玩意可以用有限队列 #include<iostream> #include<cstdio> #include<algorithm> #includ…
P3842 [TJOI2007]线段
Jennie 很简单的东西 分左右端点讨论 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int n; int l[20005],r[20005]; int dp[2…