此次练习的地址:  http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26732#overview

密码 acmore

Problem A(POJ1753)

题目: Flip Game

直接拿二进制模拟暴力枚举

之前已经做过了的Flip Game(枚举)

这次又WA了两次才AC,细心细心再细心!!!代码

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <iostream>
#include <stack>
#include <set>
#include <queue>
#define MAX(a,b) (a) > (b)? (a):(b)
#define MIN(a,b) (a) < (b)? (a):(b)
#define mem(a) memset(a,0,sizeof(a))
#define INF 1000000007
#define MAXN 20005
using namespace std; int ma;
int m;
int ok;
int meiju(int st)
{
int i;
for(i=;i<;i++)
{
if((<<i) & st)
{
m ^= (<<i);
if(i>=)
{
m ^= (<<(i-));
}
if(i%>)
{
m ^= (<<(i-));
}
if(i%<)
{
m ^= (<<(i+));
}
if(i+<)
{
m ^= (<<(i+));
}
}
}
if(m == || m == (<<)-)return ;
return ;
} int main()
{
ok =;
ma =;
int i,j;
char str[];
for(i=;i<;i++)
{
scanf("%s",str);
for(j=;j<;j++)
{
if(str[j] == 'b')
ma ^= (<<(i*+j));
}
}
int min =INF;
for(i=;i<(<<);i++)
{
m = ma;
if(meiju(i))
{
int ans =;
for(j=;j<;j++)
{
if((<<j) & i)ans ++;
}
ok=;
min=MIN(min,ans);
}
}
if(ok)printf("%d\n",min);
else printf("Impossible\n");
return ;
}

Problem B(POJ2965)

题目:The Pilots Brothers' refrigerator

与上题一样,同样两次没过==!

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <iostream>
#include <stack>
#include <set>
#include <queue>
#define MAX(a,b) (a) > (b)? (a):(b)
#define MIN(a,b) (a) < (b)? (a):(b)
#define mem(a) memset(a,0,sizeof(a))
#define INF 1000000007
#define MAXN 20005
using namespace std; int ma;
int m;
int meiju(int st)
{
int i;
for(i=;i<;i++)
{
if((<<i) & st)
{
int j,k=;
k|=(<<i);
for(j=;j<;j++){
k|=<<(i-i%+j);
k|=<<(j*+i%);
}
m^=k;
}
}
if(m == )return ;
return ;
} int main()
{
ma =;
int i,j;
char str[];
for(i=;i<;i++)
{
scanf("%s",str);
for(j=;j<;j++)
{
if(str[j] == '+')
ma ^= (<<(i*+j));
}
}
int min =INF;
int key;
for(i=;i<(<<);i++)
{
m = ma;
if(meiju(i))
{
int ans =;
for(j=;j<;j++)
{
if((<<j) & i)ans ++;
}
if(min > ans)
{
min = ans;
key = i;
}
}
}
printf("%d\n",min);
for(i = ;i<;i++)
{
if((<<i) & key)
{
printf("%d %d\n",i/+, i%+);
}
}
return ;
}

problem C ZOJ 1716

我的方法是直接用一个数组  sum[i][j]存入从左上角为0,0,右下角为(i,j)的矩形的树的个数。

这样的话边长为a, b的矩形内部的树的个数就是

sum[i][j]-sum[i-a][j]-sum[i][j-b]+sum[i-a][j-b];

枚举小矩形的起点就行

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <iostream>
#include <stack>
#include <set>
#include <queue>
#define MAX(a,b) (a) > (b)? (a):(b)
#define MIN(a,b) (a) < (b)? (a):(b)
#define mem(a) memset(a,0,sizeof(a))
#define INF 1000000007
#define MAXN 20005
using namespace std; int map[][];
int sum[][];
int n,width,height; int shuru()
{
mem(map);
mem(sum);
while(scanf("%d",&n)!=EOF && n)
{
int j,i,a,b;
for(i=;i<=n;i++)
{
scanf("%d%d",&a,&b);
map[b][a] = ;
}
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
sum[i][j] = map[i][j]+sum[i-][j]+sum[i][j-]-sum[i-][j-];
}
}
scanf("%d%d", &width, &height);
return ;
}
return ;
} int f()
{
int i,j;
int max = ;
for(i=height;i<=;i++)
{
for(j=width;j<=;j++)
{
max = MAX(sum[i][j]-sum[i][j-width]-sum[i-height][j]+sum[i-height][j-width], max);
}
}
return max;
} int main()
{
while(shuru())
{
printf("%d\n",f());
}
return ;
}

problem D ZOJ 3356

坑爹的题目啊,之前做一直wa,后来实在是没办法,就参见了大神的代码,发现原来自己完全理解错了题目意思了。题目大意是说要让他不能亏,但是每次都是最坏的情况,也就是说每次投注之后,中的都是最少的哪一个。

最后还是参见了大神的思路,按投注的硬币的个数枚举,但每次放一个硬币时都是放在目前能都得到的最少的那一堆。所以复杂度就是O(coins)

代码:

 #include <stdio.h>
#include <math.h>
#define MAX(a,b) (a)>(b)?(a):(b)
int main()
{
double x,y,z;
int coins;
int T;
while(~scanf("%d",&T))while(T--)
{
int get[]={},put[]={},mul[];
scanf("%d%lf%lf%lf", &coins, &x, &y, &z);
mul[] = (int)floor(x* + 0.5);
mul[] = (int)floor(y* + 0.5);
mul[] = (int)floor(z* + 0.5);
int i,index = ;
int ans = coins;
for(i=;i<=coins;i++)
{
put[index] ++ ;
get[index] = put[index] * mul[index]/;
index = get[] < get[] ? : ;//找到能够得到的最少的那一堆
index = get[index] < get[] ? index : ;
ans = MAX(ans, get[index]+coins-i);
}
printf("%d\n", ans);
}
return ;
}

problem E URAL 1010

WA了

problem F HDU 2069

起初觉得可以拿母函数做但是却发现,有个坑爹的条件就是Your program should be able to handle up to 100 coins.这句话,银币数目不可以超过100个

于是我换了一个想法,用记忆化的搜索,d[i][j][k]表示要凑齐i数值,开始用第j种硬币,还可以用k个硬币,为了不超时,记忆化一下。结果居然0Ms过了,真是奇迹~~~~

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <iostream>
#include <stack>
#include <set>
#include <queue>
#define MAX(a,b) (a) > (b)? (a):(b)
#define MIN(a,b) (a) < (b)? (a):(b)
#define mem(a) memset(a,0,sizeof(a))
#define INF 1000000007
#define MAXN 20005
using namespace std; int f[][][],vis[][][];
int val[]={,,,,,}; int dfs(int v,int c,int rest)
{
if(vis[v][c][rest])return f[v][c][rest];
vis[v][c][rest] = ;
if(c == && rest >= && v<=rest)return f[v][c][rest]=;
else if(c == && (rest < || v > rest))return ;
int i,m = v/val[c];
f[v][c][rest] = ;
for(i=;i<=m;i++)
{
f[v][c][rest]+=dfs(v-val[c]*i, c-, rest-i);
}
return f[v][c][rest];
} int main()
{
mem(f);
mem(vis);
int n;
while(~scanf("%d",&n))
{
int k;
if(n == ){printf("1\n");continue;}
if(n<)k=;
else if(n<)k=;
else if(n<)k=;
else if(n<)k=;
else k =;
printf("%d\n",dfs(n,k,));
}
return ;
}

contest7.20(暴力专练)的更多相关文章

  1. 10-19 dp专练

    dp专练,终于克服了一次自己对dp的恐惧,磕出来一道题. 得分情况: T1:0 T2:0 T3:0 emmmm,磕出来的题是T2,但是因为初始化和int long long的原因爆零了 T1:n只狼排 ...

  2. P1251 递推专练3

    递推专练3 描述 Description 圆周上有N个点.连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案? 输入格式 Input Format 读入一个数N.<=N< ...

  3. 整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  4. 8.1搜索专练DFS和BFS

    这是第一次全部做出来的依次练习了,有一些都是做过两遍了的,但是还是错了几回,更多时候我还是应该多注意下细节,就好像章爷笑我 的一样,像什么vis[]标记没清0,什么格式错误,还有什么题目没看清,还是的 ...

  5. 20个Java练手项目,献给嗜学如狂的人

    给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行巩固. JAVA基础 ...

  6. 2016.4.9 NOI codevs动态规划专练

    1.NOI 最大子矩阵 1:最大子矩阵 总时间限制:  1000ms 内存限制:  65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 ...

  7. 2016.4.3 动态规划NOI专练 王老师讲课整理

    1.6049:买书 总时间限制:  1000ms 内存限制:  65536kB 描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买 ...

  8. 9.23 NOIP模拟题(数学专练)

    数论基础 专题测试  命题人:清华大学 王赢绪 /* 水题 答案为C(n-k,m-1) 预处理阶乘和逆元,O(1)算答案 开始读错题了!!!朱一乐!!! */ #include<iostream ...

  9. $vjudge\ CSP-S$专题专练题解

    照例先放个链接$QwQ$ $A$ $QwQ$之前写过题解辣. 重新说下趴,就给横坐标纵坐标也开点,然后每个点连向对应横纵坐标边权为$0$,相邻横坐标点之间连边,相邻纵坐标点之间连边,跑个最短路就完事$ ...

随机推荐

  1. 最大流 Dinic + Sap 模板

    不说别的,直接上模板. Dinic+当前弧优化: struct Edge{ int x,y,c,ne; }e[M*]; int be[N],all; int d[N],q[N]; int stack[ ...

  2. bzoj2561: 最小生成树

    如果出现在最小生成树上,那么此时比该边权值小的边无法连通uv.据此跑最小割(最大流)即可. #include<cstdio> #include<cstring> #includ ...

  3. UVa 10285 Longest Run on a Snowboard【记忆化搜索】

    题意:和最长滑雪路径一样, #include<iostream> #include<cstdio> #include<cstring> #include <c ...

  4. win7x64下的redis安装与使用

    先引用百度百科的一段话吧,具体可以到百科查看吧. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年 ...

  5. apache开源项目-- Turbine

    1.缘起 Jetspeed是Apache Jakarta小组的开放源码门户系统.它使得最终用户可以通过WAP手机.浏览器.PDA等各种设备来使用各种各样的网络资源(比如应用程序.数据以及这之外的任何网 ...

  6. 【编程基础】const与#define的区别

    [前言] 相信大家看别人代码的时候都遇到过,有人用#define定义,也有人用const定义. 那么两者的区别到底是什么呢?哪个更好用呢? 网上查了又查,下面总结一下. [总结] 编译器处理方式不同 ...

  7. 项目管理工具:Maven使用方法总结

    阅读目录 一.概念 二.Maven安装 三.常用命令 四.生命周期 五.第一个Maven项目 六.POM文件 七.Maven库 八.参考资料 回到顶部 一.概念 Maven是一个项目管理和构建自动化工 ...

  8. Oracle数据库启动时:ORA-00119: invalid specification for system parameter LOCAL_LISTENER; ORA-00132错误解决

    问题描述: 1. em打开中提示 https://localhost:1158/em/console/database/instance/repDown?target=orclweng&typ ...

  9. golang语言部分保留字的举例

    golang和c的代码有很大不同的,一不小心就会误用. 1 /* go保留字: */ /* break default func interface select case defer go map ...

  10. 【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值

    常数时间取得栈中的元素最大值和最小值,我们可以想到当push的时候比较一下,如果待push元素值小于栈顶元素,则更新min值,最大值亦然. 这样有个问题就是当pop的时候,就没了最大最小值. 于是上网 ...