01 2018 档案

摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用map模拟一下映射就好了。 【代码】 cpp include using namespace std; int n,m; map dic; int main(){ ifdef LOCAL_DEFINE freopen("rus 阅读全文
posted @ 2018-01-30 11:11 AWCXV 阅读(148) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 这个数列增长很快的。 直接暴力模拟看看是不是它的一项就好了 【代码】 cpp include using namespace std; int n; bool ff(int x){ if (x==1) return true; 阅读全文
posted @ 2018-01-30 11:10 AWCXV 阅读(108) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 f[x][y][z][2] 表示第一个人到了点x,第二个人到了点y,当前轮的字母(1..26),当前轮到谁走的情况下,谁赢。 写个记搜就好。 完全是模拟走的过程。。 【代码】 cpp include using namespac 阅读全文
posted @ 2018-01-30 11:08 AWCXV 阅读(173) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 左括号看成1 右括号看成 1 设置l,r表示前i个数的和的上下界 遇到 左括号 l和r同时加1 遇到右括号 同时减1 遇到问号 因为问号可以为1或 1所以l减1而r加1 如果在某个时刻r小于0了 就说明再也不能继续了 因为说明左 阅读全文
posted @ 2018-01-30 10:54 AWCXV 阅读(175) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每个数字有3种选择。 1.选中它。 2.选中它且加阶乘符号 3.不选中它(即计算和的时候不考虑它) 如果我们直接暴力写的话复杂度是325 寻求优化。 我们可以用Meet in the middle这个方法。 先求出1. 阅读全文
posted @ 2018-01-29 15:59 AWCXV 阅读(112) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 假设现在每个人收到的信息条数存在cnt里面 那个人猜的条数为target 则如果cnt[i]==target[i] 则我们就让第i个人来就好了。 因为s[i][i]=1恒成立。 所以第i个人它的cnt个数肯定递增了。 因此第i个 阅读全文
posted @ 2018-01-29 15:26 AWCXV 阅读(123) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用cnt[i]记录数字i出现的次数就好。 然后i从1e6逆序到1 如果cnt[i+1]和cnt[i] 0同时成立的话。 那么得到一条边。加入到vector中。 然后 如果cnt[i] 1 则cnt[i] =2 加入i到vecto 阅读全文
posted @ 2018-01-29 11:44 AWCXV 阅读(86) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 m比较小 多重背包。 但每个物品的数量可能很多。 所以加一个二进制优化就好了。 把每个物品的数量转化成二进制。 转换成01背包的问题。 (物品的数目大概在1000 log2(1e6)的样子 然后容量是1000. 这时候就可以做了 阅读全文
posted @ 2018-01-29 11:41 AWCXV 阅读(131) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 遍历i从1..n 看看x%i==0以及x/i 【代码】 cpp include using namespace std; int main() { int n,x; cin n x; int ans = 0; for (int 阅读全文
posted @ 2018-01-29 11:37 AWCXV 阅读(79) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 做这题之前先要知道二叉排序树的一个性质。 就是它的中序遍历的结果就是这个数组升序排序。 (且每个节点的左边的节点都是比这个节点的值小的,每个节点的右边的节点都是比这个节点的值大的。 则我们把原数组排序。 然后在这里面找到原来数组 阅读全文
posted @ 2018-01-27 12:30 AWCXV 阅读(155) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 题目的图吓人。 找下规律就会发现从内到外是1,6,12,18 即1,1 6,2 6,3 6... 即1+6 (1+2+3+...) 等差求和公式。 【代码】 cpp include define ll long long usi 阅读全文
posted @ 2018-01-27 12:26 AWCXV 阅读(126) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 判断sum/2这个价值能不能得到就可以了。 则就是一个01背包模型了。 判断某个价值能否得到。 f[j]表示价值j能否得到。 f[0] = 1; 写个01背包就好 【代码】 cpp include define ll long 阅读全文
posted @ 2018-01-27 12:24 AWCXV 阅读(190) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 排序,逆序。贪心选较大的就好。 【代码】 cpp include define ll long long using namespace std; const int M =1e5; int f[M+10],a[1000+10] 阅读全文
posted @ 2018-01-27 12:22 AWCXV 阅读(141) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 肯定是放在m 1或者m+1的。 (m 1是左边的点都离a最近,而m+1则是右边的点都离他最近。 看看哪个更好就行 【代码】 cpp include define ll long long using namespace std; 阅读全文
posted @ 2018-01-27 12:21 AWCXV 阅读(103) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 n个物品,每个物品都有无限个。 第i个物品的价格是一样都,都是ai 让你从中选出恰好k个物品 问你选出的物品的总价值 有多少种不同的可能。 【题解】 可以用f[j]表示物品的总价值为j最少需要选多少个物品。 for (int i = 1;i 【代码】 c 阅读全文
posted @ 2018-01-26 21:43 AWCXV 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 先搞一条a到b的路径 a c x3 x4 x5....xn 2 d b 然后第二个人的路径可以这样 c a x3 x4 x5...xn 2 b d 也即加两条边[a,x3] [xn 2,b] 所以最少只需要n+1条边。 (尽量让 阅读全文
posted @ 2018-01-26 15:52 AWCXV 阅读(119) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 看看什么时候t[i] t[i 1] 15。 输出t[i 1]+15就好。 不存在这样的i就输出min(t[n]+15,90) 【代码】 cpp include using namespace std; int n; int t[ 阅读全文
posted @ 2018-01-26 12:14 AWCXV 阅读(144) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 O(n^2)枚举每一个区间。 然后维护这个区间里面的“统治数字"是什么。 对于每个区间cnt[统治数字]++; 【代码】 cpp include using namespace std; const int N = 5000+1 阅读全文
posted @ 2018-01-26 12:12 AWCXV 阅读(82) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 根据题意:先明确以下规则: 1.如果两个点之间没有边,那么这两个点只能是a或c,且不能相同 2.如果两个点之间有边,那么他们之间的差的绝对值 【代码】 cpp include using namespace std; const 阅读全文
posted @ 2018-01-26 12:10 AWCXV 阅读(131) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 在做之前需要了解一个知识点。 就是如果一个字符串s是一个a循环串。 (字符串的长度设为n,下标从1开始 那么s[1..n a]和s[1+a..n]是相同的. 且这是充分必要条件。 可以看这篇文章 "链接" 显然1..n a就对应 阅读全文
posted @ 2018-01-25 17:49 AWCXV 阅读(129) 评论(0) 推荐(0) 编辑
摘要:【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 概率DP; 设f[i][j]表示前i个单位时间,j个人进入房间的概率是多少 然后想一下和i-1秒的时候要怎么转移就可以了。 i-1秒可能进入了一个人->f[i][j]+=f[i-1][j-1]*p i-1秒没有人进去-> ①已经有n 阅读全文
posted @ 2018-01-25 13:21 AWCXV 阅读(124) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举第一种方法。 剩下的全都个第二种方法。 看看能组成多少个队伍就可以了。 【代码】 cpp include define ll long long using namespace std; int n,m; int main( 阅读全文
posted @ 2018-01-25 12:00 AWCXV 阅读(111) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 开3个map, 存在map里面; 然后迭代第一个和第二个map; 分别与第二个和第三个map比较就可以了 【代码】 cpp include using namespace std; const int N = 1e5; map 阅读全文
posted @ 2018-01-25 11:59 AWCXV 阅读(99) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 统计大写和小写的个数。 比较答案。输出即可。 【代码】 cpp include using namespace std; string s[10]; map dic; int inc[300]; int main() { for 阅读全文
posted @ 2018-01-25 11:57 AWCXV 阅读(154) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 最近公共祖先。 (树上倍增 一开始统计出每个子树的节点个数_size[i] 如果x和y相同。 那么直接输出n. 否则求出x和y的最近公共祖先。z (假定y的深度大于x 【1】如果z等于x或y中的一个。 那么久就找到x..y的路径 阅读全文
posted @ 2018-01-25 11:56 AWCXV 阅读(157) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 处理出起点到任意点的最短路以及最短路条数= dis[0][i],cnt[0][i] 然后 把所有的边反向 处理出在反图上终点到任意点的最短路以及最短路条数= dis[1][i],cnt[1][i] dis数组的初值为 1,表示无 阅读全文
posted @ 2018-01-24 16:29 AWCXV 阅读(190) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 状态压缩动规。 可以写成记忆化搜索的形式。 f[bit][p] 表示选取的菜的情况为bit(用0..2^(N) 1的二进制形式表示各个菜有没有选 然后上一道菜选的是第p道菜,剩下的菜选够m道的话能够获得的最大满意度. 显然这两个 阅读全文
posted @ 2018-01-24 13:05 AWCXV 阅读(126) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 2^y可以由两个2^(y 1)相加得到。 则有一个贪心的策略。 就是2^x尽量都变成2^(x+1) (即能够凑就尽量凑) 如果x还有剩余的话。答案递增1 而凑上去的数字,显然是可以合并成1步操作的。因为他们的和就是2^(x+1) 阅读全文
posted @ 2018-01-24 12:36 AWCXV 阅读(139) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 让你在n的因子里面找一个最大的数字x 且x的因子全都不是完全平方数(y^2,y 1) O(sqrt(n))找出n的所有因子。 然后O(sqrt(n))处理出1..N内的所有完全平方数。 用map存 对于x,看看它的因子里面有没有 阅读全文
posted @ 2018-01-24 12:32 AWCXV 阅读(119) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 连续两个如果不全是0就递增cnt 【代码】 cpp include using namespace std; int n,m; int main() { cin n m; int cnt = 0; for (int i = 1; 阅读全文
posted @ 2018-01-24 12:28 AWCXV 阅读(83) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 对m个串建立一棵字典树。 然后对主串。 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 (这时又重新从根节点开始重新匹配 每次匹配最多只要往下走50步。 写个递归的过程就好。 【代码】 阅读全文
posted @ 2018-01-23 13:21 AWCXV 阅读(135) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举序列的头两个数字是什么 O(N^2) 然后头两个数字确定之后。 f[3],f[4]..就确定了 只需查看f[3],f[4]..是不是存在就好了。 但是这样复杂度看起来是O(N^3)的了。 其实不然,a[n] = a[n 1] 阅读全文
posted @ 2018-01-23 12:20 AWCXV 阅读(99) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 1 2 3 ... n中末尾0的个数 只会由素因子2和5的个数决定且等于 Min{cnt[2],cnt[5]} 且素因子2的个数一定会比5多; 所以n!的末尾0的个数 等于for (int i = 1;i 【代码】 cpp in 阅读全文
posted @ 2018-01-23 12:10 AWCXV 阅读(99) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 先求出c b x的所有可能 存在map里面 然后枚举y看看a y在不在map里面 在的话就有解。 这样复杂度是O(Nlog2N)的 比直接两层循环枚举的O(N2)复杂度要来的好 这种方法也叫"中途相遇法" 【代码】 阅读全文
posted @ 2018-01-23 12:05 AWCXV 阅读(116) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 会发现每个环可以操作的次数是固定的。 (环的大小 1 也就是说一旦环确定了。其实结果就已经确定了。 则直接看操作总数的奇偶性就可以了。 【代码】 cpp include define long long using namesp 阅读全文
posted @ 2018-01-23 12:01 AWCXV 阅读(99) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 模拟。 【代码】 cpp include using namespace std; int main(){ ifdef LOCAL_DEFINE freopen("rush_in.txt", "r", stdin); endif 阅读全文
posted @ 2018-01-23 11:51 AWCXV 阅读(97) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 贪心。 把所有的区间按照右端点为第一关键字,左端点为第二关键字升序排。 然后令now = a[i].second. (now即当前的连续区间的最右端点 即第一个区间的右端点。 第一个点就应该放在这个地方。 然后对于第i+1个区间 阅读全文
posted @ 2018-01-22 17:34 AWCXV 阅读(123) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 对于1操作 令len = r l+1 等价于查找l..r这个范围内 x的倍数的个数 是否大于等于len 1 也即l..r这个范围内 不是x的倍数的个数 小于等于1个 (因为 如果改的话,肯定是把那个数字改成x ,其他n 1个数 阅读全文
posted @ 2018-01-22 16:28 AWCXV 阅读(159) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 记录每个数字出现的次数cnt[x]; (大于1e6的直接忽略) 另外用一个数组z[1e6] 然后for枚举x 第二层for枚举x的倍数(倍数不超过m) 即for (int i = x;i 【代码】 cpp include usi 阅读全文
posted @ 2018-01-22 14:10 AWCXV 阅读(116) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 考虑任意两个字符串(a,b) 假设a在b的前面 那么如果a+b =b+a 这里的+表示字符串的链接 那么显然需要交换a,b的位置。 这样能让最后结果的字符串的字典序更小一点。 把这个条件写在SORT的CMP函数里面 调用一下之后 阅读全文
posted @ 2018-01-22 14:02 AWCXV 阅读(122) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写个前缀和 和 一个后缀和。 (即前i个字符A所代表的数字的和以及前i个字符B所代表的数字的和。。 然后枚举前i个字符翻转。 求B对应数字的最大值 枚举i..n这些字符翻转 求B对应数字的最大值 两个同时求最大值就是答案了。 【 阅读全文
posted @ 2018-01-22 14:00 AWCXV 阅读(110) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 知道题意之后就是一个模拟的过程了。 用int now记录当前苹果的个数。bool flag记录是否有小数(即半个苹果) (这样处理为了防止double精度误差 根据half 和halfplus的规则,变化now和flag即可。 阅读全文
posted @ 2018-01-22 13:56 AWCXV 阅读(120) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 会发现。 进行一次操作过后。 得到的数字肯定是 【代码】 cpp include define ll long long using namespace std; const int N = 1e3; const ll MOD 阅读全文
posted @ 2018-01-21 04:11 AWCXV 阅读(224) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 最大值出现次数是偶数。 那么就取次大值。 次大值也是偶数? = 再次 因为你绝对不能取偶数个的。 取了对方就总是能面对一个奇数的情况了。 则对面总是能拿走最后一个了。 【代码】 cpp include using namespa 阅读全文
posted @ 2018-01-21 04:05 AWCXV 阅读(259) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 N 1000暴力就好 【代码】 cpp include using namespace std; const int N = 1e3; int n,a[N+10]; bool is(int x){ for (int i = 0; 阅读全文
posted @ 2018-01-21 04:03 AWCXV 阅读(185) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 找比n 1大的最小的素数x 1 2,2 3..(n 2) (n 1)长度都为1 然后(n 1) n长度为(x (n 2)) 然后其他边长度都设为x+1就好了。 这样就能满足题意了。 【代码】 cpp include define 阅读全文
posted @ 2018-01-20 09:11 AWCXV 阅读(196) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 把n分解成二进制的形式。 n=2^a0+2^a1+...+2^a[q 1] 则固定就是长度为q的序列。 要想扩展为长为k的序列。 可以把2^x转化为2^(x 1)+2^(x 1)的形式. 这样序列的长度就+1了 它要求max{a 阅读全文
posted @ 2018-01-20 09:04 AWCXV 阅读(227) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 暴力往前走x分钟就好。 直到出现7为止。 【代码】 cpp include using namespace std; int hh,mm,x,cnt; bool find7(){ if (hh%10==7 || (hh/10)= 阅读全文
posted @ 2018-01-20 08:47 AWCXV 阅读(316) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 找到任意一个环。 然后枚举删掉其中的某一条边即可。 (因为肯定要删掉这个环的,那么方法自然就是删掉其中的某一条边 (其它环,如果都包括这条边,那么就可以,否则,某个环不包括那也没办法,自然就无解了。 这样枚举的边的数目最多是50 阅读全文
posted @ 2018-01-14 09:53 AWCXV 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 //从大到小枚举第i(1..len1)位 //剩余的数字从小到大排序。 //看看组成的数字是不是小于等于b //如果是的话。 //说明第i位就是选这个数字了。 //接下来枚举下一位。 【代码】 cpp include defin 阅读全文
posted @ 2018-01-14 07:22 AWCXV 阅读(220) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 分类在区间里面和左边、右边三种情况。 看看l的左边有没有标签、r的右边有没有标签。 就能做完了。 【代码】 cpp include using namespace std; int n,pos,l,r; int main(){ 阅读全文
posted @ 2018-01-14 07:20 AWCXV 阅读(181) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举用哪一个桶就好 【代码】 cpp include using namespace std; int n,k,x; int main(){ ifdef LOCAL_DEFINE freopen("rush_in.txt", " 阅读全文
posted @ 2018-01-14 07:17 AWCXV 阅读(117) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 二分长度。 显然长度越长。就越不可能。 二分的时候。可以不用管精度。 直接指定一个二分次数的上限就好。 判断长度是否可行。直接用贪心就好。 贪心(排序区间,尽量让新的区间右端点靠左一点。以便后面的区间有放的地方。 最后得到小数。 阅读全文
posted @ 2018-01-11 20:27 AWCXV 阅读(166) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举1的位置在i 往右摆成一排。 a[i+1]..a[n]..a[1]..a[i 1]变为有序的 寻找循环节,每个循环节的长度 1是必要的步骤数 获取必要的步骤数,取最小值。 O(n^2) 往左排成一排 同样的方法处理就好 【代 阅读全文
posted @ 2018-01-11 15:39 AWCXV 阅读(102) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 结束时间比较早的,就早点开始做。 所以,将n件事情,按照结束时间升序排。 然后对于第i件事情。 尽量把它往左排。 即t+1..t+a[i].q 然后如果发现t+a[i].q 【代码】 cpp include using name 阅读全文
posted @ 2018-01-11 14:24 AWCXV 阅读(136) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每个村庄都有一个范围[li..ri] 只要在这个范围内放点都可以“支配”这个村庄。 则问题就等价于线段上有n个区间。 让你选择最少的点。 使得每个区间内都有一个点。 将所有的区间按右端点升序排。其次左端点升序。 然后对于第一个区 阅读全文
posted @ 2018-01-10 21:46 AWCXV 阅读(121) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 证明:前i个数一定能凑够1..sum[i]中的所有数字 i=1时显然成立。 现在假设i =2时结论成立 即前i个数字能凑出1..sum[i] 令k=i+1; 现在证明前i+1个数字能凑出1..sum[i+1] 即用前i个数字和数 阅读全文
posted @ 2018-01-10 15:57 AWCXV 阅读(132) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 感觉最大度数|1就是最多需要的个数了。 就贪心一下。 然后模拟染色的过程就可以了。 (贪心染色就可以了 (看看周围哪个颜色没有,就用它) k在dfs之前忘记判断是不是奇数了。。。。 以及忘记清空g 【代码】 cpp includ 阅读全文
posted @ 2018-01-10 13:27 AWCXV 阅读(163) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 double千万不要用==判断相等。。。 而且两个保留2位有效数字的数字x,y 判断它们相等应该这样。 int temp1 = round(x 100.0),temp2 = round(y 100.0); temp1==temp 阅读全文
posted @ 2018-01-09 22:38 AWCXV 阅读(172) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 可以考虑把所有的题目按照ai排序。 然后顺序考虑最后做出来的题目个数和第i道题目的ai一样。 则1..i 1这些题目就没有用了。 值考虑i..n这些题目就可以了。 显然考虑ti最小的若干项。 使得它们的时间和=i的题目(只要枚举 阅读全文
posted @ 2018-01-09 10:12 AWCXV 阅读(188) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 处理出凑够2^j最少需要花费多少钱。 即试着把第i种物品买2^(j i)个,看看会不会更便宜 记录在huafei[0..31]中 然后对于L; 把它转成二进制。累加二进制中对应为1的地方的对应huafei (如果某个高位的1不加 阅读全文
posted @ 2018-01-09 09:57 AWCXV 阅读(213) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写个dfs看看是不是每个节点都有3个叶子节点就可以了。 【代码】 cpp include using namespace std; const int N = 1e3; int n; vector g[N+10]; bool o 阅读全文
posted @ 2018-01-09 09:50 AWCXV 阅读(108) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 当a=1e8的时候,直接输出m就可以了 【代码】 cpp include define ll long long using namespace std; ll n,m; int main(){ ifdef LOCAL_DEFI 阅读全文
posted @ 2018-01-09 09:49 AWCXV 阅读(127) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 让你把排列1..n变换成对应的输入序列。 每次可以交换前两个数字,或者把第一个数字放到末尾去。 可以逆向考虑。 即把无序的序列变换成有序的. 则第二种操作就变为"把末尾的数字放到最前面去" 则可以这样。 如果a[0] a[1] 阅读全文
posted @ 2018-01-08 16:44 AWCXV 阅读(151) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 想把数字i从位置j移动到位置i 可以这样。 假设mov(x,y)表示将(x..x+len/2 1)和(x+len/2..y)交换。 则可以先进行mov(j,i 1)操作。 (如果(j,i 1)的长度为奇数,终点就变为i 2) 令 阅读全文
posted @ 2018-01-08 11:00 AWCXV 阅读(103) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 考虑删掉第i位。 则第i+1位就会取代第i位。 则肯定第i+1位比第i位大的话,才比较好。 则从小到大贪心删,找到第一个a[i+1] a[i]的i. 然后每次删掉这样的i就可以了。 【代码】 cpp / 1.Shoud it u 阅读全文
posted @ 2018-01-07 14:42 AWCXV 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 如果1的个数第一个串比第2个串多。 那么就无解。 否则。 找几个位置去凑1 优先找'?'然后才是0的位置 剩余的全都用swap操作就好 【代码】 cpp / 1.Shoud it use long long ? 2.Have y 阅读全文
posted @ 2018-01-07 10:44 AWCXV 阅读(140) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 统计需要的个数。 不够了,就买。 【代码】 cpp include define ll long long using namespace std; ll a,b,x,y,z,ta,tb; int main(){ ifdef L 阅读全文
posted @ 2018-01-06 10:41 AWCXV 阅读(148) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然10000..取到之后 再取一个01111..就能异或成最大的数字了。 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several sample(at 阅读全文
posted @ 2018-01-06 10:40 AWCXV 阅读(190) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 set1 set1;记录关键点 某个人怪物永远打不死了,第一维是时间,第二维是下标 int dic[1e5+10] //记录对应下标的怪物它此时此刻在何时打不死了 set2 set2;关键点2 有怪物要更新了的时间点,以及记录的 阅读全文
posted @ 2018-01-06 10:31 AWCXV 阅读(425) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 字符串排序后 显然是n/2 1和n/2这两个字符串进行比较。 设为a,b 找到第一个不相同的位置。 即0..i 1是相同的前缀,然后第i位不一样了。 则如果i是a的最后一位了。 那么直接输出a就好。 这样满足大于等于a且小于b 阅读全文
posted @ 2018-01-05 15:27 AWCXV 阅读(143) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每个背包只能装两个东西。 而且每个东西都要被装进去。 那么我们随意考虑某个物品。(不必要求顺序 这个物品肯定要放进某个背包里面的。 那么背包数递增。 那么剩余的空间。 只能装一个了。 要装谁呢? 肯定是尽可能装较大的.所以用up 阅读全文
posted @ 2018-01-05 11:33 AWCXV 阅读(133) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举第一段的范围[0..i] (0 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several sample(at least therr) yourse 阅读全文
posted @ 2018-01-04 21:24 AWCXV 阅读(133) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 尺取法。 假设现在取[l..r]这一段。 然后发现累加的和小于0了。 那么方法只能是不走l..l+1这一段了 即delta递减(p[l] q[l]); 直到delta =0为止。 某个时刻如果发现r+1==l 或者l==1且r= 阅读全文
posted @ 2018-01-04 12:13 AWCXV 阅读(213) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 规律+递归题 f[k][i] k时刻前i行的红气球个数 i2^(k 1) f[k][i] = 2 c[k 1] + f[k 1][i 2^(k 1)]; c[k]表示k时刻红气球个数 显然k时刻有3^k个红气球 【代码】 cpp 阅读全文
posted @ 2018-01-04 10:24 AWCXV 阅读(118) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 就是合并果子。。 每次都合并最小的就可以啦。 别忘了初始化 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several sample(at least t 阅读全文
posted @ 2018-01-04 09:00 AWCXV 阅读(155) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 二分最后的最大值的最小值。 得到ans 然后从后往前尽量划分。 如果发现不够分成k个。 那么就从第一个开始接着分restk个(每隔1个分1块 中间遇到之前分了的就直接跳过 【代码】 cpp / 1.Shoud it use lo 阅读全文
posted @ 2018-01-03 19:25 AWCXV 阅读(146) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 类似尺取法。 用set判断这段区间有没有重复的数字。 有的话,就把头节点的那个数字删掉,直到没有为止。 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test sev 阅读全文
posted @ 2018-01-03 11:03 AWCXV 阅读(110) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 考虑第一个店。 如果它要酒的话,只能从第二个店那里运过来。 这样,问题就转化成后n 1个店的问题了。 然后会发现,第二家店它的情况也是同样的。 即a[2] = a[1]+a[2]; 然后做相同的事情。a[2]的需求量只能从第3家 阅读全文
posted @ 2018-01-03 10:48 AWCXV 阅读(187) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然把问题分解成两个子问题。 x轴和y轴分别做。 即n个点要求第i个点在[li,ri]范围内。(ri 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test seve 阅读全文
posted @ 2018-01-03 09:18 AWCXV 阅读(106) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 两层 然后n n就够了 第一层类似 aaa.. bbb.. ccc.. ... 第二次则变成 abc.... abc.... abc.... .... 这样就能保证每个字母都和其他的字母有相邻的了。(不同层的相同位置 【代码】 阅读全文
posted @ 2018-01-02 21:41 AWCXV 阅读(122) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然中间相遇。 自己写了个hash处理一下冲突就可以了。 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several sample(at least th 阅读全文
posted @ 2018-01-02 19:52 AWCXV 阅读(135) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 从大到小安排。 显然想让第i大的数字归位 只要让他翻到最上面,然后再翻回来就ok了 即operate(pos[i]) operate(i) 【代码】 cpp / 1.Shoud it use long long ? 2.Have 阅读全文
posted @ 2018-01-02 16:56 AWCXV 阅读(118) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 迭代加深搜索。 可以想见最后深度不会很深吧。。 然后皇后之间互相攻击到是允许的。。 就这样 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several s 阅读全文
posted @ 2018-01-02 15:19 AWCXV 阅读(266) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 IDA 保证这次移动的方格不和前一次重复。 然后加一个8数码的剪枝就行了。 看看当前状态和目标状态有多少个地方是不一样的。 如果当前的步数加上它仍然比答案大。 显然可以剪枝。 因为不同的数目肯定小于等于要移动的数目; (每次移动 阅读全文
posted @ 2018-01-01 19:24 AWCXV 阅读(295) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 迭代加深搜索。 枚举最大层数。(也即改变的数字个数 然后枚举第一个改哪个数字,第二个改哪个数字。。 一定要注意字典序问题。 每次优先改成较小的字典序(也即顺序枚举 然后注意这个字符不改的情况。 不要算改变数。 最后改完之后。 只 阅读全文
posted @ 2018-01-01 12:00 AWCXV 阅读(303) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示