此次练习的地址:  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. dp,px转换

    public static int dip2px(Context context, float dpValue) {        final float scale = context.getRes ...

  2. Python3 学习第一弹:基本数据类型

    本人学习主要从<python基础教程第二版>,<dive into python3>等书籍,及一些网上大牛的博客中学习特别是Python官方文档<Python Tutor ...

  3. ASP.NET Redis 开发(转载)

    Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redis纯粹为应用而产生,它是一个高性能的 ...

  4. 自己遇到的Android虚拟机出现的错误及解决方法【不断更新】

    2012.11.9 第一个: [2012-11-09 13:15:14 - Tesa] Android Launch! [2012-11-09 13:15:14 - Tesa] The connect ...

  5. UVA 11426 GCD-Extreme(II) ★ (欧拉函数)

    题意 求Σ{1<=i<N} Σ{i<j<=N} GCD(i, j)     (N<=4000000) 分析 原始思路 暴力求明显是不行的,我们把式子简化形式一下发现它可以 ...

  6. 03day2

    03day1 不说了,图论题因为没有把加边的过程放到循环里导致只有 10 分.(不要吐槽我啊...)   竞赛排名 排序 [问题描述] [输入] 文件的第一行为参赛总人数 N(1≤N≤1000),从第 ...

  7. Window 下 VFW 视频采集与显示

    引言 经过几天的努力终于将VFW视频采集与显示功能完整实现了,不得不说网上对这方面完整的详细讲解文章是在太少了.所以就要本人来好好总结一下让后来者不再像我一样折腾好久.在本文中我将详细讲解VFW视频采 ...

  8. ASP.NET MVC模型部分验证

    在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形.比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能.用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进 ...

  9. Java中的的XML文件读写与DOM

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  10. request的用法

    Request从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,最后是ServerVariables.Request对象按照这样的顺序依次搜索这几个集合中的变量,如果 ...