随笔分类 - 思维
摘要:1 /*uva11134 2 在N*N(113 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #define maxn 501022 using namespace std;23 24 int N;25 struct L1{26 int l,r,k;27 bool operatorX.l;else return r>X.r;35 }36 };37 int posX[maxn*2],posY[maxn*2],pos[maxn*...
阅读全文
摘要:1 /* 2 LA 3177 3 《训练指南》 4 思维的考察,积累下来,锻炼思维感。 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #d...
阅读全文
摘要:1 /*UVA10905 思维 2 题目大意: 3 给定n个正整数,你的任务是把它们练成一个最大的数 4 思考: 5 这道题目应该是在考察归纳的思维吧 6 我一开始的思路是将两个字符串按位比较,当位数有剩余时,再分类讨论大小。 7 但是这样写,细节上很容易出错. 8 但是,如果换一种方法,忽略细节,直接连成s1+s2和s2+s1,这样尾数一定相同,直接按位比较,若s1+s213 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #define maxn 11021 using.
阅读全文
摘要:LA3644易爆物【题目描述】:有一些简单化合物,每种化合物由两种元素组成。但是,当车上存在k中化合物,而且存在k种元素,就会爆炸。现在依次向车上装载,装载序列由输入给出,当会某物品装载后爆炸时,就不会装载这个,最终统计有多少个物品没有被装载上。【算法分析】:首先这个问题不是线性描述的,而是解决多个变量之间的冲突问题。这时候,我们是不是就要想到用图论来解决了?首先看题目中给出的例子,如果AB、BC、CD、AD,放进去就会爆炸,而AB,BC,AD,放进去就不会爆炸,而这道题使容易引起歧义的。但后面的例子解决了这个问题。必须k种元素都参与到爆炸行为中来。那么,就像第一个例子,k种元素,没中元素出现
阅读全文
摘要:UVA11997【题目描述】:给定k组数,每组k个数,从每组数中各取出一个数,然后把他们加和,在不的加和组合中,求其中的最小的k的数。K 6 7 #include 8 9 #include 10 11 #include 12 13 #include 14 15 #include 16 17 #include 18 19 #include 20 21 #include 22 23 #define MAXN 755+10 24 25 #define MAXM 20000+5 26 27 #define oo 9556531 28 29 #define eps 0.0...
阅读全文
摘要:UVA1339【题目描述】:密码古典密码学有两种密码,仿射和换位,给定一段明文,一段密文,看密文能否由这段明文,是否可能通过仿射和换位得到。【算法分析】:这道题目的关键是读题。因为接触过密码学,所以容易理解。仿射密码:M=(m+a)%26,注意:对于相同的字母,仿射到同一个字母换位密码:就是把所有的字母重排。所以这道提的关键是,无论怎么仿射和置换,不用的字母总数不会增加,相同的字母的个数不会增加。即使通过很多次这样的操作也是这样。所以统计两段密文,不同的字母出现的个数,排序后比较即可。题外话:可能变换成功。 1 //密码学:仿射密码和置换密码 2 3 //难点:读题和归纳 4 5 #inc..
阅读全文
摘要:LA2965http://122.207.68.93:9090/csuacmtrain/problem/viewProblem.action?id=3148§【题目描述】:给定n个大写字母组成的连续字符串,(n 2 3 #include 4 5 #include 6 7 #include 8 9 #include 10 11 #include 12 13 #include 14 15 #include 16 17 #include 18 19 #include 20 21 #define MAXN 100+5 22 23 #define MAXM 100+...
阅读全文
摘要:LA3029最大子矩阵https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1030【题目描述】:给定m*n的矩阵,其中一些格子是空格F,其他是墙R。找出一个全部由空地组成的面积最大的子矩阵,输出面积。【算法分析】:【决策方案】:所有的子矩阵,C(n,2)*C(m,2)种,加上确认空地,大约N^6的复杂度【限制条件】:所有的方块都是空地【最优评判准则】:面积最大【思路分析】:朴素算法的复杂度是N^6,肯定不能接受,所以我
阅读全文
摘要:UVA11520http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2515【题目描述】:填充正方形N*N的网格,某些地方填充了一些大写字母,让你在空下的地方填上’A’.....’Z’,使得从上到下,从左到右字典序最小。(N 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 //#include10 #define MAXN 1
阅读全文
摘要:UVALive3971http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3276题目描述:组装电脑总共有b元钱,给定n电脑配件信息{种类;名称;价格;品质因子}。目标是用给定的b元钱,在每个种类中选择一个配件购买,统计所购买的配件中最低的品质因子MIN,我们的目标是使这个MIN最大。约束条件是分属每种类配件至少买一个。解题思路:运筹三要素分析:决策方案:假设每种类配件的数目是{a1,a2........an},方案数是a1*a2..
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #define mod 1000000007 6 long long dp[1010]; 7 void getdp() 8 { 9 memset(dp,0,sizeof(dp));10 dp[1]=1;11 for(int i=2;i<=1000;i++)12 {13 for(int j=1;j<=i;j++)14 {15 if ((i-1)%j==0) dp[i]+=dp[j],dp[i]=dp[i]%mod;1...
阅读全文
摘要:通过条件约束模拟后续全状态+暴力枚举决定变量==不超时{或者说,一边边求解一边判断正误以减少不必要的运算}统一代码风格 1 #include 2 #include 3 #include 4 using namespace std; 5 int f[4][2]={{0,-1},{0,1},{-1,0}}; 6 const int maxn=20; 7 int ans; 8 int addcha; 9 int cnt=0;10 int a[maxn][maxn];11 bool check(int n)12 {13 int aa[maxn][maxn];14 for(int i=0...
阅读全文
摘要:思维题区间内点的移动(形象)保持原有顺序+重新排序后记录初始位置(容易思路不清)+想象等效模型 1 #include 2 #include 3 #include 4 #include 5 #define maxn 10000+10 6 using namespace std; 7 struct ant 8 { 9 int ord;//记录原始位置10 int f;//-1 : L , 1 : R11 int p;12 bool operator l)55 {56 printf("Fell o...
阅读全文
摘要:枚举例子+归纳推理数轴处理曲线+固定点(将同一个点放在数轴首尾)#include#include#include#include#define eps 0.000001#define maxn 2020double a[maxn];double b[maxn];using namespace std;double abss(double n){ if (n>=0) return n;else return -n;}int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { double k1=1/(n+0.0)
阅读全文