testA

输入文件: testA.in  输出文件testA.out 时限2000ms

问题描述:

如果一个数化为一个二进制数之后(没有前导0),0的个数>=1的个数。那么这个数就是方数。

Eg.(12) = (1100) 2个1和2个0 所以12是一个方数。

(6)=(110) 2个1和1个0所以6不是一个方数。

现在方老师想知道区间[L,R]里有多少个方数。

输入描述:

一共一行L和R。(1<=L<=R<=2*10^9)

输出描述:

一个数表示[L,R]里有多少个方数。

数据范围 N<=200 , W<=100000 , M<=19900

样例输入:

2 12

样例输出:

6

这道题正解是用组合数算。但是明显数位DP要简单得多。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
#define MAXN 1000000
#define PROB "testA"
int ans1[MAXN];
int work1()
{
//freopen(PROB".in","r",stdin);
//freopen(PROB".out","w",stdout);
int ans=;
int x,t0,t1;
int i;
for (i=;i<MAXN;i++)
{
x=i;
t0=t1=;
//cout<<i<<":";
while (x)
{
if (x&)
{
// cout<<"1";
t1++;
}else
{
// cout<<"0";
t0++;
}
x>>=;
}
//cout<<endl;
if (t0>=t1)
{
ans++;
/* x=i;
t0=t1=0;
cout<<i<<":";
while (x)
{
if (x&1)
{
cout<<"1";
t1++;
}else
{
cout<<"0";
t0++;
}
x>>=1;
}
cout<<endl;*/
}
//printf("%d %d\n",i,ans);
ans1[i]=ans;
}
}
bool num[];
int rec[];
int topn;
int dp[][];
bool vis[][];
int solve(int now,int mr,int ov)//mr=t0-t1
{
if (ov&&vis[now][mr+])
{
return dp[now][mr+];
}
int ret=;
if (now==-)
{
if (mr>=)
{
/* for (int i=topn;i>=0;i--)
{
cout<<rec[i];
}
cout<<endl;*/
}
return mr>=;
}
if (ov)
{
rec[now]=;
ret+=solve(now-,mr+,true);
rec[now]=;
ret+=solve(now-,mr-,true);
vis[now][mr+]=;
return dp[now][mr+]=ret;
}else
{
if (num[now]==)
{
rec[now]=;
ret+=solve(now-,mr+,true);
rec[now]=;
ret+=solve(now-,mr-,false);
}else
{
rec[now]=;
ret+=solve(now-,mr+,false);
}
return ret;
}
}
int work2(int x)
{
int i;
if (x==)return ;
topn=-;
memset(dp,,sizeof(dp));
memset(vis,,sizeof(vis));
while (x)
{
num[++topn]=x&;
x>>=;
}
int ans=;
rec[topn]=;
ans+=solve(topn-,-,);
rec[topn]=;
for (i=topn-;i>=;i--)
{
rec[i+]=;
rec[i+]=;
ans+=solve(i,-,);
}
return ans+;
}
int main()
{
freopen(PROB".in","r",stdin);
freopen(PROB".out","w",stdout);
int i; int l,r;
scanf("%d%d",&l,&r);
int ans;
ans=work2(r)-work2(l-);
cout<<ans<<endl;
}

testC

输入文件: testC.in  输出文件testC.out 时限1000ms

问题描述:

给定一个n*m的国际象棋棋盘(左上角那个格子是黑的),方老师在第0时刻我们把所有的黑色格子全部重新涂成0号颜色,在第i个时刻方老师会把一些点(如果4个和他有恰好有一个公共顶点的格子都涂上的是i-1号颜色)重新涂成i号颜色(这种循环会无限进行下去,而且每次重新涂颜色是同时进行的)。最后问有多少个格子恰好被重新涂了x次。

输入描述:

一行三个数n,m,x。(1<=n,m<=5000,x<=10^9)

输出描述:

一个数表示有多少个格子被重新涂了x次

样例输入:

3 3
1

样例输出:

4
 
 这道题主要是要联系生活,如果没有发现国际象棋棋盘是那种白黑间隔着的。那这道题就真的不可做了。
另外,考虑要全面。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 1000
#define VAL1 100009
#define PROB "testC"
#define min(x,y) (((x)<(y))?(x):(y))
int n,m; int main()
{
freopen(PROB".in","r",stdin);
freopen(PROB".out","w",stdout);
int x;
scanf("%d%d%d",&n,&m,&x);
if (x=0)
{
printf("%d\n",m*n/2);
return 0;
}
if (n==1||n==2||m==1||m==2)
{
printf("0\n");
return 0;
}
n-=(x-1)*2;
m-=(x-1)*2;
printf("%d\n",max(0,(n+m-2)));
}

Contest 20140708 testA && testC的更多相关文章

  1. Contest 20140708 testB dp 组合数

    testB 输入文件: testB.in  输出文件testB.out 时限3000ms 问题描述: 定义这样一个序列(a1,b1),(a2,b2),…,(ak,bk)如果这个序列是方序列的话必须满足 ...

  2. IOS开发基础知识--碎片3

    十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice cur ...

  3. lua实现深度拷贝table表

    lua当变量作为函数的参数进行传递时,类似的也是boolean,string,number类型的变量进行值传递.而table,function,userdata类型的变量进行引用传递.故而当table ...

  4. Linux系统文件访问控制列表

    linux系统中的RWX权限.特殊权限.隐藏权限都是对某一类用户设置的, 而如果希望对某个指定的用户进行单独的权限设置的话就需要用到文件的 访问控制权限了. 我们可以对普通文件或目录进行设置ACL,通 ...

  5. Linux命令-sudo

    sudo命令用于给普通用户提供额外权利来完成原本只有超级用户才有权限完成的任务, 格式:sudo [参数] 命令名称 sudo命令与su命令的区别是,su命令允许普通用户完全变更为超级管理员的身份,但 ...

  6. 两个对象值转换的方法(BeanUtils.copyProperties与JSONObject.parseObject对比)

    将源对象赋值到目标对象方法: 方法一:BeanUtils.copyProperties(源对象, 目标对象); //org.springframework.beans.BeanUtils 方法二:目标 ...

  7. Linux命令学习-cp命令

    Linux中,cp命令的全称是copy,主要作用是复制文件或文件夹,类似于Windows下的复制功能. 假设当前处于wintest用户的主目录,路径为 /home/wintest ,存在文件夹test ...

  8. 由AnnotatedElementUtils延伸的一些所思所想

    这篇博客的两个主题: spring的AnnotatedElementUtils 个人源码阅读方法论分享 为什么要分享AnnotatedElementUtils这个类呢,这个类看起来就是一个工具类,听起 ...

  9. Programming Contest Problem Types

        Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...

随机推荐

  1. APUE 读书笔记 -----孤儿进程与僵尸进程[总结] +数据结构+C

    http://www.cnblogs.com/Anker/p/3271773.html

  2. 以色列学生---debugger 构建

    http://eli.thegreenplace.net/2011/01/23/how-debuggers-work-part-1 http://eli.thegreenplace.net/

  3. NDK开发之字符串操作

    在JNI中,Java字符串被当作一个引用来处理.这些引用类型并不像原生C字符串一样可以直接使用,JNI提供了Java字符串与C字符串之间转换的必要函数,因为Java字符串对象是不可变的(如果对这里有异 ...

  4. Ubuntu 13.10 Rhythmbox 播放器不能播放MP3。安装插件

    Ctrl+Alt+T > sudo apt-get install ubuntu-restricted-extras 因为版权和专利的问题,MP3等一些non-free的格式文件支持没有出现在免 ...

  5. angularjs ng-repeat checkbox

    <div class="col-md-3" ng-repeat="user in title.UserList"> <p class=&quo ...

  6. RedHat7搭建PHP开发环境(Zend Studio)

    下载Zend Studio # wget http://downloads.zend.com/studio-eclipse/13.0.1/ZendStudio-13.0.1-linux.gtk.x86 ...

  7. 微信上传图文消息invalid media_id hint,thumb_media_id怎么获取

    微信上传图文消息thumb_media_id, thumb_media_id怎么获取, 微信群发图文消息invalid media_id hint, 微信群发图文消息40007, 40007,inva ...

  8. C#中的static静态变量的用法

    静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: A.该变量在全局数据区分配内存. B.初始化:如果不显式初始化,那么将被隐式初始化为0. 静 ...

  9. HTML+CSS基础学习笔记(6)

    一.元素分类 CSS中html的标签元素大体分为三种类型 1.块状元素 @特点: #每个块级元素都从新的一行开始,并且其后的元素也另起一行(一个块级元素独占一行) #元素的高度.宽度.行高以及顶和底边 ...

  10. struts启动报错Javassist library is missing

    很久不用struts2,最近在配置的时候,启动服务器报错 Caused by: java.lang.ExceptionInInitializerError at com.opensymphony.xw ...