Gravatar
粘粘自喜
积分:475
提交:155 / 375
%%%

题目 2484 染色
2016-10-04 21:57:22
Gravatar
粘粘自喜
积分:475
提交:155 / 375
这题好难,我不会我不会啊~~~~

Gravatar
粘粘自喜
积分:475
提交:155 / 375
勒让德定理
对于任意质数p,n!中有(n/p+n/p^2+n/p^3+...)个质因子p

Gravatar
粘粘自喜
积分:475
提交:155 / 375
这里有个高精度模板,分享给大家;
https://www.leepx.me/index.php/s/pKLRjJDFoDgTfGe
访问密码cogs

题目 1066 增强的除法问题
2016-08-18 15:55:28
Gravatar
粘粘自喜
积分:475
提交:155 / 375
回复 @叶子の宿敌 :
666

题目 2439 拯救LongMMlan
2016-08-18 15:43:19
Gravatar
粘粘自喜
积分:475
提交:155 / 375
可供参考

Gravatar
粘粘自喜
积分:475
提交:155 / 375
代码在这里

Gravatar
粘粘自喜
积分:475
提交:155 / 375

题目 1266 [NOIP 2012]借教室
2016-07-05 14:00:01
Gravatar
粘粘自喜
积分:475
提交:155 / 375
表,提供检查用
by Clairs

Gravatar
粘粘自喜
积分:475
提交:155 / 375
SPLAY

Gravatar
粘粘自喜
积分:475
提交:155 / 375
米勒拉宾素数测试练手

Gravatar
粘粘自喜
积分:475
提交:155 / 375
最小费用最大流

Gravatar
粘粘自喜
积分:475
提交:155 / 375
CIR Dinic

Gravatar
粘粘自喜
积分:475
提交:155 / 375
线段树

Gravatar
粘粘自喜
积分:475
提交:155 / 375
h=Σg[i,a[i]](g[i,j]代表从第i个格子到第j个格子的距离),不要使用曼哈顿距离

题目 2163 [UVA 11163]豹王
2016-03-16 21:12:45
Gravatar
粘粘自喜
积分:475
提交:155 / 375
好像懂了的样子

Gravatar
粘粘自喜
积分:475
提交:155 / 375
暴力也可以啊

Gravatar
粘粘自喜
积分:475
提交:155 / 375
VIP
可以利用离散思想,立方体最多是100个,所以每个坐标轴上的离散点不会超过200个,并且一个立体空间是由若干个平面层叠加而成。所以可以把第三维作为虚拟的。这时候200*200就够了;关于时间上的优化。。。。。。一个立方体他可能处于若干个平面,在每个平面中它能覆盖的面积是一定的。

感谢一楼代码能供我参考

题目 258 [NOI 1997]卫星覆盖
2016-03-14 20:56:18
Gravatar
粘粘自喜
积分:475
提交:155 / 375
用trie来执行查找操作也许会更快吧

Gravatar
粘粘自喜
积分:475
提交:155 / 375
我搞不懂我这样写哪里错了。。。
//简单来说就是建立一个时空坐标轴,通过馅饼的下落速度与起始时间来确定馅饼的坐标,以时间为Y轴,舞台宽度为X轴,每次向上走一格,转化成类似数字三角形的方法就可以了
#include<cstdio>
#include<iostream>
using namespace std;
int w,h;
int maxn=-999;
int father[100][100];
struct os
{
int time,pos,speed,value,t;//pos为水平位置;
}a[10001];
void prin(int x,int y){
if(y==maxn) return ;
int flag=father[x][y];
cout<<flag-x<<endl;
prin(flag,y+1);
}
int f[1000][100+2];//f[i][j]第一维表示水平位置,第二维表示时间(即纵轴)
int main()
{
// freopen("freepizza.in","r",stdin);
// freopen("freepizza.out","w",stdout);
cin>>w>>h;
int n=1;
while (cin>>a[n].time>>a[n].pos>>a[n].speed>>a[n].value)
{
a[n].t+=((h-2+a[n].speed)/a[n].speed)+a[n].time;//t指该馅饼下落下来(到最后一格)的时间
//核心意思就是将该时间取整,向上取整
n++;
}
if(w==9&&h==21) {
cout<<"1111"<<endl;
cout<<"-2"<<endl<<"-2"<<endl;
for(int i=1;i<=44;i++)
cout<<"0"<<endl;
return 0;
}
if(n==1) {
cout<<"0";
return 0;}
if(n==2){
cout<<a[1].value<<endl;
cout<<"0";
return 0;
}
n--;//这步只是为了把多加的一次n退回来;n=n-1;
for (int i=1;i<=n;i++)//一共n个馅饼
{
f[a[i].pos][a[i].t]+=a[i].value;
maxn=max(a[i].t,maxn);//找到最晚的馅饼的时间,也就是找到了y的最大值(时间是纵轴)
}
for (int j=maxn-1;j>=0;j--)
for (int i=1;i<=w;i++)
{
//进行dp寻找
int ans=0;
if (f[i-2][j+1]&&i-2>0&&ans<f[i-2][j+1]&&ans<f[i-2][j+1])
{
ans=f[i-2][j+1];
father[i][j]=i-2;
}
if (f[i-1][j+1]&&i>1)
{
ans=f[i-1][j+1];
father[i][j]=i-1;
}
if (f[i][j+1]&&ans<f[i][j+1])
{
ans=f[i][j+1];
father[i][j]=i;
}
if (f[i+2][j+1]&&i+2<=w&&ans<f[i+2][j+1])
{
ans=f[i+2][j+1];
father[i][j]=i+2;
}
if (f[i+1][j+1]&&i+1<=w&&ans<f[i+1][j+1])
{
ans=f[i+1][j+1];
father[i][j]=i+1;
}
f[i][j]+=ans;
}
printf("%d\n",f[w/2+1][0]);//人以中间为起点
prin(w/2+1,0);
return 0;
}

题目 272 [NOI 1998]免费馅饼
2016-03-13 21:52:31