http://blog.sina.com.cn/tiancailaoji1[订阅][手机订阅]
个人资料
友情链接
访客
读取中...
评论
读取中...
分类
    内容读取中…
博文
置顶:OIBH 上某人签名(2008-07-06 21:40)
痛楚—— 依然证明着我还没被环境摧残到麻木;
痛哭—— 被现实称做一钱不值的脏土外加废物;
痛苦—— 就像是被遗忘的角落是我莫大的耻辱;
痛诉—— 我向天空呐喊着还要给我几分残酷!
NOI结果(2008-08-03 23:18)

考砸了,

Ag,

大家看我的新博客吧

 

(2008-07-25 16:38)
天下风云出我辈,未入江湖岁月催。金银铜铁谈笑间,不如月赛挂一回。提剑跨骑狂提交,WA题如山鸟惊飞。校赛如潮人如水,只叹final几人回。
poj3368 WA AC(2008-07-25 14:36)

poj3368 先测了4以内所有排列和询问。
仍找不到错。
但测了
20 1000
1 1 1 1 1 1 1 7 7 7 7 7 5 5 5 5 4 4 4 4
1 20

output wrong answer
11
单步调试时,
发现maketree写错了,
左和右打反了
然后找那一段错了就重新input,只输入那一段
bingo
晕,还是有错。
多组数据,但是我没有加fillchar,
这是不对的。

....
fillchar(a,sizeof(a),0);
打成了
fillchar(b,sizeof(b),0);
.....
still wa

===============================================

 

const maxvalue=200002;
      maxn=200001;
      maxnum=sqr(10000);
var x:array[0..maxn] of longint;
    a,b,leftfre,rightfre,fre:array[0..maxn*3] of longint;
    n,m,i,j,k,leftfrefre,rightfrefre,frefre:longint;
function min(a,b:longint):longint;
begin if a<b then min:=a else min:=b; end;

就是那种几个机器人在棋盘上从左上角出发捡垃圾的题,
就是那道在清北时我给朱全名举反例的那个题。
网络流算法是把每个格子看成一个点,。。。
如果棋盘较大,而垃圾较少呢?
================================
改进算法:
只考虑那些有垃圾的格子。
若v在u的左上方,则连一条v到u的有向弧,
容量为1,费用为0。
同时,把每个点拆两个,容量为1,费用为1。
求最大费用流即可

5.3 milk4WA(2008-07-17 01:58)
my wrong code
{username:tiancai9
PROG:milk4
LANG:PASCAL
}
const maxn=100;
      maxcap=20000;
      maxnum=sqr(10000);
var a:array[0..maxn] of longint;
    f:array[0..1,0..maxn,0..maxcap] of longint;
    cap,n,i,j,k,ans:longint;
function min(a,b:longint):longint;
begin if a<b then min:=a else min:=b; end;
procedure swap(var a,b:longint);
var temp:longint;
begin temp:=a; a:=b; b:=temp; end;
procedure init;
begin
    assign(input,'milk4.in');
    assign(output,'milk4.out');
    reset(input);
    rewrite(output);
    read(cap,n);
    for i:=1 to n do read(a[i]);
end;
procedure sort;
begin
    for i:=1 to n-1 do
     for
5.2 wissqu(2)(2008-07-16 22:00)
这个程序是记录下了每个字母可放的位置。
    Test 1: TEST OK [4.266 secs, 204 KB]
稍快一点儿

{username:tiancai9
PROG:wissqu
LANG:PASCAL
}
type  node=record
            c:char;
            x,y:longint;
            end;
const dx:array[1..9] of longint=(-1,-1,-1,0,0,0,1,1,1);
      dy:array[1..9] of longint=(-1,0,1,-1,0,1,-1,0,1);
var map,old:array[0..5,0..5] of char;
    cover:array[0..5,0..5,'A'..'E'] of byte;
    ans:array[1..16] of node;
    remain:array['A'..'E'] of byte;
    v:array[1..4,1..4] of boolean;
   
5.2 wissqu(2008-07-16 21:45)
晕,竟然靠卡常数通过
 Executing...MAINTENANCE IN PROGRESS... errors are likely    Test 1: TEST OK [4.709 secs, 204 KB] 

{username:tiancai9
PROG:wissqu
LANG:PASCAL
}
type  node=record
            c:char;
            x,y:longint;
            end;
const dx:array[1..9] of longint=(-1,-1,-1,0,0,0,1,1,1);
      dy:array[1..9] of longint=(-1,0,1,-1,0,1,-1,0,1);
var map,old:array[0..5,0..5] of char;
    cover:array[0..5,0..5,'A'..'E'] of byte;
    ans:array[1..16] of node;
今天晚上(2008-07-15 20:39)
先写kruskal,
再把网络流所有算法写一遍

如果noi没挂的话,以后学了c,

再研究

最长上升子序列的贪心算法

我用的二分实现的所以时间复杂度是O(nlogn)
谁看得出来为什么是贪心吗?话说这是pku1631

#include
using namespace std;
int const maxn = 40000 + 5;
int a[maxn], b[maxn];
void solve(){
int n;
scanf('%d',&n);
for (int i = 0 ; i < n; i++) scanf('%d',&a[i]); int t = 0; b[0] = a[n - 1]; for (int i = n-2; i>=0; i--)
if (a[i] < b[t]) b[++t] = a[i]; else { int l = 0, r = t; while (r > l){
int m = (l + r) / 2;
if (a[i] >= b[m]) r = m; else l = m + 1;
}
b[l] = a[i];
}
printf('%d\n',t+1);
}
int main(){
int t;
for (scanf('%d',&t); t >

部分贪心 busses(2008-07-14 11:31)

最小乘车费用

源程序名    BUSSES.???(PAS,C,CPP)

可执行文件名 BUSSES.EXE

输入文件名