随笔分类 -  南邮ACM

摘要:描述一位秘书在距离家以东n个街区,以北m个街区的一座大楼里工作。每天他要步行5个街区上班。(右图为n=3,m=2时的情形)。对于他来说可能有多少种不同的上班路线f(n,m)(上班是件敢时间的事情,他的行进速度保持不变,他需要尽可能早到达公司)输入输入包括一行,两个正整数n,m ( 0 #includeint qkpass(int *r,int left,int right){ int i,j, x=r[left]; i=left; j=right; while(i=x) j--; if(i<j) { ... 阅读全文
posted @ 2013-11-22 10:14 七年之后 阅读(309) 评论(0) 推荐(0)
摘要:描述设有n个活动的集合E={1,2,……,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si=fj或者sj>=fi时,活动i与活动j相容。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。 但在现实生活中,不同的活动所带来的价值和意义是不一样的,所以我们可以为每个活动附上一个权值,现在的问题就是要在所给的活动集合中选出权值和最大的相容活动子集合。 输入第一行输入一个正整数n(1#includeusing namespace std;inline int maxx 阅读全文
posted @ 2013-11-22 10:12 七年之后 阅读(734) 评论(0) 推荐(0)
摘要:描述给出N个整数X1,X2,X3,……,XN,将这N个数从小到大排序为A1,A2,A3,……,AN,记数列A1,A2,A3,……,AN的奇数项之和为P,偶数项之和为Q,令T=|P-Q|,求出T的值。 输入 第一行为整数N(1#include using namespace std;int main(){ int num,temp,i; int Q=0,T=0;// int a; scanf("%d",&num); priority_queue pq; for(i=0;i0) cout<<p<<endl; else cout<... 阅读全文
posted @ 2013-11-22 10:10 七年之后 阅读(317) 评论(0) 推荐(0)
摘要:描述 飞弹能够沿固定方向摧毁高度递减的目标。现在已知一直线上从左到右各个目标的高度。需要你求出飞弹最多能够摧毁多少目标。飞弹自最左端发射,起始高度任意,从左至右摧毁目标。 输入第一行是一个正整数n(1using namespace std;int main(){ int n,*a,*count,i,j,max; cin>>n; a=new int[n]; count=new int[n]; for(i=0;i>a[i]; count[i]=1; } for(i=n-1;i>=0;i--) { max=0; ... 阅读全文
posted @ 2013-11-22 10:09 七年之后 阅读(267) 评论(0) 推荐(0)
摘要:描述A城是由许多小城镇组成的,在A城的各个小城镇间建了许多道路(道路是双向的)。这些道路是A城便利交通的基础。游客通过这些道路可以在任意两个城镇之间往返。最近市长对这座城市错综复杂的交通感到厌烦,决定重新规划A城的道路。所以他派给你一个任务:留下尽可能少的道路,保证任意两个城镇之间还是可达的。将其他多余的道路全部拆除。 输入第一行为两个正整数n(1using namespace std;#define MAXT 1001#define MAXK 31inline int max(int a,int b){ return a>b?a:b;}int main(){ int t,k,i,... 阅读全文
posted @ 2013-11-22 10:07 七年之后 阅读(312) 评论(0) 推荐(0)
摘要:描述一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢? 输入输入数据有若干组,每组数据包含二个整数a,b(0using namespace std;int main(){ int a,b,c[100]; int i=0,j,k; while(cin>>a>>b&&(a!=0&&b!=0)) { for(j=0;j1) { for(k=0;k=10) cout<<c[k]<<" "; else cout<<"0"<<c 阅读全文
posted @ 2013-11-22 10:00 七年之后 阅读(220) 评论(0) 推荐(0)
摘要:描述给出一个长度为n的序列A1,A2,…,An,求最大的连续和。要求找到1≤i≤j ≤n,使得Ai+Ai+1+…+Aj尽量大。 输入第1行输入一个正整数n(n≤1000),此后输入n行,每行给出一个测试用例,包含正整数m和m个整数,以空格分隔各个数。输出输出n行。对于每一个测试用例,在一行输出最大的连续和。样例输入2 3 1 -1 3 3 1 2 3样例输出3 6 #includeint a[1001],s[1001];int main(){ int t,n,i,max,min; scanf("%d",&t); while(t--) { scanf("%d 阅读全文
posted @ 2013-11-22 09:56 七年之后 阅读(251) 评论(0) 推荐(0)
摘要:描述端午节到来,sed投资建设的仙林鼎山游乐园开业了。整个园区拥有许多游乐场,有多个入口和多个出口,游乐场之间铺设小路相连。端午节来游乐园的人实在太多,sed发布规定:游乐场之间的小路为单行道。但游乐场太多,工作人员常常将指示方向的标志牌放错方向,导致游客在游乐园又回到游览过的地方。请sed解决这个问题,按照现有的标志牌指示的方向,判断游客在一次行程中是否有可能回到游览过的地方。输入第一行是一个正整数:测试用例数目,最多为100。之后,每个测试用例包括:l 第1行给出两个整数n、e,2≤n≤50,1≤e≤1225,n表示游乐场的数目,游乐场分别用,e表示所有游乐场之间路径数。l e行,每1行给 阅读全文
posted @ 2013-11-22 09:55 七年之后 阅读(328) 评论(0) 推荐(0)
摘要:描述知道斐波那契数吗?下面是它的一个定义:F1 = 1F2 = 2Fn+1 = Fn+Fn-1 ,这里n>1每个正整数x 可写为不同斐波那契数的总和,因而意味着存在数k 和数 b1, b2, ..., bk,使得x=b1*F1+...+bi*Fi+ ... +bk*Fk, 其中bk = 1,bi (1≤i 1,bi * bi-1 = 0。利用斐波那契数,我们可以将公里单位距离 x 转换为相应的英里单位距离 y,首先,以斐波那契系统表示b(x)写下x。其次,将b(x)中数字右移一位(最后一位删除),得到b(y)。第三,从b(y)中计算总数来算出 y。例如,数42以斐波那契系统表示为:(1, 阅读全文
posted @ 2013-11-22 09:54 七年之后 阅读(346) 评论(0) 推荐(0)
摘要:描述输入正整数n,把整数1,2,3,…,n组成一个环,使得相邻两个整数之和为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。1using namespace std;const int PRIME[] = {0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1};int isPrime(int a){ return PRIM... 阅读全文
posted @ 2013-11-22 09:52 七年之后 阅读(326) 评论(0) 推荐(0)
摘要:描述全排列的生成就是对于给定的字符集或数集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。对给定的字符集中的字符规定一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后,或根据给定的数集中的大小关系,规定两个全排列的先后是从左到右逐个比较对应的数的大小,即依照字典序给出全排列。例如字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列是: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 给定n个整数,现请编程求它们所有的全排列。 输入输入包括两个行,第一行给出正整数n( 0 #include #define N 8using n 阅读全文
posted @ 2013-11-22 09:51 七年之后 阅读(312) 评论(0) 推荐(0)
摘要:描述输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块。如下图所示的图形有3个八连块。输入第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串。 输出在输入黑白图像中,八连块的个数样例输入6 100100 001010 000000 110000 111000 010100样例输出3 #include#include#include#include#define PI 4.0*atan(1.0)#define MAX_32_INT#define MAX_64_INT 阅读全文
posted @ 2013-11-22 09:50 七年之后 阅读(300) 评论(0) 推荐(0)
摘要:描述Trees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines' CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics. This problem involves building and traversing binary tr 阅读全文
posted @ 2013-11-22 09:48 七年之后 阅读(363) 评论(0) 推荐(0)
摘要:描述你有一些小球,从左到右依次编号为1,2,3,…,n,如下图所示:你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。 例如,在初始状态下执行A 1 4后,小球1被移动到小球4的左边,如下图所示: 如果再执行B 3 5,结点3将会移到5的右边,如下图所示:输入输入小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。输出从左到右输出最后的小球序列。 样例输入6 2 A 1 4 B 3 5样例输出2 1 4 5 3 6 #include#define maxn 500100int l[ 阅读全文
posted @ 2013-11-22 09:47 七年之后 阅读(290) 评论(0) 推荐(0)
摘要:描述 输入非负整数n和m,求组合数 ,其中m≤n≤20 输入输入非负整数n和m,以空格分隔。输出输出组合数。样例输入5 2样例输出10 #include using namespace std;long double zuhe(int n,int m){ long double t=1,s=1; for(int i=1;in-m;j--) s=s*j; return s/t;}int main(){ int n,m; cin>>n>>m; if(m==0) cout<<"1"<<endl; else cout<<z 阅读全文
posted @ 2013-11-22 09:46 七年之后 阅读(232) 评论(0) 推荐(0)
摘要:描述记得上小学奥数时,JacmY最喜欢做的题就是给一个图形,从它某一个顶点出发描这个图形,若恰通过图中每条边一次,看最后能否又回到起点。当时JacmY只懂得拿着铅笔随便画画试试,如果成功了,就说这个图能画下来,而他判断不能画下来的标准就是费了半天功夫都画不出来,当然这么做是不对的,特别当图形变得复杂时,JacmY是试不过来的。看着可怜的JacmY,你能帮帮他吗? 输入第一行一个整数T代表样例的组数。以下T组数据中,每组第一行是N,K,(2 using namespace std;int main(){ int test; int n,k,i,x,y; cin>>test; ... 阅读全文
posted @ 2013-11-22 09:45 七年之后 阅读(449) 评论(0) 推荐(0)
摘要:描述在n×n方阵里填入1,2,…, n×n,要求填成蛇形(见样例)。 输入输入正整数n,n≤64。输出输出蛇形矩阵,要求每个数格式宽度为5、右对齐。样例输入4样例输出10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4#include #include #include #include #define MAXN 65 using namespace std;int a[MAXN][MAXN]; int main() { int n, x, y, val=0; cin>>n; memset(a,0,sizeof(a));... 阅读全文
posted @ 2013-11-22 09:43 七年之后 阅读(251) 评论(0) 推荐(0)
摘要:描述This problem is based on the game of Black Vienna. In this version there are three players and 18 cards labeled A-R. Three of the cards are set aside (hidden) and form the "Black Vienna" gang. The remaining cards are shuffled and dealt to the players so that each player has 5 cards. Play 阅读全文
posted @ 2013-11-22 09:42 七年之后 阅读(661) 评论(0) 推荐(0)
摘要:描述Rock, Paper, Scissors is a classic hand game for two people. Each participant holds out either a fist (rock), open hand (paper), or two-finger V (scissors). If both players show the same gesture, they try again. They continue until there are two different gestures. The winner is then determined ac 阅读全文
posted @ 2013-11-22 09:37 七年之后 阅读(283) 评论(0) 推荐(0)
摘要:描述The company Al's Chocolate Mangos has a web site where visitors can guess how many chocolate covered mangos are in a virtual jar. Visitors type in a guess between 1 and 99 and then click on a "Submit" button. Unfortunately, the response time from the server is often long, and visitor 阅读全文
posted @ 2013-11-22 09:35 七年之后 阅读(338) 评论(0) 推荐(0)