2011年7月5日

sicily 1345. 能量项链

摘要: // 题意: 项链上有N颗能量珠,两颗珠子(m,r)与(r,n)聚合成一颗,释放的能量为m*r*n,// N颗珠子聚合成一颗,不同的聚合顺序得到的总能量是不同的,求出一串项链释放出的总能量的最大值// 当N=4, 分别为 (2,3) (3,5) (5,10) (10,2),则最大值是((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710#include<iostream> //DP#include<cstring>using namespace std;int n,num[210][2],dp[210][210];// dp[i][j]表示 i 条 阅读全文

posted @ 2011-07-05 20:55 sysu_mjc 阅读(565) 评论(0) 推荐(0) 编辑

sicily 1037. Decorations

摘要: /*题意: 给出一些长度相同的子串,目标串必须是由这些子串首尾连接起来,问有多少长度为L的目标串满足,比如:4 5 6ABB BCA BCD CAB CDD DDA则目标串有两个: BCABB 和 BCDDA定义连接 ch[i]->ch[j] , 只要满足 ch[i][1..len-1] = ch[j][0..len-2],即串i的后部分与串j的前部分重叠把每个输入的字符串当作顶点,字符串之间若可以连接则建立一条边,由此得到初始图,问题就转化成求 顶点数为 L-len+1 的路径 的总数*/#include<iostream> //DP#include<cstring& 阅读全文

posted @ 2011-07-05 12:20 sysu_mjc 阅读(215) 评论(0) 推荐(0) 编辑

sicily 1099. Packing Passengers

摘要: #include<iostream> //线性同余方程 Run Time: 0.15secs#include<cmath>#include<stdio.h>using namespace std;long long x,y,q;void extend_eulid(long long a,long long b) //扩展欧几里德定理, x*a+y*b=gcd(a,b)=q{ if(b==0) { x=1;y=0;q=a; } else { extend_eulid(b,a%... 阅读全文

posted @ 2011-07-05 03:24 sysu_mjc 阅读(326) 评论(0) 推荐(0) 编辑

sicily 1509. Rails

摘要: //与 poj 1363 rails 相同#include<iostream> #include<stack> using namespace std; int n,target[1001],temp; int main() { while(cin >> n&&n) { while(cin >> temp&&temp) { stack<int> s;//申请STL栈堆 int A = 1,B = 1;//A是有顺序的车厢号,B是栈堆指针 target[1] = temp; for(int i = 2;i 阅读全文

posted @ 2011-07-05 03:17 sysu_mjc 阅读(406) 评论(0) 推荐(0) 编辑

sicily 1738. Get Ready?

摘要: // Penalty是不用管的。。。#include<iostream>#include<algorithm>#include<functional>using namespace std;struct node{ int id,s; bool operator>(const node& o)const { return s>o.s; }}ans[1000000];int main(){ int cases,n,t,s,p; cin>>cases; while(cases--) { cin>>n; for(int 阅读全文

posted @ 2011-07-05 03:09 sysu_mjc 阅读(105) 评论(0) 推荐(0) 编辑

sicily 1231. The Embarrassed Cryptography

摘要: //poj6 2635 The Embarrassed Cryptographer//题意: 给定4 ≤ K ≤ 10^100 和 2 ≤ L ≤ 10^6 ,问 K 是否存在小于L的素因数//由于这里K值很大,如果用普通的高精度来计算,那么将会TLE,//《全国信息学奥林匹克联赛培训教程<二>》中介绍了一种方法来改善高精度运算的效率:扩大进制数.//用整数数组每一个元素表示一个十进制整数的方法存在的缺点是:如果十进制的位数很多,则对应的数组的长度会很长,并增加了高精度计算的时间。//理论上来说,高精度运算所用的数组中的每个数表示的数字越多,数组的长度就越小,程序运行的时间也就越短 阅读全文

posted @ 2011-07-05 03:02 sysu_mjc 阅读(297) 评论(0) 推荐(0) 编辑

sicily 1259 Sum of Consecutive Primes

摘要: #include<iostream> #include<stdio.h>#include<string.h>using namespace std;#define maxn 10002bool isPrime[maxn];int prime[maxn],cnt;void make_prime() //线性筛法求素数{ cnt=0; memset(isPrime,true,sizeof(isPrime)); for(int i=2;i<=maxn;++i) { if(isPrime[i]) prime[cnt... 阅读全文

posted @ 2011-07-05 02:56 sysu_mjc 阅读(260) 评论(0) 推荐(0) 编辑

sicily 1240. Faulty Odometer

摘要: //自己想复杂了,原来可以这么简单~~~~//把一个9进制数转换成10进制//不过这个9进制数的数字是0 1 2 3 5 6 7 8 9,就是没有4//把4之后的数都减一,然后就是真正的9进制数//“1399” = 1388(9) = 1052(10)//“1500” = 1400(9) = 1053(10)//因此把数字转成标准9进制,再转成10进制就OK了#include<iostream>#include<string.h>#include<stdio.h>using namespace std;int main(){ char ch[10]; whi 阅读全文

posted @ 2011-07-05 02:47 sysu_mjc 阅读(221) 评论(0) 推荐(0) 编辑

sicily 1298. 数制转换

摘要: #include<iostream>using namespace std;int res[1000];int main(){ int n; while(cin>>n) { if(n==0) { cout<<"0\n"; continue; } int m,r=0; while(n!=0) { if(n>0) { if(n%3!=2) { res[r++]=n%3; n/=3; } else //比如n=5, 应该将n看作是 3*2+(-1) { res[r++]=-1; n=n/3+1; } } else { m=-n; if(m 阅读全文

posted @ 2011-07-05 02:40 sysu_mjc 阅读(212) 评论(0) 推荐(0) 编辑

sicily 1796. Max's kingdom

摘要: #include<iostream> //求中位数#include<algorithm>#include<stdio.h>using namespace std;struct node{ int p,a; bool operator<(const node& o)const { if(p==o.p) return a<o.a; else return p<o.p; }}ans[1000000];int main(){ int n,i,mid; while(cin>>n) { for(i=0;i<n;++i) cin 阅读全文

posted @ 2011-07-05 02:33 sysu_mjc 阅读(160) 评论(0) 推荐(0) 编辑

sicily 1531. Pythagorean Proposition II

摘要: #include<iostream>using namespace std;int main(){ int n,l; cin>>n; while(n--) { cin>>l; int s=0; for(long long a=1;a<=l/3;++a) //这里要用长整形,因为下面的(l-a)*(l-a)会超int范围 { double c=((l-a)*(l-a)+a*a)/(2.0*(l-a)); //由a+b+c=l ,a^2+b^2=c^2 联立可得 if((int)c==c&&l-a-c>=a) //保证a<=b& 阅读全文

posted @ 2011-07-05 02:32 sysu_mjc 阅读(221) 评论(0) 推荐(0) 编辑

sicily 1121. Tri Tiling

摘要: #include<iostream> //DP#include<stdio.h>using namespace std;int dp[31]={1}; //0的时候就是不放置,是1...int main(){ for(int i=2;i<=30;i+=2) { dp[i]=3*dp[i-2]; //在3x2矩阵中可以有3种放置方法,表示[i-2,i]不与前面相连接,单独拼凑成 for(int j=0;j<=i-4;j+=2) dp[i]+=2*dp[j]; //当j=i-4,i-6...时,表示[i-4,i],[i-6,i]...是连接在一起的,无法分割,各 阅读全文

posted @ 2011-07-05 02:30 sysu_mjc 阅读(408) 评论(0) 推荐(0) 编辑

sicily 1128. DICE

摘要: //ans[1]-ans[6]分别记录 东 西 北 南 上 下 的值,我们可以确定最后一定要转到://ans[1]=1,ans[3]=2,即 the east face is 1, the north face is 2, //为了判断是 left或是 right ,我们要先把 东 面转到 1 ,再把 北 面转到 2,//最后如果 上 面是3,则是right; 如果 下 面是3,则是left#include<iostream>#include<stdio.h>using namespace std;int main(){ char ch[10]; int ans[10] 阅读全文

posted @ 2011-07-05 02:25 sysu_mjc 阅读(220) 评论(0) 推荐(0) 编辑

sicily 2014. Dairy Queen

摘要: #include<iostream> //动态规划,给出几种不同硬币,求组成总值n有多少种方法#include<cstring>using namespace std;int main(){ int n,c,dp[400],w[10]; cin>>n>>c; for(int i=0;i<c;++i) cin>>w[i]; memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=0;i<c;++i) //类似于完全背包问题 for(int j=w[i];j<=n;++j) dp[j]+= 阅读全文

posted @ 2011-07-05 02:22 sysu_mjc 阅读(240) 评论(0) 推荐(0) 编辑

sicily 2015. A New Year Gift

摘要: #include<iostream> //二分答案后贪心验证可行性using namespace std;int n,m,arr[1000];bool verify(int c) //对组数c进行二分{ int p=0; for(int i=0;i<n;++i) p+=min(arr[i],c); //如果arr[i]<c,自然是加上arr[i];若arr[i]>=c,因为一共就c组,所以只能取c if(p>=m*c) //c组,每组 m 条项链,返回1说明可以分成 c组 return 1; return 0;}int main(){ while(cin&g 阅读全文

posted @ 2011-07-05 02:21 sysu_mjc 阅读(203) 评论(0) 推荐(0) 编辑

sicily 1234. Playground

摘要: //给出不同半径的半圆,问其中是否有某些半圆可以构成一个封闭的图形//如果半圆的直径能构成多边形,或者是线段重合在一起,都符合封闭的定义//于是对各半径排序(升序)后只要检查到某条边小于或等于前面边之和#include<iostream>#include<stdio.h>#include<algorithm>usingnamespacestd;doubleans[20];intmain(){intn;while(cin>>n&&n){for(inti=0;i<n;++i)cin>>ans[i];sort(ans, 阅读全文

posted @ 2011-07-05 02:20 sysu_mjc 阅读(146) 评论(0) 推荐(0) 编辑

sicily 1133. SPAM

摘要: #include<iostream>#include<string>#include<string.h>#include<stdio.h>using namespace std;bool fit(char c){ if( (c>='A'&&c<='Z')||(c>='a'&&c<='z')||(c>='0'&&c<='9')||c=='_'||c==&# 阅读全文

posted @ 2011-07-05 02:19 sysu_mjc 阅读(209) 评论(0) 推荐(0) 编辑

sicily 1203. The Cubic End

摘要: // 题意: 以第一个例子说明, 给出123,求一个数的立方,使得尾数等于123,因为 947^3 = 849278123 ,则答案是947#include <iostream>#include <string>using namespace std;int compare(string str1, string str2){ while(!str1.empty()&&str1[0]=='0') { str1.erase(0,1); } while(!str2.empty()&&str2[0]=='0') 阅读全文

posted @ 2011-07-05 02:18 sysu_mjc 阅读(419) 评论(0) 推荐(0) 编辑

sicily 1294. 高级机密

摘要: #include <iostream> //快速幂取模#include <stdio.h>using namespace std;int power(int a,int b,int m) //快速幂取模计算 (a^b)%m{ if(a==0) return 0; else if(b==0) return 1; int r=a%m,k=1; while(b>1) { if((b&1)==1) k=(k*r)%m; r=(r*r)%m; b=b>>1... 阅读全文

posted @ 2011-07-05 02:15 sysu_mjc 阅读(190) 评论(0) 推荐(0) 编辑

sicily 1295. 负权数

摘要: //具体求解过程请参照郭老的ppt#include<iostream>#include<cstring>#include<cstdlib> //abs函数头文件using namespace std;int n,r,an,ar;int arr[100],len;int main(){ while(cin>>n) //在网上看到还能这么处理输入,好东西啊,之前因为无法用while(cin>>n>>r),所以傻乎乎地用getline(cin,str),再对str分拆成两个数来,之后还要判断n的正负,实在是麻烦... { if( 阅读全文

posted @ 2011-07-05 02:14 sysu_mjc 阅读(256) 评论(0) 推荐(0) 编辑

导航