8-18-Exercise
A.HDU 1172 猜数字
采用枚举~【赤果果的暴力~】
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; int x[],y[],s,ss,vis[],dis[];
char a[][]; void find(int b,int c)
{
if(b==(a[c][]-'') && !vis[])
{
s++;vis[]=;
return;
}
if(b==(a[c][]-'') && !vis[])
{
s++;vis[]=;
return;
}
if(b==(a[c][]-'') && !vis[])
{
s++;vis[]=;
return;
}
if(b==(a[c][]-'') && !vis[])
{
s++;vis[]=;
return;
}
} int main()
{
int n,i,j,A,B,C,D,AA,BB,CC,DD;
while(scanf("%d",&n),n)
{
for(i=;i<n;i++)
scanf("%s%d%d",a[i],&x[i],&y[i]);
int sum=;
for(i=;i<=;i++)
{
D=i%;
C=(i/)%;
B=(i/)%;
A=i/;
int k=;
for(j=;j<n;j++)
{
s=,ss=;
memset(vis,,sizeof(vis));
memset(dis,,sizeof(dis));
if(A==a[j][]-'') {ss++;s++;vis[]=;dis[]=;}
if(B==a[j][]-'') {ss++;s++;vis[]=;dis[]=;}
if(C==a[j][]-'') {ss++;s++;vis[]=;dis[]=;}
if(D==a[j][]-'') {ss++;s++;vis[]=;dis[]=;}
if(ss!=y[j]) break;
if(!dis[]) find(A,j);
if(!dis[]) find(B,j);
if(!dis[]) find(C,j);
if(!dis[]) find(D,j);
if(s!=x[j]) break;
k++;
}
if(k==n)
{
sum++;
if(sum==) break;
AA=A;BB=B;CC=C;DD=D;
}
}
if(sum!=) printf("Not sure\n");
else
printf("%d%d%d%d\n",AA,BB,CC,DD);
}
return ;
}
B.HDU 2112 HDU Today
就是字符串处理麻烦了点~将字符串编号+Dijkstra就可以了~
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define inf 0x3f3f3f3f //手抽~最开始把inf写的太大了,结果超int了......= =
int map[][],vis[],n,m,s,e;
long dis[];
char name[][]; void dijkstra()
{
memset(vis,,sizeof(vis));
memset(dis,inf,sizeof(dis));
dis[s]=;
for(int i=;i<=m;i++)
{
int x,minn=inf;
for(int j=;j<=m;j++)
if(!vis[j] && dis[j]<minn)
{
minn=dis[j];
x=j;
}
vis[x]=;
for(int y=;y<=m;y++)
dis[y]=min(dis[y],map[x][y]+dis[x]);
}
return;
} int find(char str[])
{
int i;
for(i=;i<=m;i++)
if(strcmp(name[i],str)==)
return i;
if(m== || i>m)
{
m++;
strcpy(name[m],str);
return m;
}
} int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==-) break;
char start[],end[],s1[],s2[];
int i,j,a,b,c;
scanf("%s%s",start,end);
memset(map,inf,sizeof(map));
m=;
for(i=;i<=n;i++)
{
scanf("%s%s%d",s1,s2,&c);
a=find(s1);
b=find(s2);
if(map[a][b]>c)
map[a][b]=map[b][a]=c;
}
s=find(start);
e=find(end);
if(s==e) printf("0\n");
else
{
dijkstra();
if(dis[e]!=inf)
printf("%ld\n",dis[e]);
else
printf("-1\n");
}
}
return ;
}
//memory:396KB time:687ms
C.POJ 1321 棋盘问题
dfs~还有就是要注意当K<n 时~
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; bool chess[][],vis[];
int ans,n,k; void dfs(int row,int num)
{
if(num==k){ans++;return;}
if(row>=n) return;
for(int i=;i<n;i++)
if(!vis[i] && chess[row][i])
{
vis[i]=true;
dfs(row+,num+);
vis[i]=false;
}
dfs(row+,num); //这一步很重要~
return;
} int main()
{
while(~scanf("%d%d",&n,&k))
{
if(n==- && k==-) break;
int i,j;
memset(chess,false,sizeof(chess));
for(i=;i<n;i++)
for(j=;j<n;j++)
{
char c;
cin>>c;
if(c=='#')
chess[i][j]=true;
}
ans=;
dfs(,);
printf("%d\n",ans);
}
return ;
}
//memory:708KB time:32ms
E.POJ 3006 Dirichlet's Theorem on Arithmetic Progressions
呃.......就是暴力啦.......
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std; bool juge(int x)
{
for(int i=;i*i<=x;i++)
if(x%i==) return false;
return true;
} int main()
{
int a,b,n,i,j;
while(scanf("%d%d%d",&a,&b,&n),a,b,n)
{
int k=,sum=;
for(i=;;i++)
{
sum=a+i*b;
if(sum> && juge(sum))
k++;
if(k==n) break;
}
printf("%d\n",sum);
}
return ;
}
//memory:164KB time:250ms
8-18-Exercise的更多相关文章
- [未完成]关于Eclipse4RCP书中内容总结
原文地址http://www.vogella.com/tutorials/EclipseRCP/article.html Table of Contents 1. Eclipse 4 1.1. Wha ...
- Delphi XE Starter Essentials 中文目录
Table of Contents1. Delphi XE Starter IDE 1Delphi and C++Builder ................................... ...
- 18 A GIF decoder: an exercise in Go interfaces 一个GIF解码器:go语言接口训练
A GIF decoder: an exercise in Go interfaces 一个GIF解码器:go语言接口训练 25 May 2011 Introduction At the Googl ...
- C - The C Answer (2nd Edition) - Exercise 1-8
/* Write a program to count blanks, tabs, and newlines. */ #include <stdio.h> /* count blanks, ...
- MIT 6.828 JOS学习笔记5. Exercise 1.3
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...
- Think Python - Chapter 18 - Inheritance
In this chapter I present classes to represent playing cards, decks of cards, and poker hands.If you ...
- James Munkres Topology: Sec 18 Exer 12
Theorem 18.4 in James Munkres “Topology” states that if a function \(f : A \rightarrow X \times Y\) ...
- CMSC 216 Exercise #5
CMSC 216 Exercise #5 Spring 2019Shell Jr (”Shellito”) Due: Tue Apr 23, 2019, 11:30PM1 ObjectivesTo p ...
- 18年10月31日 NOIP模拟赛
T1.exercise 题解 数据很小直接模拟 代码 #include<iostream> #include<cstdio> #include<cmath> #in ...
- day06-codes and exercise in class
# Author: Ghost # Email: jiaci.liu@gmail.com ''' 1-Review of last week 2-interface class, abstract c ...
随机推荐
- C#.net winform 控件和皮肤大全
1. 东日IrisSkin IrisSkin 共有两个版本,一个是IrisSkin.dll 用于.Net Framework1.0/1.1 和IrisSkin2.dll 用于.Net Framewor ...
- java常见内存溢出(OOM)
jvm内存区域 程序计数器一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器. java栈与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同.通常存放基本数据类型, ...
- 数据库备份,远程执行SHELL脚本
小小的东东,用于数据库的备份. 留存. #!/bin/sh keepDays= currentTime=`date "+%Y-%m-%d-%H-%M"` backPath=&quo ...
- POJ - 2711 Leapin' Lizards
题目大意: 在一个网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一 ...
- codeforces Mafia
/* * Mafia.cpp * * Created on: 2013-10-12 * Author: wangzhu */ /** * 每个人都想玩若干场,求至少需要玩几场才可以满足大家的需求. * ...
- easyui源码翻译1.32--Slider(滑动条)
前言 使用$.fn.slider.defaults重写默认值对象.下载该插件翻译源码 滑动条允许用户从一个有限的范围内选择一个数值.当滑块控件沿着轨道移动的时候,将会显示一个提示来表示当前值.用户可以 ...
- 基于msys2工具集,自编译gcc-6.2.0、Qt-5.6.1-1和Qt-4.8.7(有nuwen.net网站提供的脚本)
好久没更新(其实大可不要经常更新吧),一直都是用Qt4,最近想着转向Qt5了,msys2是自带Qt的,但工具链经常会更新,依赖也较多,简便才方便,做了最后一组Qt工具的更新,如题,Qt-4.8.7作为 ...
- Android include的使用
如果在程序中多次用到一部分相同的布局,可以先将这部分布局定义为一个单独的XML,然后在需要的地方通过<include>引入,如下: main.xml <?xml version=&q ...
- Android游戏快速入门(一):基础储备
智能手机时代已经到来了,手机的性能正在以你我惊讶的速度提升.那么手机游戏也在迅速发展,从简单的平面单机游戏不断的向复杂的3D网络游戏发展.所以,手机游戏的市场肯定也在不断扩张.那么,作为程序猿,我们也 ...
- Android开发UI之动画侦听
动画侦听使用了AnimationListener接口,需要实现三个方法onAnimationStart().onAnimationRepeat().onAnimationEnd() 代码: 实现But ...