1002  大数加法

#include<iostream>
#include<cstring>
using namespace std;
int main()
{ char a[],b[];
int c[];
int n;
cin>>n;
for(int w=;w<=n;w++)
{
int i=,k=,j=;
memset(c,,sizeof(c));
cin>>a>>b;
int l1=strlen(a);
int l2=strlen(b);
l1--,l2--; while()
{ c[k]=c[k]+(a[l1]+b[l2]-''-'');
l1--;
l2--;
k++;
if(l1==-||l2==-) break;
}
if(l1==-&&l2!=-)
{
while(l2!=-){
c[k]=c[k]+(b[l2]-'');
k++;
l2--;
}
}
else if(l1!=-&&l2==-)
{
while(l1!=-){
c[k]=c[k]+(a[l1]-'');
k++;
l1--;
}
}
for(i=;i<k;i++)
{
if(c[i]>=&&i!=k-)
{
c[i+]+=c[i]/;
c[i]%=;
}
else if(c[i]>=&&i==k-)
{
c[i+]+=c[i]/;
c[i]%=;
k++;
}
} cout<<"Case "<<w<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
if(w!=n)
{
for(i=k-;i>=;i--)
{
cout<<c[i];
}
cout<<endl;
cout<<endl;
}
else{
for(i=k-;i>=;i--)
{
cout<<c[i];
}
cout<<endl;
}
}
}

1003 简单采用了dp的思想吧,这一个与上一个有关系,关键是找到这个关系

#include<iostream>
#include<string.h>
using namespace std;
int a[];
int dp[];
int main()
{ int t;
cin>>t;
for(int i=;i<=t;i++)
{
int n;
cin>>n;
for(int j=;j<=n;j++) cin>>a[j]; memset(dp,,sizeof(dp));
int s=,l=,r=;
int maxsum=a[];
dp[]=a[];
for(int k=;k<=n;k++)
{
if(dp[k-]>=)
dp[k]=dp[k-]+a[k];
else
{
dp[k]=a[k];
s=k;
}
if(dp[k]>maxsum)
{
maxsum=dp[k];
l=s;
r=k;
}
}
printf("Case %d:\n",i);
printf("%d %d %d\n", maxsum, l, r);
if(i!=t) printf("\n");
}
}

1005 定义 f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

给出A B 和N  求f(n)  思路就是找规律  如果循环中出现了两个连续的1  则说明循环出现

#include<bits/stdc++.h>
using namespace std;
int x[];
int main()
{ int a,b,c;
while(cin>>a>>b>>c)
{
if(a==&&b==&&c==) break;
memset(x,,sizeof(x));
x[]=,x[]=;
int i;
for(i=;i<=;i++)
{
x[i]=(x[i-]*a+x[i-]*b)%;
if(x[i]==&&x[i-]==) break;
}
c=c%(i-);
x[] = x[i-];
cout<<x[c]<<endl; }
}

1007

给n个点的坐标,求距离最近的一对点之间距离的一半。

第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标。实数。

emmmm  这个分治思想比较好吧

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
struct node {
double x;
double y;
}p[]; int a[]; double cmpx(node a,node b) {
return a.x<b.x;
} double cmpy(int a,int b) {
return p[a].y<p[b].y;
} double dis(node a,node b) {
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
} double find(int l,int r){
if(r==l+) //如果只有一个或者两个点直接求最短长度
return dis(p[l],p[r]);
if(l+==r)
return min(dis(p[l],p[r]),min(dis(p[l],p[l+]),dis(p[l+],p[r]))); //递归求解
int mid=(l+r)>>; //从中间分开,进行分治
double ans=min(find(l,mid),find(mid+,r)); //寻找左右两边最小值
int i,j,cnt=;
for(i=l;i<=r;i++){ //统计距离中点距离小于ans的点
if(p[i].x>=p[mid].x-ans&&p[i].x<=p[mid].x+ans)
a[cnt++]=i;
}
sort(a,a+cnt,cmpy); //对y轴进行排序
for(i=;i<cnt;i++){ //查找是否存在最小的点
for(j=i+;j<cnt;j++){
if(p[a[j]].y-p[a[i]].y>=ans) break;
ans=min(ans,dis(p[a[i]],p[a[j]]));
}
}
return ans;
} int main(){
int i; while(scanf("%d",&n)!=EOF){
if(!n) break;
for(i=;i<n;i++)
scanf("%lf %lf",&p[i].x,&p[i].y);
sort(p,p+n,cmpx);
printf("%.2lf%\n",find(,n-)/);
}
return ;
}

1010

深搜再加上奇偶剪枝

#include<iostream>
#include<string.h>
using namespace std;
char a[][];
int n,m,t;
int dx[]={,,,-};
int dy[]={,-,,};
int sx,sy,ex,ey;
int f=;
int abs(int x)
{
return x<?-a:x;
}
void dfs(int x,int y,int tt)
{
if(x==ex&&y==ey&&tt==t)
{
f=;
return ;
} int temp=(t-tt)-(abs(x-ex)+abs(y-ey));//在这一点(我能走的步数)减去(这一点我到终点的最小步数)如果不是偶数或者小于零,则不能走到
if(temp<||temp&) return ;
for(int i=;i<;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(a[xx][yy]!='X'&&xx>=&&xx<n&&yy>=&&yy<m)
{
a[xx][yy]='X';
DFS(xx,yy,tt+);
a[xx][yy]='.';
if(flag)return ;
}
}
}
int main()
{
while(cin>>n>>m>>t)
{
if(n==&&m==) break;
int wall=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
cin>>a[i][j];
if(a[i][j]=='S') sx=i,sy=j;
else if(a[i][j]=='D') ex=i,ey=j;
else if(a[i][j]=='X') wall++;
}
}
if(n*m-wall<=t)
{
cout<<"NO"<endl;
continue;
}
f=;
a[sx][sy]='X';
dfs(sx,sy,);
if(f==) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}

1011

树形dp

#include<iostream>
#include<string.h>
using namespace std;
int dp[][];
int a[][];
int value[];
int p[];
int v,n,vis[];
int max(int a1,int a2)
{
return a1>a2?a1:a2;
}
int dfs(int now,int pre)//now 是当前节点 pre是上一个节点
{
int tem=(value[now]+)/; //tem是这个节点需要的士兵
for(int k=tem;k<=v;k++)
{
dp[now][k]=p[now]; //dp[now][tem++]=p[now] 意思是不管这个节点派多少大于tem士兵 得到的p都是一样
}
for(int i=;i<=n;i++) //遍历每个节点
{
if(a[now][i]==&&i!=pre) //如果是now连着的下一个地点 并且下一个地点不是自己
{
dfs(i,now); //再次搜索。。。搜到底了时
for(int j=v;j>=tem;j--)//j是排出的士兵数
{
for(int k=;k<=j-tem;k++)//j-tem是
{
dp[now][j]=max(dp[now][j],dp[now][j-k]+dp[i][k]);//k的范围为1-(j-tem),因为你至少要留下tem个士兵来攻打当前节点,i为该节点的子节点
}
}
}
}
return ;
}
int main()
{
while(cin>>n>>v)
{
if(n==-&&v==-) break; for(int i=;i<=n;i++)
cin>>value[i]>>p[i]; memset(a,,sizeof(a)); for(int j=;j<n-;j++)
{
int t1,t2;
cin>>t1>>t2;
a[t1][t2]=;
a[t2][t1]=;
}
if(v==)
{
cout<<""<<endl;
continue;
}
memset(dp,,sizeof(dp));
dfs(,-);
cout<<dp[][v]<<endl;
}
return ;
}

1016

输入n  输出一个素数环,就是相邻数为素数的一个环

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int p[];
int a[],vis[];
int ans[];
int cnt;
int n;
void dfs(int s,int step)
{
if(step==n)
{
if(p[+ans[n-]]==)
{
for(int i=;i<n;i++)
{
if(i==) cout<<ans[i];
else cout<<" "<<ans[i];
}
cout<<endl;
return;
}
else return ;
}
for(int i=;i<=n;i++)
{
if(!vis[i]&&p[i+s]==)
{
vis[i]=;
ans[step]=i;
dfs(i,step+);
vis[i]=;
}
}
}
int main()
{
memset(p,,sizeof(p));
p[]=;
for(int i=;i<=;i++)
{
if(p[i]==)
{
for(int j=i*;j<;j+=i)
p[j]=;
}
}
// for(int i=1;i<=20;i++) cout<<p[i]<<endl;
int ii=;
while(cin>>n){
for(int i=;i<=n;i++) a[i]=i;
printf("Case %d:\n",ii);
ans[]=;
vis[]=;
dfs(,);
ii++;
cout<<endl;
} }

1018

输入一个数,然后输出这个数阶乘有多少位

竟然还有log10(x)....123456=1.23456×10^5  两边同时求对数log10(123456)=5+0.x.....

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,test,ans=;
double t;
cin>>test;
while(test--)
{
cin>>n;
t=;
for(int i=;i<=n;i++)
{
t+=log10(i*1.0);
}
ans+=(int)t+;
cout<<ans<<endl;
ans=;
}
return ;
}

hdu刷题1的更多相关文章

  1. 教你用python写:HDU刷题神器

    声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...

  2. hdu 刷题记录

    1007 最近点对问题,采用分治法策略搞定 #include<iostream> #include<cmath> #include<algorithm> using ...

  3. hdu刷题2

    hdu1021 给n,看费波纳列数能否被3整除 算是找规律吧,以后碰到这种题就打打表找找规律吧 #include <stdio.h> int main(void) { int n; whi ...

  4. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

  5. 手把手教你用C++ 写ACM自动刷题神器(冲入HDU首页)

    转载注明原地址:http://blog.csdn.net/nk_test/article/details/49497017 少年,作为苦练ACM,通宵刷题的你 是不是想着有一天能够荣登各大OJ榜首,俯 ...

  6. 【刷题】HDU 2222 Keywords Search

    Problem Description In the modern time, Search engine came into the life of everybody like Google, B ...

  7. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

  8. LeetCode刷题系列

    LeetCode 我们工作面试和提高自身数据结构和算法能力的时候往往需要刷刷题,我选择LeetCode是通过一个留学论坛了解的.专业,覆盖语种全面. 提前说说刷题的心得: 尽量手写代码,少使用IDE的 ...

  9. ife任务刷题总结(一)-css reset与清除浮动

    本文同时发布于本人的个人网站www.yaoxiaowen.com 百度创办的前端技术学院,是一个面向大学生的前端技术学习平台.虽然只有大学生才有资格报名,提交代码进行比赛排名.但是这并不妨碍我们这些初 ...

随机推荐

  1. [转载] iOS应用程序的生命周期

    iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...

  2. MVC导航菜单高亮显示实现思路

    ///代码不是我写的,但是已经亲自测试过了,按照我的理解写的注释,不对的地方大家评论指出 @{ @*这个是把当前的路由值格式化并保存到currentController这个变量中,这里是格式化为Con ...

  3. Web Pages

    什么是Web Pages 1.WebPages是三种创建ASP.NET网站或Web应用程序模式中的一种 2.而其两种编程模式是MVC(Model-View-Controller,模型-视图-控制器)和 ...

  4. Oracle特性总结

    最近开发项目使用了Oracle,根据总体架构一开始选择使用Mybatis,发现核心模块用Mybatis效率不够,切换到jdbc实现,效率大增.Oracle可是个庞然大物,特性多多,丝毫不能马虎,否则很 ...

  5. 09JavaScript函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. 实例1: <!DOCTYPE html> <html> <head> <meta charset ...

  6. 05JavaScript语句

    1.JavaScript 语句 JavaScript 语句是发给浏览器的命令. 这些命令的作用是告诉浏览器要做的事情. 2.分号 ; 分号用于分隔 JavaScript 语句. 通常我们在每条可执行的 ...

  7. 原型 - 实现自己的jQuery

    每个第一次使用jq的开发者都感到惊叹,jq的$太神奇了,究竟是怎么做到的使用$控制dom 赞叹前人之余,探究其本源才是前端开发者应该做的事,社区常常说,不要重复造轮子, 可是啊,连轮子都造不出来,又怎 ...

  8. Apache 错误:httpd: Could not open configuration file

    神奇的事件,折磨我 电脑关机重启了一下关机之前正常的状态没有任何的异常出现,过了一会开机准备工作.神奇的事情tmd出现了!!!! 打开phpstudy 启动... 嗯?apache亮红报错?? 第一反 ...

  9. xp sp3安装.Net 4.0提示严重错误,0x80070643,解决办法2017版

    客户电脑上要装金税开票软件,需要.net 4.0.30319.1,电脑环境是xp sp3,已经安装了.net 2, .net 3.5sp1,安装.net 4.0的时候提示错误0x80070643 因为 ...

  10. laravel-admin 创建数据库并生成控制器

    以user表为例 1. 生成迁移:php artisan make:migration create_users_table 在 database/migration 中生成迁移文件,可对迁移文件进行 ...