加快程序速度的技巧

1.For循环:
 

for(int i=1;i<=n;i++)

慢于

for(int i=1;i<=n;++i)

2.读入输出

cin慢于scanf慢于ios::sync_with_stdio(false)+cin慢于基于getchar的快读

快读快写代码:

​int read()
{
	int s=0,t=1;
	char ch;
	ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-') t=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		s=(s<<1)+(s<<3)+ch^48;
		ch=getchar();
	}
	return t*s;
}
void write(int x)
{
	if(x==0) return;
	write(x/10);
	putchar((x%10)+'0');
}

3.运算

优先使用位运算:& | ^ << >>

速度更快。

附位运算基本操作:

取二进制数n的第k位(从右到左)n&(1<<(k-1))
截取二进制数n第k位后m位(从左到右)n&((1<<m-1)<<(log2(n)+1-m))
求二进制数n最后一个“1”对应的数值,即lowbit函数n&(-n)
将二进制数n的第k位设为“1”n|=(1<<(k-1))
将二进制数n的第k位设为“0”n&=~(1<<(k-1))

4.优化算法

如动态规划->四边行不等式/斜率/单调队列/高级数据结构/ 优化

如,合并石子问题使用单调队列优化:

可以将时间复杂度降至O(n^2)

未优化代码:O(n^3)

#include<bits/stdc++.h>
using namespace std;
int n,d[110][110],temp[10010],a[110];
int main()
{
	cin>>n;
	memset(d,63,sizeof(d));
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		d[i][i]=0;
		temp[i]=temp[i-1]+a[i];
	}
	for(int i=n-1;i>=1;i--)
	{
		for(int j=i+1;j<=n;j++)
		{
			for(int k=i;k<j;k++)
			{
				d[i][j]=min(d[i][j],d[i][k]+d[k+1][j]+temp[j]-temp[i-1]);
			}
		}
	}
	cout<<d[1][n];
	return 0;
}

 优化后代码:

#include<bits/stdc++.h>
using namespace std;
int n,sum=0,ans;
vector<int> v;
int main()
{
	scanf("%d",&n);
	v.push_back(2147483640);
	for(int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		v.push_back(x);
	}
	v.push_back(2147483640);
	while(n-->1)
	{
		int k,j;
		for(k=1;k<=n;k++) if(v[k-1]<v[k+1]) break;
		sum=v[k]+v[k-1];
		for(j=k-1;j>=0;j--) if(v[j]>sum) break;
		v.erase(v.begin()+k-1);
		v.erase(v.begin()+k-1);
		v.insert(v.begin()+j+1,sum);
		ans+=sum;
	}
	cout<<ans;
	return 0;
}

5.手动火车头(O1,O2,O3)

#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")

变速齿轮0.45 变速齿轮是一个神奇的改变游戏速度程序。他是世界上第一个,也是目前最好的改变Windows游戏速度程序。他几乎能改变任何Windows游戏的速度。我还没有发现任何其他程序能改变,而变速齿轮不能改变的游戏。并且在效果上,例如变速后画面的平滑性(这同时会影响游戏的操作性)、能使游戏达到的最快或最慢速度、使用的方便性、运行的稳定性等都是最好的。 除了游戏,变速齿轮事实上也能改变任何时间相关的程序速度,例如视频播放、Flash、网页等。总之他是一个用途广泛而且相当有趣的程序。 可以从我的主页(http://www.wangrong1002.com/)上下载本程序的最新版本。 新增功能与改进 1、因为不小心丢了源代码,只好又重写了变速齿轮。虽然界面看起来和原来一样,但实际是完全重写的。 2、9x版的变速齿轮中使用了和NT版中相同的技术,因此几乎能和NT版一样稳定。 3、用Ctrl+加速或减速键可以在每次0.1或0.5次方倍之间切换。 4、自动判断操作系统,只安装9x或NT版。 5、最小化时缩小到系统托盘。 6、NT版可以从“速度改变的进程”列表中删除进程。 7、减小了安装程序。 8、支持更多的热键。 支持的操作系统 这一版本的变速齿轮可以在Windows 98、Windows 98SE、Windows ME、Windows 2000、Windows XP、Windows Server 2003下运行。在Windows 98、Windows 98SE、Windows ME下使用9x版的变速齿轮,在Windows 2000、Windows XP、Windows Server 2003下使用NT版的变速齿轮。由于变速齿轮的9x和NT版在使用上有很大不同(实际上他们是两个不同的程序),所以我将分别地介绍他们。目前变速齿轮不能在Windows NT 3.x和Windows NT 4.x下运行。其实要让变速齿轮能在这两个操作系统下运行是很容易的,方法也很多,不过连M$自己都不支持他们了,所以我也偷个懒吧。我也没有在Windows 95下做过测试,同样也是因为M$不再支持他们了。 变速齿轮的使用 9x版变速齿轮的使用很简单,你要做的唯一事情是移动滑杆设定你想要的速度。设定的速度对系统中所有进程(也就是正在运行的程序)都有效。注意,有些游戏不能在运行中改变速度,这时只要先设定好想要的速度再运行游戏就可以了。 NT版的变速齿轮使用比9x版略微复杂。他只对那些你指定的进程变速,对其他进程则没有影响,这样就大大提高了变速齿轮的稳定性。有几种方法可以指定需要变速的进程: 1。在“速度未改变的进程”列表框中是变速齿轮没有对他变速的进程。在这个列表框中选择一个进程,点加入按钮,可以把他加入到“速度改变的进程”列表中。 2。点浏览按钮(标题是三个点的那个按钮),将打开文件对话框。用他选择一个可执行文件(*.exe)。所选择的文件名将自动填入下拉列表框,并且自动运行。 3。在下拉列表框中填入带完全路径的可执行文件名,按运行按钮运行他。下拉列表框中保存着以前运行过的可执行文件名。你也可以方便地从中选择一个。 4。被变速齿轮变速的进程启动的进程也将自动被变速。由于几乎所有的进程都是由NT的外壳进程(就是在变速齿轮中显示为“Program Manager”的那个进程。桌面和资源管理器也都属于这个进程)启动的,所以如果把“Program Manager”加入到“速度改变的进程”列表中,将是一个方便的使用变速齿轮的方法。 如果进程列表没有正确反映当前的进程状态,可以点刷新按钮刷新列表。对于一些不能在运行中改变速度,或者在运行中改变速度会发生异常的游戏,请先设定好想要的速度,然后用除了第一种方法之外的方法启动游戏。 变速齿轮可以使用热键方便地改变速度。在不能切换到变速齿轮的使用界面,例如游戏正在运行时,热键甚至是唯一改变速度的方法。 点热键按钮可以弹出设置热键对话框。固定速度热键用于把变速齿轮设定到一个固定的速度加快减慢热键用于加快或者减慢速度。如果核选“加快减慢热键使用精细调节”核选框,每次加快减慢2的0.1次方倍,否则每次加快减慢2的0.5次方倍。另外,使用Ctrl+加快减慢热键也可以在每次2的0.1次方倍和2的0.5次方倍之间切换。“启用热键”核选框用于设置所有热键是否有效。 注意如果用鼠标拖动滑杆将只停在整数倍位置,但是使用左右键可以进行更精细的调节。也可以使用Page Up、Page Down、Home、End键移动滑杆。 常见问题解答 *变速齿轮真的能让我的电脑运行加快256倍吗? 当然不能,否则Intel和AMD岂不是得改行卖软件。事实上他不会改变电脑的运行速度。 *使用变速齿轮会烧坏CPU、显卡和硬盘吗? 不会。如果在用变速齿轮时CPU、显卡或硬盘坏了,即使不用变速齿轮它们一样会坏。 *我在用Windows媒体播放器(Windows Media Player)看电影时想用变速齿轮快进和慢放,但我发现他只是使画面变得跳动,实际速度并没有变化。 在电脑中有声卡时媒体播放器会根据播放声音的速度播放视频。因此需要停用所有声卡。9x下是进入控制面板\系统\设备管理器,右键点击声卡设备,点属性,选在此硬件配置文件中禁用。NT下是进入控制面版\系统\硬件\设备管理器,右键点击声卡设备,点停用。 *加速器真的很好,特别是玩《石器时代》的时候,但是,突然有一天,我发现我的连接上的时间也跟着一起加速,连接时间过的飞快,我可是一个穷玩家啊,禁受不起打击的,希望给我答案!!!是不是加速的时候,电话费和网费也一起加速啊? 放心吧!使用变速齿轮是不会影响到电话费和网费的记费的,你看到的只是使用变速齿轮后的假象,电信局有自己的计费时钟。 *变速齿轮只能改变Windows95及以上版本游戏的速度吗? 是的,他不能改变DOS和Windows3.1游戏的速度。 *我怎么改变不了电脑移植版真侍魂的游戏速度? 由于计时方法的不同,一些游戏不能在运行中改变速度,或者在运行中改变速度会发生异常。只要先设定好速度再运行游戏就可以了。 *我在NeoRage模拟器中把速度降低8倍后为什么按键速度快了就做不出相应的动作,声音也完全变成了噪音? NeoRage并不是连续检测键盘,假设他每秒检测30次,降低8倍后每秒仅检测4次,在这4次检测之间的键盘状态是被忽略的。所以把动作放慢一点吧。变成噪音是由于模拟器的特殊性。据我的测试,在其他游戏中声音都是正常的。 *我把速度降低16倍后为什么看到很多游戏画面是一帧一帧变化的? 二维游戏画面每秒最多30帧,降低16倍后每秒仅有两帧,所以你能清楚地看到画面一帧一帧地变化。三维游戏的帧速率也经常会有上限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值