惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
小众软件
小众软件
J
Java Code Geeks
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
L
LangChain Blog
博客园 - 司徒正美
量子位
Y
Y Combinator Blog
C
Check Point Blog
T
Tailwind CSS Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志

Sublime Text

AIComplete: Sublime Text 可用的 AI 代码补齐插件(codeium 替代品) - V2EX Sublime Text 也出了国内特供?挂马版本? Sublime Text 4 如何格式化 JSON 和 XML Sublime Text 支持右边栏了。 Sublime Text 4 没人吐槽一下中文字形问题吗? Sublime 弹窗 sublime text 如何隐藏标题栏? 这是什么主题(sublime text) sublime 如何关闭插件弹出来的 quick panel?? 比如 sqltool 这款插件会在下方弹出执行结果,类似一个编辑器,只读而已 sublime text4 刚刚发布,在主力机上更新了下 但是出现了一个怪现象:空行,按 tab 键只能缩进一次,再按 tab 没反应了 真是奇了怪,百度谷歌均未查到有效方案 Sublime Text 4 稳定版发布了 Sublime Text 4 正式版發布 sublime 用的人还多么? sublimeText3 的 emmet 插件的问题? translate_tabs_to_spaces 是什么功能?怎样设置,怎样操作会有怎样的效果? SublimeREPL 输出换行很怪异 升级 big sur 后 sublime text 3 的代码高亮没了,有遇到这种情况的吗 mac 使用 sublime text 用了 Material-Theme.sublime-theme 主题,然后 vim 模式光标都看不清,怎么改好 sublime 已经一年不更新了 sublimetext 的 ctrl+上下 不能增减数字了 记一次 sublime text 的 [锟斤拷] 免费用了两年,终于在拿到实习工资后补票正版 Sublime Text~ Sublime Text 4 (Dev Build 4050) Changelog Sublime 中如何快速切换 Python 解释器 SublimeText 插件 SFTP 购买后可以在多台电脑上使用吗 Darcula 主题 for sublime 3 Sublime 写 Vue 有没有提示补全的插件 sublime text 3 如何将光标设置为下划线样式? 求一个 sublime 的 Markdown 插件 sublime 如何使宏定义区域高亮
sublime 坑点?
long1 · 2018-11-27 · via Sublime Text

最近做 os 家庭作业,sublime Text3 编辑 c++程序,遇到了输入读不完就退出了运行了。

只是用了指针来实现?求大佬指点小弟。

#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
#define mp make_pair
#define fi first
#define se second
#define llt long long 
using namespace std;

char s[10][1100];
const int WORKSIZE=32;
typedef pair<int,int> pii;
pii WorkBlock[WORKSIZE];

int mixnTime;
int startTime=0;
int useSize=0;
struct PBlock{
	int id;
	int priority;
	int time;
	int blocksize;
	struct PBlock* nxt;
};


struct PBlock* readying;

void add(struct PBlock* tmp){
	// 队列为空
	if(readying == NULL){
		readying = tmp;
		return ;
	}

	//队首优先级小于 tmp
	if((readying->priority)<(tmp->priority)){
		tmp->nxt = readying;
		readying = tmp;
		return;
	}

	struct PBlock* pre=readying;
	struct PBlock* suf=pre->nxt;

	//cout<<(pre->priority)<<" ";
	while(suf!=NULL){
		if((suf->priority)<(tmp->priority))
			break;
		pre = suf;
		suf = pre->nxt;
		//cout<<(pre->priority)<<" ";
	}

	tmp->nxt = pre->nxt;
	pre->nxt = tmp;
	//cout<<pre->priority<<endl;
	return ;
}

void Print_Line(){
	for(int i=0;i<170-3;++i)
		printf("%c","-\n"[i==170-4]);
}

void Print(){
	printf("Time: %d\n",startTime );

	Print_Line();
	printf("| %s |",s[0]);
	for(int i=0;i<WORKSIZE;++i)
		printf(" %2d |",i);
	printf("\n");

	Print_Line();
	printf("| %s |",s[1]);
	for(int i=0;i<WORKSIZE;++i)
		if(WorkBlock[i].se>0)printf(" %2d |",WorkBlock[i].fi);
		else printf(" %2c |",' ');
	printf("\n");

	Print_Line();
}

void Running(){

	if((readying==NULL)||WORKSIZE-useSize<(readying->blocksize)){
		int costTime=mixnTime;
		mixnTime=0x3f3f3f3f;
		for(int i=0;i<WORKSIZE;++i){
			if(WorkBlock[i].se==0) continue;
			WorkBlock[i].se-=costTime;
			if(WorkBlock[i].se==0) --useSize;
			else mixnTime=min(mixnTime,WorkBlock[i].se);
		}
		//cout<<mixnTime<<endl;
		Print();
		startTime+=costTime;
		return;
	}

	for(int i=0;i<WORKSIZE;++i){
		if((readying->blocksize)==0)break;

		if(WorkBlock[i].se>0)continue;
		WorkBlock[i].fi=readying->id;
		WorkBlock[i].se=readying->time;
		++useSize;
		--(readying->blocksize);
	}

	mixnTime=min(mixnTime,readying->time);
	struct PBlock* tmp=readying->nxt;
	free(readying);
	readying=tmp;
}
int main(){

	scanf("%s",s[0]);
	scanf("%s",s[1]);
	//freopen("in.txt","r",stdin);
	memset(WorkBlock,0,sizeof WorkBlock);

	int BlockSize;

	cin>>BlockSize;
	for(int i=0;i<BlockSize;++i){
		struct PBlock* tmp = (struct PBlock*) malloc(sizeof (struct PBlock*));
		tmp->nxt = NULL;   
		scanf("%d%d%d%d",&(tmp->id),&(tmp->priority),&(tmp->time),&(tmp->blocksize));
		//cout<<(tmp->id)<<" "<<(tmp->priority)<<" "<<(tmp->time)<<endl;
		add(tmp);
	}
	//cout<<1<<endl;
	while((useSize>0)||(readying!=NULL))
	    Running();

	return 0;
}