ACM
一线涯
爱生活 爱技术 爱妹子 坚持写博客...
展开
-
Sicily 1146. 采药
经典背包问题#include<iostream>#include<cstdio>using namespace std;#define MAXN 100 + 10#define MAXT 1000 + 10int d[MAXN][MAXT];原创 2013-07-23 21:23:31 · 1536 阅读 · 0 评论 -
sicily 1087. A Funny Game
n = 1 或 n = 2 ,毫无疑问,Alicen >=3 时,Bob总能在Alice取第一次后使自己取完后剩下偶数个硬币,且分成相等两堆(n为奇数时 Alice 取1 Bob取对角2,Alice取2 Bob取对角1),然后剩下两堆时Alice取多少Bob就在另一堆取对应位置取多少,最后就是Bob取到最后的硬币#includeusing namespace std;int mai原创 2013-07-16 23:25:46 · 1572 阅读 · 0 评论 -
Sicily 1485. Hanoi双塔问题
易得公式 2^(n+1) - 2 ,本想直接用模板,一想很久没写高精度,练练手,果然生疏了....o(╯□╰)o#include #include using namespace std;int main(){ int n,ans[100],len; bool flag = true; while(cin>>n) { if(!flag) cout<<endl;原创 2013-07-24 17:25:17 · 4308 阅读 · 0 评论 -
Sicily 1134. 积木分发
先排序,后判断#include#includeusing namespace std;struct my{ int has; int need;};bool cmp(my a ,my b ){ return a.need<b.need;}int main(){ int n,s,i,c[11000]; my a[11000]; while原创 2013-07-23 21:02:23 · 2139 阅读 · 0 评论 -
NYOJ 幸运三角形
时间限制:1000 ms | 内存限制:65535 KB难度:3描述 话说有这么一个图形,只有两种符号组成(‘+’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同,则下层的符号为‘+’,反之,为‘-’;如下图所示(n = 3 时的两种情况):原创 2013-07-15 22:21:31 · 1190 阅读 · 1 评论 -
Sicily 1388. Quicksum
又一道字符串的水题....#include #include using namespace std;int main(){ char ch[260]; while(cin.getline(ch,260)) { if(ch[0] == '#') break; int ans = 0; int n = strlen(ch); for(int i=0;i原创 2013-07-24 00:19:22 · 1667 阅读 · 0 评论 -
Sicily 1144. 陶陶摘苹果
好可爱的陶陶 O(∩_∩)O~#includeusing namespace std;int main(){ int height[11],h,ans = 0; for(int i=0;i < 10;++i) cin>>height[i]; cin>>h; h += 30; for(int i=0;i < 10;++i) if(height[i] <= h)原创 2013-07-23 21:10:21 · 1959 阅读 · 0 评论 -
Sicily 1129. ISBN
字符串简单处理#include#includeusing namespace std;int main(){ string str; int sum,k,i; while(cin>>str){ sum=0,k=10,i=0; while(k!=1){ if(str[i]!='-'){原创 2013-07-23 20:55:53 · 1585 阅读 · 0 评论 -
Sicily 1252 Defining Moment
小心有坑,看官莫跳!我用的方法比较笨,分别建立前缀和后缀的map,用#代表word然后找出前缀扩展表达式s1,和后缀扩展表达式s2接着决定两个表达式输出顺序,注意不要加主观色彩,即使看起来这样不合理。。。o(╯□╰)oans 初始为 “”,接着ans的扩展顺序是: s1的 # 前的部分,s2的 # 前的部分,原始的word,s2 的 # 后的部分,s1的 # 号后的部分输出an原创 2013-07-19 20:11:38 · 1437 阅读 · 0 评论 -
NYOJ 三个水杯
时间限制:1000 ms | 内存限制:65535 KB难度:4描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。输入第一行一个整数N(0接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>原创 2013-07-15 22:13:11 · 1487 阅读 · 0 评论 -
NYOJ 一笔画问题
时间限制:3000 ms | 内存限制:65535 KB难度:4描述zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输原创 2013-07-15 22:23:15 · 1158 阅读 · 0 评论 -
Sicily 1145. 校门外的树
重构之前代码 O(∩_∩)O~#include #include using namespace std;int main(){ int L,M,tree[10002],ans = 0; memset(tree,1,sizeof(tree)); cin>>L>>M; while(M--) { int st,ed; cin>>st>>ed; for(in原创 2013-07-23 21:19:06 · 1740 阅读 · 0 评论 -
Sicily 3913. 阶乘之和
http://soj.me/3913一开始被它的数据吓到了,还以为很复杂,但想清楚之后,确实是比较简单的,你只需要算到 24! 就行了,大于 24 的时候答案永远是 940313,因为我们是对 100000取模,算到24之后,尾数都至少有 6 个0,对 1000000 取模永远是 0,所以答案保持不变。不需要 while(cin>>n) 只是这样写自己测试方便。原创 2013-07-23 22:45:33 · 1694 阅读 · 0 评论 -
Sicily 1006. Team Rankings
数据太小,直接暴力....这是 next_permutation用法 : http://www.cplusplus.com/reference/algorithm/next_permutation/?kw=next_permutation#include #include #include #include using namespace std;int ma原创 2013-08-11 11:05:41 · 2965 阅读 · 0 评论 -
Sicily 1133. SPAM
判断条件比较蛋疼#include<iostream>#include<string>#include<cstring>using namespace std;int main(){ char str[1000]; while(cin.getline(str,1000)){ int n = strlen(str); for(int i=0;i<n;++i){ if(i>0&&str[i]=='@'&&i!=n-1){ bool is=1; int pos = i,原创 2013-07-23 20:59:24 · 2350 阅读 · 0 评论 -
sicily 1007. To and Fro
很久之前的代码了...丑陋勿喷应该可以不开数组直接输出的,懒得写 了...o(╯□╰)o#include #includeusing namespace std;int main(){ int n=1,k,i,t,j,l; string a; char m[200]; while (n!=0){ cin>>n; if (n==0){原创 2013-07-16 16:55:47 · 1654 阅读 · 0 评论 -
Sicily 1790. Single Round Match
高进度除法或者将一个数奇位上的数字与偶位上的数字分别加起来,再求它们的差,如果这个差是11的倍数(包括0),那么,原来这个数就一定能被11整除.#include #include using namespace std;int main(){ string b,g; int T; cin>>T; while(T--) { cin>>b>>g; if原创 2013-07-28 15:48:11 · 1611 阅读 · 2 评论 -
sicily 1003. Hit or Miss
根据定义的游戏规则进行模拟当循环200次后牌数仍无变化时,判断为不可获胜状态。这个自己写一个大概的数字就可以了。#include#include#includeusing namespace std;int main(){ int T,count[11],n,tmp,dis; cin>>T; for(int k=0;k<T;++k){ queuep[11];原创 2013-07-16 16:52:02 · 1658 阅读 · 0 评论 -
Sicily 1634. Relax! It's just a game
http://soj.me/1634一看题目这么长就不想看,乍看数据还差点以为真的直接做加法...o(╯□╰)o 但看提交和通过的比例就知道不对,还是老老实实看一遍吧。。。这道题应该用组合数学的但我直接用深搜了事#include #include using namespace std;int ans;void dfs(int a, int b)原创 2013-07-25 16:37:35 · 1417 阅读 · 0 评论 -
Sicily 4424. David’s Lucky Numbers
http://soj.me/4424妈妈告诉我们不要太暴力,于是,我剪枝了....真的没有很暴力...没有很暴力....暴力....#include #include #include using namespace std;int k = 0;long long luckyNum[500];void genLuckyNum(long l原创 2013-07-24 21:13:54 · 1681 阅读 · 0 评论 -
Sicily 1344. 数列
http://soj.me/1344看这下面三个序列:1, 3, 4, 9, 10, 12, 13,…3^0, 3^1, 3^0+3^1, 3^2, 3^0+3^2, 3^1+3^2,3^0+3^1+3^2,…1, 10, 11, 100, 101, 110, 111,...是不是有种恍然大悟的感觉?所以,要求第N个数,你只要把N转为二进制,然后把所有 1 对应的权加起来就行了原创 2013-07-24 19:55:13 · 1209 阅读 · 0 评论 -
Sicily 4422. Boat Game
http://soj.me/4422水题飘过~#include #include #include using namespace std;int main(){ int T,n,m,c,pos[21]; cin>>T; while(T--) { cin>>n>>m; cin>>c; for(int i = 0;i < c;++i) cin>原创 2013-07-25 10:55:22 · 1434 阅读 · 0 评论 -
Sicily 4495. Print permutations
http://soj.me/4495按字典序生成字符串的全排列给个递归的:#include #include #include using namespace std;int len;bool ever[9];string str;void permutation(string cur){ if(cur.size() == len) { cout<原创 2013-07-24 15:54:27 · 1288 阅读 · 0 评论 -
sicily 1014. Specialized Four-Dig
#includeusing namespace std;int changetwelve(int num){ int n=0,mod=0; while(num){ mod=num%12; n += mod; num = num/12; } return n;}int changesixteen(int num){ int n=0,mod=0; while(num){原创 2013-07-16 16:57:31 · 1163 阅读 · 0 评论 -
sicily 1024. Magic Island
简单的BFS:#include#include#include#includeusing namespace std;class Node{public: int city1,city2,distance; Node(int city1,int city2,int distance){ this->city1 = city1; this->city2 = cit原创 2013-07-16 22:47:30 · 1490 阅读 · 0 评论 -
NYOJ 最少步数
时间限制:3000 ms | 内存限制:65535 KB难度:4描述这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,0,1,0,1,0原创 2013-07-15 22:24:24 · 1075 阅读 · 0 评论 -
sicily 1001. Alphacode
思路:用ans[i]表示从第1位到第i位有多少种解码方式。初始化ans[0] 和 ans[1] 为1注意 ans 和 str 的起始坐标不同,所以 ans[i+1] 和 str[i] 对应如果str[i] != '0' 那么它就可以作为一个单独字母解码 ans[i+1] = ans[i]如果 str[i-1] 和 str[i] 可以作为有效解码,那么 ans[i+1] += a原创 2013-07-16 16:43:57 · 1082 阅读 · 0 评论 -
sicily 1020. Big Integer
高精度求余#include#include#includeusing namespace std;int main(){ int T,n,base[101],mod[101]; string str; cin>>T; for(int h=0;h<T;++h){ cin>>n; memset(mod,0,sizeof(mod)); for(int i=0;i<原创 2013-07-16 17:20:22 · 829 阅读 · 0 评论 -
sicily 1021. Couples
类似于约瑟夫问题直接用链表进行模拟#include#includeusing namespace std;struct couple{ int num,cou; couple *left,*right;}cir[200001];void init(int n){ for(int i=0;i<2*n;++i){ cir[i].num = i+1; if(i!=0)原创 2013-07-16 17:26:22 · 1245 阅读 · 0 评论 -
sicily 1027. MJ, Nowhere to Hide
可以有多种实现方法,觉得用两个map比较简单:#include #include #include using namespace std;int main(){ mapmyIP; mapmajia; int n; while(cin>>n,n) { myIP.clear(); majia.clear(); while(n--) {原创 2013-07-16 22:48:56 · 1410 阅读 · 0 评论 -
sicily 1031. Campus
求最短路:include#include#include#include#include#includeusing namespace std;#define INF 0x3f3f3f3f#define MAXN 220struct node{ int x,y; int d; node(int str1,int str2,int dis){原创 2013-07-16 22:50:12 · 1146 阅读 · 0 评论 -
sicily 1035. DNA matching
#include#include#includeusing namespace std;int main(){ char DNA[130]; string str[110]; bool used[100]; DNA['A'] = 'T'; DNA['T'] = 'A'; DNA['C'] = 'G'; DNA['G'] = 'C'; int T,n; cin>>T; w原创 2013-07-16 22:51:42 · 1635 阅读 · 0 评论 -
sicily 1036. Crypto Columns
依然模拟:#include#includeusing namespace std;int main(){ string mess,key; while(cin>>key&&key!="THEEND"){ cin>>mess; int n1 = key.size() , n2 = mess.size(),count=0,cheng=n2/n1; int *pro =原创 2013-07-16 22:53:53 · 1455 阅读 · 0 评论 -
sicily 1049. Mondriaan
画图找递推关系:#includeusing namespace std;int answer[1000010];int main(){ int N=0,L=0,ans=0,i=0; answer[0]=1; answer[1]=2; answer[2]=7; answer[3]= 2; answer[4]=1; for(i=5;i<1000010;++i){ a原创 2013-07-16 22:56:33 · 1097 阅读 · 0 评论 -
sicily 1085. Longge's problem
#include#include#includeusing namespace std;int prime[100000];bool isprime[100002];int main(){ memset(prime,0,sizeof(prime)); memset(isprime,1,sizeof(isprime)); int k=0; for(int i=2;i<100000原创 2013-07-16 23:07:27 · 988 阅读 · 0 评论 -
NYOJ 图像有用区域
时间限制:3000 ms | 内存限制:65535 KB难度:4描述“ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。输入第一行输入测试数据原创 2013-07-15 22:18:40 · 657 阅读 · 0 评论 -
NYOJ 亡命逃窜
时间限制:1000 ms | 内存限制:65535 KB难度:4描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧。不过英雄不是这么好当的。这个可怜的娃被魔王抓住了,倍受折磨,生死一线。有一天魔王出去约会了,这可是一个千载难逢的逃命机会。你现在的任务就是判断一下这个英雄未遂的孩子能不能在魔王回来之前逃出魔王的城堡,成功逃生,最后迎娶我们美丽的公主。原创 2013-07-15 22:19:38 · 1138 阅读 · 0 评论 -
NYOJ 坦克大战
时间限制:1000 ms | 内存限制:65535 KB难度:3描述Many of us had played the game "Battle city" in our childhood, and some people (like me) even often play it on computer now. What we are discussing is a sim原创 2013-07-15 22:16:54 · 1102 阅读 · 0 评论 -
sicily 1046. Plane Spotting
排序问题:#include#includeusing namespace std;struct period{ double average; int periodTime,a,b;};bool cmp(period value1,period value2){ if (value1.average!=value2.average) r原创 2013-07-16 22:55:18 · 1828 阅读 · 0 评论 -
sicily 1052. Candy Sharing Game
#includeusing namespace std;int main(){ int child[100],i,count,n; bool equ; while (cin>>n,n){ count=0; equ=0; for (i=n-1;i>=0;i--) cin>>child[i]; while (equ==0) { child[n]=child[0原创 2013-07-16 23:01:38 · 1154 阅读 · 0 评论