8-15-Exercise
这次的题目......只觉得泪奔啊......T T
A.HDU 1042 N!
因为0<=n<=1000,故一定要用数组或字符串【同样因为n<=1000故用数组就够了~~~】。
代码:
#include <iostream>
#include <cstdio>
using namespace std; int a[]; int main()
{
int n,i,j;
while(~scanf("%d",&n))
{
if(n== || n==){printf("1\n"); continue;}
a[]=; //用来记录数字的位数
a[]=;
for(i=;i<=n;i++)
{
int sum=;
for(j=;j<=a[];j++)
{
int temp=a[j]*i+sum;
sum=temp/;
a[j]=temp%;
}
while(sum)
{
a[j]=sum%;
a[]=j;
sum/=;
j++;
}
}
for(i=a[];i>=;i--)
printf("%d",a[i]);
printf("\n");
}
return ;
}
//memory:372KB time:1546ms
B.HDU 1050 Moving Tables
下面是网上的代码,我做这道题时,自己的思路与下面代码的思路略有不同......我是把区间从大到小排了后再找同一时间能作业的区间,看要找几次;而网上的代码的思路则是找重叠区域,看重叠的次数。其实,实质上,我的“找的次数”与网上的“重叠次数”都是相同的,但不知道为什么WA,但测试了好几组数据都是对的......
我的代码如下【还望高手不吝赐教】:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; class N
{
public:
int x,y,id;
}a[]; bool comp(N w,N q)
{
return w.x<q.x;
} int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
memset(a,,sizeof(a));
scanf("%d",&n);
for(i=;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(x<y)
{a[i].x=x;a[i].y=y;}
else
{a[i].x=y;a[i].y=x;}
}
sort(a,a+n,comp);
int sum=;
for(i=;i<n;i++)
if(a[i].id==)
{
a[i].id=;
int minn=a[i].y;
for(j=i+;j<n;j++)
if(a[j].id== && a[j].x>minn)
{
a[j].id=;
minn=a[j].y;
}
sum++;
}
printf("%d\n",sum*);
}
return ;
}
网上的AC代码:
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std; #define maxn 460 int main()
{
int t,i,n,b,e;
scanf("%d",&t);
while (t--)
{
int c[]={},m=;
scanf("%d",&n);
while (n--)
{
scanf("%d%d",&b,&e);
if (b>e)
{
i=b;
b=e;
e=i;
}
for (i=(b-)/;i<=(e-)/;++i)
++c[i];
}
for (i=;i<;++i)
if (m<c[i])m=c[i];
printf("%d\n",*m);
}
return ;
}
//memory:228KB time:0ms
C.HDU 1181 变形课
题意:就是在一堆的字符串中看“b”是否能转换成“m”。【转换关系:每一个字符串的首字母可以变为尾字母】
BFS~
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std; const int inf=<<;
bool vis[];
int a[][];
char c[]; void bfs()
{
int q1=,q2,i;
queue<int> q;
memset(vis,,sizeof(vis));
q.push(q1);
vis[q1]=;
while(!q.empty())
{
q2=q.front();
q.pop();
for(i=;i<;i++) //i代表的是字母【example:i=0,代表A】
if(!vis[i] && a[q2][i]==)
{
if(i=='m'-'a')
{
puts("Yes.");
return;
}
q.push(i);
vis[i]=;
}
}
puts("No.");
return;
} int main()
{
int t,n,i,j,len;
memset(a,,sizeof(a));
while(~scanf("%s",c))
{
len=strlen(c);
a[c[]-'a'][c[len-]-'a']=; //建立字母转换的图
if(c[]=='')
{
bfs();
memset(a,,sizeof(a));
}
}
return ;
}
//memory:268KB time:0ms
D.HDU 3501 Calculation 2
是考欧拉函数~
来源:http://gzhu-101majia.iteye.com/blog/1296950
代码:
#include <iostream>
#include <cstdio>
using namespace std; #define M 1000000007 int eular(__int64 n) //欧拉函数
{
int i,ans=n;
for(i=;i*i<=n;i++)
if(n%i==)
{
ans-=ans/i;
while(n%i==)
n/=i;
}
if(n>) ans-=ans/n;
return ans;
} int main()
{
__int64 n,ans;
while(scanf("%I64d",&n),n)
{
ans=n*(n+)/-n;
ans-=eular(n)*n/;
ans%=M;
printf("%I64d\n",ans);
}
return ;
}
//memory:228KB time:15ms
E.HDU 2601 An easy problem
i*i+i+j=n可以写成:(i+1)*(j+1)=n-1
式子改成了上面这个模样......答案就华华丽丽的出来了~~╮(╯▽╰)╭
代码:
#include<stdio.h>
#include<math.h>
int main()
{ int t;
scanf("%d",&t);
while(t--)
{
__int64 n;
scanf("%I64d",&n);
n++;
__int64 i;
__int64 sum=;
for(i=;i*i<=n;i++)
if(n%i==)
sum++;
printf("%I64d\n",sum); }
return ;
}
//memory:228KB time:2000ms
8-15-Exercise的更多相关文章
- C - The C Answer (2nd Edition) - Exercise 1-5
/* Modify the temperature conversion program to print the table in reverse order, that is, from 300 ...
- MIT 6.828 JOS学习笔记5. Exercise 1.3
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...
- Think Python - Chapter 15 - Classes and objects
15.1 User-defined typesWe have used many of Python’s built-in types; now we are going to define a ne ...
- 《how to design programs》15章 相互引用的数据定义
由结构体组成的表与结构体中的表. 在用追溯形式建立家家谱树时,我们通常从某个后代除法,依次处理它的父母,组父母等.而构建树时,我们会不断添加谁是谁的孩子,而不是写出谁是谁的父母,从而建立一颗后代家谱树 ...
- CMSC 216 Exercise #5
CMSC 216 Exercise #5 Spring 2019Shell Jr (”Shellito”) Due: Tue Apr 23, 2019, 11:30PM1 ObjectivesTo p ...
- 软件测试:3.Exercise Section 2.3
软件测试:3.Exercise Section 2.3 /************************************************************ * Finds an ...
- (14)Why some people find exercise harder than others
https://www.ted.com/talks/emily_balcetis_why_some_people_find_exercise_harder_than_others/transcript ...
- 【DeepLearning】Exercise:Self-Taught Learning
Exercise:Self-Taught Learning 习题链接:Exercise:Self-Taught Learning feedForwardAutoencoder.m function [ ...
- TEXT 15 A text a day...
TEXT 15 A text a day... Mar 24th 2006 From The Economist print edition The medical uses of mobile ph ...
- 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 ...
随机推荐
- Viz World and Viz Curious Maps 教程 -- 基础篇
0. 开篇之前的一些废话 本文的内容是之前因为一些原因而写的,现在打算分享出来,内容就不做更改纯迁移了…毕竟我也太久没摸过加密狗了( ╯□╰ ).内容定位是教程,对应的 Curious World M ...
- JavaScript 找出数组中重复的元素
实现检测数组重复元素的功能,需要注意一点的是,多个(2个或2个以上)重复元素,我们只需要挑出一个来就可以了. <!DOCTYPE html> <html> <head&g ...
- 关于最大流的EdmondsKarp算法详解
最近大三学生让我去讲课,我就恶补了最大流算法,笔者认为最重要的是让学弟学妹们入门,知道算法怎么来的?为什么是这样?理解的话提出自己的改进,然后再看看Dinic.SAP和ISAP算法….. 一.概念引入 ...
- [DP] The 0-1 knapsack problem
Give a dynamic-programming solution to the 0-1 knapsack problem that runs in O(nW) time, where n is ...
- NSMutableArray,NSMutableDictionary的内存管问题
今天做项目遇到一个问题,在一个类中定义了一个可变数组,使用的是copy的内存管理策略 当往数组中添加包装好的基本数据的时候,程序直接崩溃了.解决方法:把copy换成strong就不会崩溃了; 后来做了 ...
- TC SRM 607 DIV2
求拼接完成后的字符串包含的子回文串的数目,一开始还用暴力去做,想都不用想 肯定超时了. 复习了一下求最长子回文串的算法,发现可以类似解决. 给相邻字符之间添加一个'@'字符,这样所有的回文串都是奇数长 ...
- org.dom4j.DocumentException unknown protocol h
待解析文件的路径中有空格,把空格去掉就好了
- UL LI 布局 TAB 切换条
web页面实现tab的功能有几种实现方式,下面是使用UL LI DIV方式实现的tab. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- Android EditText多行显示及所有属性
android:id="@+id/editSms" android:layout_width="fill_parent" android:layout_heig ...
- JQuery实现点击div以外的位置隐藏该div窗口
简单示例代码: <body> <script type="text/javascript" src="http://ajax.googleapis.co ...