- 博客(6)
- 收藏
- 关注
原创 22 poj2935 Basic Wall Maze --- bfs
对于每个点有四个方向可以走,把墙两边的点对应墙的方向能不能走给预处理一下,用vis[x][y][0..3]表示点(x,y)的该方向可不可以走。然后bfs就好了,记录路径就把每个结点的前一个点记录下来,递归输出就可以了。#include#include#includeusing namespace std;int dx[]={0,0,1,-1};int dy[]=
2015-05-18 22:09:04 798
原创 15 UVA10982 Troublemakers
n个人,m对之间有关系,现在要把n个人分成两组,使得每组内,有关系的人的对数最少。我们可以有一个贪心的想法,对于每一个人,我们要么分在第一组,要么分在第二组。那么分在哪一组能够使得当前与我有关系的人最少,就分在哪一组。这样求得答案,满足题目要求即输出相应内容。#include#includebool e[105][105];int vis[105],T,n,m,i,j
2015-05-02 21:00:43 903
原创 14 POJ3363 Annoying painting tool
给一个全0矩阵,每次你可以使得一个r*c的子矩阵01翻转,问是否可以通过这种操作使得矩阵变为题目给定的矩阵,最少需要多少次操作。可以发现,对于第一行第一个点,它只能通过翻转包含(1,1)这个点在内的矩阵才能变,也就是r*c的左上端点在(1,1)。通过至多一次操作,我们可以保证这个点可以达到目标状态。接着第二个点,我们首先不能影响第一个点,因此如果这个点与目标状态不同,我们只能以这个点为
2015-05-02 20:58:28 760
原创 13 URAL1303 Minimal Coverage
给cnt条线段,要求覆盖[0,m],问能否覆盖,至少需要多少条线段。用贪心的想法,假设当前位置在now,那么此时添加一条线段使得左端点下次继续添加这样一条线段,使得右端点最远,左端点扫完所有线段,now的位置可以到达m,则有解,否则无解。#include#includeusing namespace std;struct node{ int l,r;
2015-05-02 20:51:16 651
原创 12 POJ1477 Box of Bricks
题目保证有解,先求砖块数的平均数。再把多的部分移到缺的地方,答案就是多的部分的和。#includeint n,ans,sum,cas=1,avg,i,h[55];int main(){ while(~scanf("%d",&n)&&n) { sum=ans=0; for(i=0;i<n;i++) scanf("%d",&
2015-05-02 20:46:25 610
原创 11 URAL1025 Democracy in Danger
选择人数较少的m/2只队,每只队中半数人投票。#include#includeusing namespace std;int main(){ int i,n,ans,s[110]; while(~scanf("%d",&n)) { for(i=0;i<n;i++) scanf("%d",&s[i]); sort(s
2015-05-02 20:44:16 672
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人