摘要: 博客已搬至http://blog.csdn.net/yangjie_acm 阅读全文
posted @ 2013-11-14 01:09 小の泽 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 首先要清楚棋盘行列表示方法。注意要求按字典序输出,我的搜索方向是 dx[ ],dy[ ].dfs初步,具体看代码。 1 #include 2 #include 3 #include 4 using namespace std; 5 int visit[10][10]; 6 7 struct Step 8 { 9 int x,y;10 };11 Step step[100];12 int p,q; //p是行(数字),q是列(字母)13 int dx[8]={-1,1,-2,2,-2,2,-1,1}; //要满足字典序,顺序不能改14 int dy[8]={-2,-2,-1,-1... 阅读全文
posted @ 2013-10-03 17:44 小の泽 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 贪心,按dj从小到大排序,并按次顺序加工。因为对于最小的那个dj是不变的,那么如果先加工其他的,那么cj就会增大,从而cj - dj就会增大,所以要先加工dj小的。#include #include#include#include#includeusing namespace std;vectora[50005];struct thing{ int p,d; int id;}t[50005];int n;int visit[50005]; //该id是否被访问过 int cmp(const void * a,const void * b){ return (*(thing *)a).d... 阅读全文
posted @ 2013-09-06 18:55 小の泽 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 看了题解才知道,原来floyd不止是用来求最短路的......用floyd,如果i和j有关则a[i][j]=1,否则为-1;能得出一个点的绝对排名的充要条件是这个点和其他每个点都有关(直接或间接)。最后遍历每一个点,如果存在一个点和这个点没有关系,那么这个点就是一个无关点,最后用n-无关点个数就是答案。 1 #include 2 #include 3 #include 4 using namespace std; 5 int a[105][105];//表示两者间是否有关,1有关,-1无关 6 int n,m; 7 void floyd(){ 8 for(int i=1;i0)12 ... 阅读全文
posted @ 2013-09-06 16:15 小の泽 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 裸的拓扑排序~#include #include#include#includeusing namespace std;vectora[105];int from[105],to[105],flag[105];//出度,入度,标记是否访问过int main(){ int n,temp; scanf("%d",&n); memset(from,0,sizeof(from)); memset(to,0,sizeof(to)); memset(flag,0,sizeof(flag)); for(int i=1;i<=n;i++){ while(scanf(" 阅读全文
posted @ 2013-09-06 14:10 小の泽 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 找出规律即可~ 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 {int n; 7 while(scanf("%d",&n)!=EOF) 8 printf("%d\n",n); 9 return 0;10 } 阅读全文
posted @ 2013-09-04 17:09 小の泽 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1827用tarjan算法,先对各个极大强连通图进行缩点同时记录缩点中话费最少的值,然后看每一个缩点的入度,如果入度为0,那么说明需要给这个缩点打电话。源代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define INF 100000000 7 using namespace std; 8 vector map[20005]; 9 10 int n,m,now,cnt,sum1,sum2,top,num,ans;11 int . 阅读全文
posted @ 2013-08-20 11:00 小の泽 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1018首先,把所有元素按照带宽从小到大排序,然后枚举每一个带宽,并把它当做所选带宽中的最小值。源代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define INF 100000000 7 using namespace std; 8 typedef struct{ 9 int group;10 double b,p;11 }device;12 device de[10010];13 int num[110],re[110];14 double mi... 阅读全文
posted @ 2013-08-15 18:08 小の泽 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1158动态规划(表示我的dp好弱,挽尊~~~)dp[i][j]表示第i个月雇佣j人的最小代价。其中j大于等于当月需求人数,小于等于这几个月中需求最大的那个月的人数。状态转移方程: dp[i][j]=min(dp[i-1][k]+当月代价,dp[i][j]) k大于等于i-1月需求人数,小于等于这几个月中需求最大的那个月的人数。源代码: 1 #include 2 #include 3 #define INF 100000000 4 using namespace std; 5 int dp[13][1.. 阅读全文
posted @ 2013-08-15 18:01 小の泽 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1811这题的关键点就是对 “=” 的处理,这个要用到并查集。把是“=”关系的点放在统一集合内,处理其中每一个点时都当做处理根结点。数据不全的情况是同时出现两个点的入度为0,(当两个点具有“ = ”关系时,我们默认是一个点)。源代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 100010 7 using namespace std; 8 int a[maxn],b[maxn],from[maxn],pa[m 阅读全文
posted @ 2013-08-14 11:20 小の泽 阅读(255) 评论(0) 推荐(0) 编辑