![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
枚举
Tz_rain
需要做的事情
解题 总结 巩固
解题三个步骤
量化 分析 实现
需要改变的三个问题
性格 心态 思考方式
不要再后悔
展开
-
SRM 548 KingdomAndPassword
题意:有一个老密码,新密码是老密码的一种排列(可能不变),新密码每位有一个限制数字,即该位不能使用该数字问:新密码是多少(以abs(old-new)为第一关键字,new为第二关键字升序排列后输出第一个排列)若无解输出-1 int A[M],B[M],n,C[M];bool ok; bool mark[2][1<<20]; ll ans1=-1,ans2=-1; void f原创 2017-01-21 22:32:33 · 349 阅读 · 0 评论 -
SRM 690 WolfHockeyTeamEasy
有2*n只狼,编号为0到2*n-1。他们拍照时会排成两行,每行n只狼。一张照片好看,必须满足每一行的最大编号大于等于k。每一张照片有一个特征序列,这个序列有n+2个元素,前n个元素分别是n列的列最大值,后两个元素分别是两行的行最大值。两张照片只有在特征序列不同时才被认为是不同的。他们想知道可以拍多少张好看而又不同的照片。const int M=2005,P=1e9+7; class WolfHock原创 2017-02-02 21:40:45 · 222 阅读 · 0 评论 -
SRM549 Div1 600
/* 对于每一个帽子有3个状态(1 没有开 2 开了有硬币 3 开了没有硬币) 由于题目有限制条件,如果我们每次转移的时候都判断一下太麻烦了 又因为帽子的摆放和硬币的是唯一的所以可以再最后判断 */ #include<bits/stdc++.h> using namespace std; const int M=15,INF=1555,N=1694323; int dp[原创 2017-04-13 20:00:36 · 262 阅读 · 0 评论 -
SRM593 Div1 450
令SS和TT为分成的两个集合。答案为 max(∑i∈Sbi−∑i∈Tai,∑i∈Tbi−∑i∈Sai) =max(∑i=0n−1bi−∑i∈T(ai+bi),∑i∈T(ai+bi)−∑i=0n−1ai) \begin{align} \max(\sum_{i \in S} b_i - \sum_{i \in T} a_i, \sum_{i \in T} b_i - \sum_{i \in S} a_原创 2017-04-12 20:48:24 · 268 阅读 · 0 评论 -
SRM589 Div1 450
/* 终态分析:和生活中一样一定是有两种齿轮同一个方向,另一个齿轮为连接这两个齿轮的辅助齿轮 于是我们可以分三中情况枚举 对于辅助的齿轮我们可以忽略因为它不会出现矛盾的情况 对于剩下的齿轮(构成了一个二分图)我们要构造一个集合使他们互不相连 即求二分图的最大独立集(最大独立集=总点数-最大匹配) 我们需要删除的齿轮即为最大独立集外剩下齿轮的一半 *原创 2017-04-12 20:02:36 · 249 阅读 · 0 评论 -
SRM559 Div1 550 Ear
/* 比较容易的枚举题 我们发现只要耳朵的顶点确定了其他的点都可以O(log_n)的推算 具体的方法:把枚举的点后得到连接延长后交x轴即可 */ #include<bits/stdc++.h> #define For(a,b,c) for(int a=b;a<=c;++a) using namespace std; const int M=305; double R[M]原创 2017-04-30 19:23:44 · 263 阅读 · 0 评论