上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页
摘要: 没什么好方法,只能用dfs了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define I(x) scanf("%d",&x) 8 using namespace std; 9 int a[20],n,ans;10 set > p;11 void dfs(int pos,int sum1,int sum2,int sum3)12 {13 int i,j,k;14 if(pos==n){15 if(sum2==0||sum3==0) return ;16 . 阅读全文
posted @ 2013-08-19 15:00 _随心所欲_ 阅读(246) 评论(0) 推荐(0)
摘要: 动态规划,主要是用单调性求区间的最小期望。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define MAX 100410 #define inf 1q;14 struct node15 {16 int x;17 double p;18 }an[MAX];19 void init(int m)20 {21 int i,j;22 for(i=0;i::iterator it=q.begin();it!=q.end();... 阅读全文
posted @ 2013-08-17 21:30 _随心所欲_ 阅读(247) 评论(0) 推荐(0)
摘要: 思路:将点按值从小到大排序,询问按h从小到大排序。在建立线段树,按h的大小更新树并得到该次查询的结果!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define MAX 100005 8 #define I(x) scanf("%d",&x) 9 #define lson step>1;38 built(lson,l,m);39 built(rson,m+1,r);40 }41 void update(int step,int pos)42 {43 T[st 阅读全文
posted @ 2013-08-17 20:09 _随心所欲_ 阅读(183) 评论(0) 推荐(0)
摘要: 高斯消元求期望!!将n时间点构成2*(n-1)的环,每一点的期望值为dp[i]=dp[i+1]*p1+dp[i+2]*p2+……+dp[i+m]*pm+1.这样就可以多个方程,利用高斯消元求解。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define MAX 200 10 #define eps 1e-8 11 using namespace std; 12 double p[MAX],a[MAX][MAX],ans[MAX];... 阅读全文
posted @ 2013-08-17 13:20 _随心所欲_ 阅读(154) 评论(0) 推荐(0)
摘要: 由于要输出方案,变得复杂了。数据不是很大,首先打表,所有whthoff 的奇异局势。然后直接判断是否为必胜局面。如果必胜,首先判断能否直接同时相减得到。这里不需要遍历或者二分查找。由于两者同时减去一个数,他们的差不变,而且ak=k*(sqrt(5)+1),bk=ak+k;则可以通过二者的差直接定位,然后判断。对于另外一种情况,其中一个减去某个数,得到奇异局势,则是分情况二分查找。注意一些细节代码如下: 1 #include 2 #include 3 #include 4 #define M 1000002 5 using namespace std; 6 int a[M/2],b[M/2],c 阅读全文
posted @ 2013-08-16 22:18 _随心所欲_ 阅读(277) 评论(0) 推荐(0)
摘要: 求可行的方案数!!代码如下: 1 #include 2 int a[120]; 3 int main(){ 4 int n,m; 5 while(scanf("%d",&n)&&n){ 6 m=0; 7 for(int i=0;i<n;i++){ 8 scanf("%d",&a[i]); 9 m^=a[i];10 }11 int cnt=0;12 for(int i=0;i<n;i++)13 if((m^a[i])<a[i])1... 阅读全文
posted @ 2013-08-16 21:15 _随心所欲_ 阅读(120) 评论(0) 推荐(0)
摘要: 思路:当n1时,先手操作之后必定形成链,后手操作后形成二条一样的链,之后,先手怎么操作,后手就怎么操作,则后手必胜。代码如下: 1 #include 2 int main(){ 3 int t,k=0,n,m; 4 scanf("%d",&t); 5 while(t--){ 6 scanf("%d%d",&n,&m); 7 printf("Case %d: %s\n",++k,((m==1&&(n&1))||n<=m)?"first":"second& 阅读全文
posted @ 2013-08-16 20:44 _随心所欲_ 阅读(153) 评论(0) 推荐(0)
摘要: 离线+分块!!思路:序列a[1],a[2],a[3]……a[n]num[i]表示区间[L,R]中是i的倍数的个数;euler[i]表示i的欧拉函数值。则区间的GCD之和sum=∑(C(num[i],2)*euler[i]).当增加一个数时,若有约数j,则只需加上num[j]*euler[j],之后再num[j]++;反之亦然!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0... 阅读全文
posted @ 2013-08-16 19:48 _随心所欲_ 阅读(690) 评论(2) 推荐(0)
摘要: 理解题意:连续的数分为一组,每次判断下就可以了!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 10010511 using namespace std;12 int R,L,an[MAX],ans[MAX],res;13 bool vis[MAX];14 struct node15 {16 int x,y,l,p;17 }q[MAX];18 bool... 阅读全文
posted @ 2013-08-16 17:35 _随心所欲_ 阅读(291) 评论(0) 推荐(0)
摘要: 离线+分块将n个数分成sqrt(n)块。对所有询问进行排序,排序标准: 1. Q[i].left /block_size 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 200100 8 typedef long long ll; 9 ll a[N], cnt[N*5], ans[N], res;10 int L, R;11 12 struct node {13 int x, y, l, p;14 } q[N];15 bool cmp(const node &x,... 阅读全文
posted @ 2013-08-16 16:54 _随心所欲_ 阅读(208) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 30 下一页