2011年7月5日

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 阅读(159) 评论(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 阅读(220) 评论(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 阅读(218) 评论(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) 编辑

导航