你好啊,如果有vscode其他问题 可以看下我的专栏看下有没有相同问题
希望对你有帮助♥♥♥
调试了一下午的vscode 什么问题都有 终于搞好了啊啊啊
原因之一 :文件目录不能存在中文
方法一:把目录其中中文部分 改成 英文就能调试了
如果是图中情况 可以选择C盘 或者其他 重新创建一个文件夹 然后复制文件过去然后重新右键打开文件 ,都是可行的
方法二:
如果喜欢使用中文目录
建议重新创建 一个英文目录存代码 用来专门调试就行了
有VScode 相关问题也可以留言 搞了一下午 多少问题都见过 一起加油~~
如果对您有帮助 能否给我点个 码字不易 感谢观看~~
代码测试
#include
#include
#include
//acwing 例题 格子染色
using namespace std;
typedef pair PII;
const int N = 300010;
int n, m;
int a[N], s[N];
vector alls;//用来保存真实的下标和想象的下标的映射关系
vector add, query; //原来保存操作输入的值
int find(int x) { //二分查找
// 因为要求前缀和,故下标从1开始方便,不用额外的再处理边界。
}
int main () {
cin >> n >> m;
for (int i = 0; i < n;++ i) {
int x, c;
cin >> x >> c;
add.push_back({x, c});
alls.push_back(x);//先把下标放入向量中 统一离散化
}
for (int i = 0; i < m;++ i) {
int l, r;
cin >> l >> r;
query.push_back({l, r});
alls.push_back(l);
alls.push_back(r);
//将其左右端点也映射进来,目的是可以让我们在虚拟的映射表里找到,
//这对于我们后面的前缀和操作时是十分的方便的。如果当我们在虚拟的
//映射表里找的时候,如果没有找到左右端点,那么前缀和无法求
}
sort(alls.begin(), alls.end()); //排序
alls.erase(unique(alls.begin(), alls.end()), alls.end());//去除重复元素
// 1)erase( pos, n); 删除从pos开始的n个字符,例如erase( 0, 1),
// 删除0位置的一个字符,即删除第一个字符
//(2)erase( position);
//删除position处的一个字符(position是个string类型的迭代器)
//(3)erase(first,last);删除从first到last之间的字符,
// (first和last都是迭代器)last 不能是x.end()
//unique 使用之前 必须要先过一遍sort排序。再者,unique函数返的返回值是
//一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的
//下一个元素。所以如果 想要得到不重复元素的个数就需要用返回值-开始地址。
for ( auto item : add) { //先对添加里的元素映射 赋值
int x = find(item.first);//找到x的映射值 往原数组中加c
a[x] += item.second; // 处理插入
}
//for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,
//但是a无法影响到b容器中的元素。
for (int i = 1; i <= alls.size(); ++i)
{
s[i] = s[i - 1] + a[i];//前缀和
}
for (auto item : query) {
int l = find(item.first), r = find(item.second);
cout << s[r] - s[l - 1] << endl;
}//每个元素都对应一组{first, first}键值对(pair),
//键值对中的第一个成员称为first,第二个成员称为second.
return 0;
}
#include
using namespace std;
const int N = 20;//对角线元素 2n-1 取20防止越界
int n;
char g[N][N]; //存储图
bool col[N], dg[N], udg[N]; //udg 副对角线 /
//英语单词 column 列 diagonal 主角线 \
void dfs (int x) {
if (x == n) { // 如果找到方案的话
for (int i = 0; i < n; i ++) {
puts(g[i]);//puts输出二维数组 输出每一行如何就会自动换行
}
puts("");
return; //返回调用函数进行执行
}
/* puts语句不理解 可以看下面这个 作用是一样的
if (x == n) {
for (int i = 0; i < n; i ++) {
for (int j = 0; j < n; j ++) {
cout << g[i][j];
}
cout << endl;
}
cout << endl ;
return;
}
*/
//x:行 y:列
for (int y = 0; y < n; y ++) {
// 判断皇后能否放在这格
// 剪枝(提前判断当前方案已经错误,不再继续往下搜索,提高算法效率)
if (!col[y] && !dg[x + y] && !udg[n - x + y]) {
g[x][y] = 'Q';
col[y] = dg[x + y] = udg[n - x + y] = true;
dfs(x + 1);//找下一层的
//回溯的时候 记得恢复现场
col[y] = dg[x + y] = udg[n - x + y] = false;
g[x][y] = '.';
}
}
}
int main () {
cin >> n;
for (int i = 0; i < n;i ++) {
for (int j = 0; j < n; j ++) {
g[i][j] = '.'; //初始化全部空格子
}
}
dfs(0); //从第一行开始找[0:下标]
return 0;
}
#include
using namespace std;
const int N=1000010;
int n;
int q[N];
int tmp[N];
void merge_sort (int q[],int l,int r) {
if (l>=r) return ;
int mid =l+r>>1;
merge_sort(q,l,mid);
merge_sort(q,mid+1,r);
int k=0,i=l,j=mid+1; //i左半边 j中间
while (i <=mid &&j<=r) //归并的过程 结果放到临时数组tmp中去
if(q[i]<=q[j])tmp[k++]=q[i++];
else tmp[k++]=q[j++];
//扫尾
while (i<=mid) tmp[k++]=q[i++]; //剩下的
while (j<=r) tmp[k++]=q[j++];
for (int i=l ,j=0;i<=r;i++,j++) q[i]=tmp[j]; //左边界是l开始
}
int main () {
scanf ("%d",&n);
for (int i=0;i