解题:SCOI 2008 配对】的更多相关文章

题面 如果没有两个数不能相同这个限制就两个数组排序后贪心即可.现在加上这个限制,注意到每个数组中的数是两两不同的,所以每次一定能在前面或后面一个数中找一个换过来,这样每次考虑相邻三个数转移就可以了,注意特判一下边界. #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; long long a[N],b[N],dp[N],n,…
题面 我们很容易想到差分约束,但是我们建出来图之后好像并不好下手,因为我们只能得到砝码间的大小关系,并不能容易地得到每个砝码的具体重量. 于是我们有了一种神奇的思路:既然得不到具体重量我们就不求具体重量了,只求出砝码间的关系即可,因为砝码只有三种还是可以讨论的.具体来说我们用$maxx[i][j]$表示$i-j$的最大值,$mini[i][j]$表示$i-j$的最小值,然后跑Floyd得出砝码间的关系,最后直接$n^2$枚举砝码检查即可 #include<cstdio> #include<…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 思路:15?好,状压,OK. 这是转移方程 if((s[k]&j)==s[k]) f[i][j]+=max(f[i+1][j],f[i+1][j|1<<(k-1)]+a[k]); else f[i][j]+=f[i+1][j]; 代码 #include <cstdio> #include <cmath> #include <iostream&g…
1079: [SCOI2008]着色方案 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2237  Solved: 1361[Submit][Status][Discuss] Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木块涂相同色显得很难看,所以你希望统计任意两个相邻木块颜色不同的着色方案.…
Problem Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关. 在这个奖励关里,系统将依次随机抛出 \(k\) 次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝物一共有n种,系统每次抛出这 \(n\) 种宝物的概率都相同且相互独立.也就是说,即使前 \(k-1\) 次系统都抛出宝物 \(1\)(这种情况是有可能出现的,尽管概率非常小),第 \(k\) 次抛出各个宝物的概率依然均为 \(\frac{1}{…
题面 拆点跑最大流 所有能跑出去的点连向汇点,容量为inf 原点连向所有初始有蜥蜴的点,容量为1 每根柱子拆成两个点“入口”和“出口”,入口向出口连容量为高度的边,出口向别的有高度的柱子的入口连容量为高度的边 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,M=,inf=1e9; int n,m,d,f,b,s,t,t1,…
\(\\\) \(Description\) 给出\(K\)种颜料各自的个数\(C_i\),每一个颜料只够涂一个格子,求将颜料用完,涂一排格子,每个格子只能涂一次的条件下,相邻两个格子的颜色互不相同的方案数对\(10^9+7\)取模的结果. \(K\in [1,15]\),\(C_i\in [1,5]\) \(\\\) \(Solution\) 想的map压缩状态量记搜挂了 想的容斥记搜求组合数排列数取反挂了 正解真是神仙计数题做的还是少,基本的思路模型还是没有. 注意到颜色相同的颜料性质是一致…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1076 [算法] f[i][S]表示当前第i次抛出宝物,目前集合为S,所能获得的最高分值 dp即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 110 << ; int i,j,k,n,x,s; int S[MAXN],c[MAXN]; double f[MAXN][MAXS]; inli…
早上的考试一道都做不出,被教做人,心态爆炸ing...... 题目描述: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立.也就是说,即使前k-1 次系统都抛出宝物1(这种情况是有可能出现的,尽管概率非常小),第k次抛出各个宝物的概率依然均为1/n. 获取第 i 种宝物将得到Pi分,但并不…
题面 洛谷要求输出方案,懒得写了,但是还是放一下链接看看吧 (虽然现在二分图已经过气了=.=) 要求最长反链,最长反链=最小链覆盖,先Floyd传递闭包之后链覆盖就变成了边覆盖,然后最小边覆盖=总点数-最大匹配 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,M=,inf=1e9; int n,m,s,f,b,t,t1,t2,t3,cnt,ans; *M],goal…