Author Archives: Asher

Cort X6换EMG 81 85拾音器

去年换的81.. 今年加个85, 85声音好美, 像5000元的琴…

IMG00346-20100808-1518

零件

IMG00348-20100808-1522
IMG00349-20100808-1527
IMG00350-20100808-1545
IMG00351-20100808-1649

欧姆表测A-E 5个档位的通路, 下面连起来的是通路, 比如B档123两两互通

清晰一点的

IMG00352-20100808-1723

根据上面的表我扒拉了一下确定最后连法.. 琴颈连03 琴桥连23, 我把01连起来是为了能有一个档位让两边同时响(B档)

下面传个清晰点的通路表.. 说不定有谁会用到.. SEO关键词: 五档电位器 五档档位器 五档拾音器开关 连法 内部结构 怎么连

待焊

IMG00353-20100808-1739

 

怎样固定… 略喜感..

IMG00354-20100808-1753

焊好 音量旋钮和音色旋钮之间的钢丝不够长.. 接了一段

IMG00355-20100808-1856

 

封装, 正好塞下..

啦啦

IMG00356-20100811-1320

补充, 电路图就用这个图, 连法用我上面写的连法
IMG00358-20100811-2230

IMG00359-20100811-2231

Continue reading

[ACM] POJ3295解题报告

这是所谓的二叉树么.. 算法很简单, 只是因为第一次用这种结构体封装, 还是试了很多次才摸索出来的.. 很好用诶! 记一下

细节.. 地址和变量不要搞混了.. fw?fw->v():false 我写成了fw->v()? 错了好久

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Orz {
	Orz *fw,*fx;
	bool (*f)(bool w,bool x);
	bool v() {
		return (*f)(fw?fw->v():false,fx?fx->v():false);
	};

bool p[5];
char sb[]={'K','A','C','E','N','p','q','r','s','t'};
char input[201];
int count;

bool fK(bool w,bool x) {	return w&x;		}
bool fA(bool w,bool x) {	return w|x;		}
bool fC(bool w,bool x) {	return !(w&&!x);	}
bool fE(bool w,bool x) {	return !(w^x);		}
bool fN(bool w,bool x) {	return !w;		}
bool fp(bool w,bool x) {	return p[0];	}
bool fq(bool w,bool x) {	return p[1];	}
bool fr(bool w,bool x) {	return p[2];	}
bool fs(bool w,bool x) {	return p[3];	}
bool ft(bool w,bool x) {	return p[4];	}

bool (*f[])(bool w,bool x)={fK,fA,fC,fE,fN,fp,fq,fr,fs,ft};

Orz *proc() {
	char a=input[count++];
	Orz *node=(Orz *)malloc(sizeof(Orz));
	node->fw=node->fx=NULL;

	int type;
	for(type=0;sb[type]!=a;type++);
	node->f=f[type];

	if(type<=4)
		node->fw=proc();
	if(type<4)
		node->fx=proc();
	return node;

}

int pow2(int n) {
	int r=1;
	for(int i=0;i<n;i++)
		r*=2;
	return r;
}

int main() {
	while(1) {
		gets(input);
		if(input[0]=='0')
			break;
		count=0;
		Orz *bigBang=proc();

		short tester;
		for(tester=0x0000;tester<=0x001f;tester++) {
			for(int i=0;i<5;i++)
				p[i]=tester/pow2(i)%2;
			if(bigBang->v()!=true)
				break;
		}

		if(tester==0x0020)
			printf("tautology\n");
		else
			printf("not\n");
	}

	return 0;
}

比鼠标垫更要紧--如何去除鼠标加速 (适用于vista/win7!)

Xp下去除加速度很简单, 注册表里改一下就行了. 但是vista/win7好像一直没什么好办法(我是win7系统).
控制面板里去掉, 游戏里还是有. 有说加 -noforcemparms什么参数的也是人云亦云, 我试了基本都没什么用. 经过艰苦的Google, 终于达成了完全去除鼠标加速度的方法(鼠标和光标的1:1点对点移动). 并且在所有的游戏里都适用, 从根本上解决问题的办法.

http://www.esreality.com/?a=post&id=1846538
原文在这里, MarkC的win7去加速度解决方案, 我稍微翻译一下

http://www.filefront.com/16520577/MarkC_Windows7_MouseFix.zip/
下载这个

(非win7系统请看5)

1. 如何使用?

-在控制面板里,选择外观与个性化, 选择显示, 看看你选的DPI百分比是100%还是125%或者150%
-在控制面板的设置里, 把鼠标速度的滑块拖在中间 (6/11位置) .
-打开上面下载的zip文件
-选择符合你DPI百分比的那个reg文件, 双击导入(需要管理员权限)
-重启以应用修改

2. 为何需要这个补丁?

首先, 如果你不知道以为什么需要它, 那么你就不需要..
老游戏里, 比如半条命1, 雷神之锤12, 开启游戏后它们会调用一个windows函数, 来禁用掉鼠标加速, 强制光标点对点移动, 在这些游戏里准星的瞄准没有任何问题.
但是XP,Vista,win7里, 游戏不再那么容易的去掉鼠标加速了, windows有时在后台启用鼠标加速, 即使你在控制面板里已经把它关掉.
所谓鼠标加速, 就是说你移动鼠标快, 那同样的距离, 屏幕上的光标会移动的距离更长, 在某些情况下这是非常有用的. 但是在FPS游戏, 这种情况下的瞄准就是一种灾难..

3. 这个怎么工作的?

这个补丁无比牛逼的直接对windows的鼠标加速功能进行修改, 类似于把加速度修改成0, 这样即使游戏中调用了加速函数, 实际上还是鼠标与光标的点对点移动.

4. 如何知道这玩意确实有用?

在上面下载的压缩包中, 有一个MouseMovementRecorder, 鼠标移动记录器. 这个牛逼的东西, 你用了就知道了, 会显示出鼠标移动距离(第一列), 屏幕光标移动距离(第二列), 第三列是频率(不知道是啥), 第四列是说你是否启用了鼠标加速.
可以先试一下修改以前的鼠标加速, 红色是变快–同样的距离, 屏幕移动更远, 绿色是相反. 很明显. 在控制面板里把加速关掉以后再看一看区别.
修改以后, 即使开着鼠标加速, 也是不加速的情况了, 这时不管什么游戏, 任何情况下都无法再加速了 🙂

5. 不想用6/11位置, 或者DPI不是那三个中的任何一个, 或者xp/vista怎么搞?

作者做了个自动的工具, 就是压缩包里的MarkC_Windows7+Vista+XP_MouseFix_Builder文件夹, 我没试过, 试过的同学回一下~~

6. 如何卸载?

导入WindowsDefault.reg即可

Xp下去除加速度很简单, 注册表里改一下就行了. 但是vista/win7好像一直没什么好办法(我是win7系统).
控制面板里去掉, 游戏里还是有. 有说加 -noforcemparms什么参数的也是人云亦云, 我试了基本都没什么用. 经过艰苦的Google, 终于达成了完全去除鼠标加速度的方法(鼠标和光标的1:1点对点移动). 并且在所有的游戏里都适用, 从根本上解决问题的办法.

http://www.esreality.com/?a=post&id=1846538
原文在这里, MarkC的win7去加速度解决方案, 我稍微翻译一下

更新:链接失效,已上传至本地
http://axlarts.com/uploads/MarkC_Windows7_MouseFix.zip

(非win7系统请看5)

1. 如何使用?

-在控制面板里,选择外观与个性化, 选择显示, 看看你选的DPI百分比是100%还是125%或者150%
-在控制面板的设置里, 把鼠标速度的滑块拖在中间 (6/11位置) .
-打开上面下载的zip文件
-选择符合你DPI百分比的那个reg文件, 双击导入(需要管理员权限)
-重启以应用修改

2. 为何需要这个补丁?

首先, 如果你不知道以为什么需要它, 那么你就不需要..
老游戏里, 比如半条命1, 雷神之锤12, 开启游戏后它们会调用一个windows函数, 来禁用掉鼠标加速, 强制光标点对点移动, 在这些游戏里准星的瞄准没有任何问题.
但是XP,Vista,win7里, 游戏不再那么容易的去掉鼠标加速了, windows有时在后台启用鼠标加速, 即使你在控制面板里已经把它关掉.
所谓鼠标加速, 就是说你移动鼠标快, 那同样的距离, 屏幕上的光标会移动的距离更长, 在某些情况下这是非常有用的. 但是在FPS游戏, 这种情况下的瞄准就是一种灾难..

3. 这个怎么工作的?

这个补丁无比牛逼的直接对windows的鼠标加速功能进行修改, 类似于把加速度修改成0, 这样即使游戏中调用了加速函数, 实际上还是鼠标与光标的点对点移动.

4. 如何知道这玩意确实有用?

在上面下载的压缩包中, 有一个MouseMovementRecorder, 鼠标移动记录器. 这个牛逼的东西, 你用了就知道了, 会显示出鼠标移动距离(第一列), 屏幕光标移动距离(第二列), 第三列是频率(不知道是啥), 第四列是说你是否启用了鼠标加速.
可以先试一下修改以前的鼠标加速, 红色是变快–同样的距离, 屏幕移动更远, 绿色是相反. 很明显. 在控制面板里把加速关掉以后再看一看区别.
修改以后, 即使开着鼠标加速, 也是不加速的情况了, 这时不管什么游戏, 任何情况下都无法再加速了 🙂

5. 不想用6/11位置, 或者DPI不是那三个中的任何一个, 或者xp/vista怎么搞?

作者做了个自动的工具, 就是压缩包里的MarkC_Windows7+Vista+XP_MouseFix_Builder文件夹, 我没试过, 试过的同学回一下~~

6. 如何卸载?

导入WindowsDefault.reg即可

Ubuntu下东芝T100插耳机外放不停的问题终于有人解决了..

吾等菜鸟, 只能苦苦等待高手援助, 买来几个月后的今天, 收到mailing list发来的喜讯..

> I have a t135-s1312 and was able to get my headphone jack to work
> separately from my speakers with this workaround ( which I found on some
> website, I don’t really remember where):
> add:
> options snd-hda-intel model=”olpc-xo-1_5″
>
> to:
>
> /etc/modprobe.d/alsa-base.conf

终于可以把它当大号iPod使了..

[ACM] POJ1837解题报告, 背包..

求严格背包, 这次要求是所有物品都必须使用, 问有多少种填满的方法(具体看题)

如果只问能否填满(这样看来又不能把v=重量*杠杆长度看成物品了, 不是传统背包..好难归纳) 那只要用bool型数组记录, 因为不能不用 所以用两个数组更替(a0[i]==true doesn’t mean a1[i]==true, so.)

问有多少种方法把bool换成计数器即可

2010/08/05 Update:
在”能不能放满”(或者填满特定容量) 这种题型中, 以下三种情况是可以让我们求”符合要求的组合有多少种”
1. 一个物品具有多种可选的体积. 比如在本题中是”在物品体积可变, 并且能够为负的情况下, 能不能使占用空间恰为0(平衡)”
2. 物品可以选择不用
3. 1&&2
原因很简单, 上面三种情况的补集是”物品体积固定并且必须全用”, 这种情况最后占用的容积是常数, 逆否命题即上面的蓝字部分成立.

细节:
int *a=(int *)malloc(sizeof(int)*20001);  //sizeof(a)==4
int a[20001];  //sizeof(a)==80004;
混淆了一下 导致数组不能初始化, 结果是诡异的3 (答案是2)
debug的时候数组里是非常混乱的 (比如a0[9999]==-265219901)
但是release的时候数组即使不初始化也都为0, 但不一定(诡异的3就是因为某个数==1, 应该初始化为0的, 和内存前面的写入有关吧)

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    int *a0,*a1;
    int C,G,c[20],g[20];

    a0=(int *)malloc(sizeof(int)*20001);
    memset(a0,0x00,sizeof(int)*20001);
    a0[10000]=1;
    scanf("%d%d",&C,&G);
    for(int i=0;i<C;i++)
        scanf("%d",c+i);
    for(int i=0;i<G;i++)
        scanf("%d",g+i);

    int v;
    for(int i=0;i<G;i++) {
        a1=(int *)malloc(sizeof(int)*20001);
        memset(a1,0x00,sizeof(int)*20001);

        /*/debug
        for(int k=9900;k<=10100;k++)
            if(a0[k])
                printf("a0[%d]=%d, ",k,a0[k]);
        printf("\n");//*/

        for(int j=0;j<C;j++) {
            v=g[i]*c[j];
            for(int i=19000;i>=1000;i--)        //order doesn't make sense.
                a1[i+v]+=a0[i];

            /*/debug
            for(int k=9900;k<=10100;k++)
                if(a1[k])
                    printf("a1[%d]=%d, ",k,a1[k]);
            printf("\n");//*/

        }
        free(a0);
        a0=a1;
    }

    printf("%d\n",a0[10000]);

    return 0;
}

[ACM] POJ2184解题报告

晚上真happy, ac了前天开始的题,还写了点东西..好久没写东西了啊 ^_<

最近做了几道背包(好像就两道吧..),自己总结一下

(为什么我突然觉得这种假装有人会看我写的东西的语气很诡异..显然很诡异啊, 赶快找点人来看..)

目前就做过01背包 完全背包 和多重背包吧.
严格的背包, 可以根据背包九讲上把除了v(1)到v(N)全附成0x80000000(负无穷), 然后按照不严格背包的思路DP
这种情况下, 如果对每一层优化, 就是最后一层只算v[V], 倒2层只从v[V-vn]..V[V]那样的优化, 这样如果严格背包得不到结果, 那就不知道不严格背包的结果了, 虽然也确实没要求..
做非严格背包也可以用严格背包的方法, 从最后的v[]数组中选出最大的即可, 但是这样不能使用每层的优化

然后像http://poj.grids.cn/problem/1276/discuss/这样不求价值只求空间占用的题目, 显然是用严格背包(不然求毛啊), 因为不用存储价值量, v[]用bool型即可, 和上面思路一样, 只是负无穷是false, 非负无穷(这个体积大小可以做到被完全占用)是true

http://poj.grids.cn/problem/2184/status/ 这个开始用的二维背包..傻逼了. 后来发现只要把s看成体积, f看成价值即可. 替换的时候比较体积和价值的和. 因为要求的东西和体积\价值有直接联系, 思维上转换一下就行

错了一天的原因是s可能是负的!! 太阴险了, 01背包刷新v[]的时候是从后像前, 否则就是完全背包. 但是如果某个物品体积是负的, 从后向前刷新v[]前面刷新过的的就会影响接下来的比较..

代码: (用个数组记录非负无穷的数组元素就能0ms吧 懒得折腾了 复杂度O(2*10^7)无压力AC…)

#include <stdio.h>
#include <stdlib.h>
#define orz 200001

int main() {
	int N,s[100],f[100];
	int a[orz];
	int k,result;

	scanf("%d",&N);
	for(int i=0;i<N;i++)
		scanf("%d%d",s+i,f+i);

	for(int i=0;i<orz;i++)
		a[i]=(int)-2e9;
	a[(orz/2)]=0;

	for(int i=0;i<N;i++) {
	    if(s[i]>0) {
            for(int j=orz-1-s[i];j>=0;j--)
                if(a[j]!=(int)-2e9 && a[j+s[i]]<a[j]+f[i])
                    a[j+s[i]]=a[j]+f[i];
	    }
        else {
            for(int j=-s[i];j<=orz-1;j++)
                if(a[j]!=(int)-2e9 && a[j+s[i]]<a[j]+f[i])
                    a[j+s[i]]=a[j]+f[i];
        }
	}

    result=(int)-2e9;
    for(int i=(orz/2);i<orz;i++) {
        if(a[i]<0)
            continue;
        result=a[i]+i>result?a[i]+i:result;
    }
	printf("%d\n",result-(orz/2));

	return 0;
}

[SOLVED] pppoe connection automatically terminated after a few minutes

I’m using Ubuntu Lucia in dorm, the network always automatically disconnected  after a few minutes like:

root@VanXL:/etc/ppp/peers# plog
May 19 13:30:53 VanXL pppd[3087]: Connect: ppp3 <–> wlan0
May 19 13:30:53 VanXL pppd[3087]: Remote message: Authentication success,Welcome!
May 19 13:30:53 VanXL pppd[3087]: PAP authentication succeeded
May 19 13:30:53 VanXL pppd[3087]: peer from calling number 00:18:82:60:CA:A5 authorized
May 19 13:30:53 VanXL pppd[3087]: not replacing existing default route through ppp1
May 19 13:30:53 VanXL pppd[3087]: Cannot determine ethernet address for proxy ARP
May 19 13:30:53 VanXL pppd[3087]: local  IP address 114.230.98.44
May 19 13:30:53 VanXL pppd[3087]: remote IP address 114.230.96.1
May 19 13:30:53 VanXL pppd[3087]: primary   DNS address 61.147.37.1
May 19 13:30:53 VanXL pppd[3087]: secondary DNS address 61.177.7.1
root@VanXL:/etc/ppp/peers# plog
May 19 13:31:08 VanXL pppd[1996]: remote IP address 218.91.20.1
May 19 13:31:08 VanXL pppd[1996]: primary   DNS address 61.147.37.1
May 19 13:31:08 VanXL pppd[1996]: secondary DNS address 61.177.7.1
May 19 13:31:20 VanXL pppd[2716]: No response to 4 echo-requests
May 19 13:31:20 VanXL pppd[2716]: Serial link appears to be disconnected.
May 19 13:31:20 VanXL pppd[2716]: Connect time 3.5 minutes.
May 19 13:31:20 VanXL pppd[2716]: Sent 11128 bytes, received 10199 bytes.
May 19 13:31:27 VanXL pppd[2716]: Connection terminated.
May 19 13:31:27 VanXL pppd[2716]: Modem hangup

Network works fine when i use ChinaNet so i didn’t suppose this to be a hardware (or driver) problem.

and i noticed the “4 echo-request”. after googling, this appears to be a bug.

The other side of the PPP link probably dosen’t support LCP echo. You often see this with cellphone / cellular data card PPPoE implementations.

Put this line in the relevent ppp options file and try again:
lcp-echo-interval 0

(http://superuser.com/questions/109146/ubuntu-pppoe-connection-timeout)

Also you can completely disable this in /etc/ppp/options (search “echo”) if you find it worth nothing like me 😉

The network works perfectly now

[ACM] POJ1024解题报告

思路是board上的.. 经常是不看board没法做啊
思路非常牛B, 来自board上的apunix同学

用BFS,首先设墙和题目已给的路径上的所有点为used,剩余点为unused,然后利用BFS算出从起点到除墙以外的那些点的最短距离,然后利用BFS算出从终点到除墙以外的那些点的最短距离。
(1)判断最短路径是否唯一
如果不唯一,对于那些unused的点,必存在一个点,从起点到这点的最短距离加上从终点到这点的最短距离等于题目给出的最短距离长度
(2)判断墙是否多余
检查题目给出的墙分隔的那些点对,对一个一个被墙分隔的点对(a1,b1),(a2,b2),如果分隔它们的墙是多余的,那么从起点到(a1,b1)的最短距离加上从终点到(a2,b2)的最短距离必大于题目给出的最短距离长度pathlen,且从起点到(a2,b2)的最短距离加上从终点到(a1,b1)的最短距离也必大于pathlen,也就是起点,(a1,b1),(a2,b2),终点不可能在一个最短路径上,也就没必要用墙分隔了

一个小逻辑 有墙多余<=>存在一个墙多余
如果有m个墙是多余的,那么只考虑拿掉这m个墙中的一个其他m-1不动, 这个墙还是多余的, 因为路线完全没有依靠它

我犯了个错误.. 我以为终点一定在[w-1][h-1], 还有有人把每个点到终点/起点的距离初始化为-1, 那么如果有一个区域是封闭的会容易出错.
我是初始化为2E9, 继而中间想到的一个细节是, 这里没问题, 以后如果这些表示正无限的数相加 会超出int表示范围变成负的.. 要小心

代码:
Continue reading

[ACM] POJ1021解题报告

这是一道.. 怎么说呢 只能用龌龊来形容的题目..

折腾了两天, 重写了两遍, 第一次在题目里用链表, 有点为难自己的意思, 不过确实暂时还没想到其他可以省空间的办法.

思路:

1. 每一块用一个节点存储, 存储方式我用的点阵..   先随便找出一个点 然后dfs搜出这个点所在的区域

2. 每一块cake正过来反过来各转4个90度, 用从上到下从左到右一个点一个点比过去这样来排序, 有点傻不过还没发掘出什么具有[旋转不变性]的数学方法可以算出方向不同的cake的特征.

Continue reading