python3不要随便删除,后果很严重

本文记录了一次因冲动将系统中Python3.4版本卸载并尝试升级到Python3.7过程中,不慎导致Ubuntu桌面环境、浏览器、gedit及ping等基本功能丢失的教训。文中分享了紧急情况下如何避免重启以防止桌面环境彻底消失,并提供了恢复系统基本功能和服务的步骤。

今天想安装个高版本的python3.7代替系统中的python3.4,结果就一冲动把python3.4给卸载了,后来发现浏览器不见了,gedit不见了,ping也不见了,然后赶紧又把python3.4 install过来了
但还是不行,注意这个时候千万别重启,因为重启以后,你的桌面就没了,输入

sudo apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop

现在pip3不见了,不过可以用pip3.7来代替
也可以使用python3.7来运行python代码

python3.7 xxx.py
对于这个代码,为什么要用unordermap? 代码如下:#include <iostream> #include <cstring> #include <algorithm> #include <unordered_map> using namespace std; typedef long long LL; const int N = 20; int n, m; LL s; int a[N][N]; LL l[N]; unordered_map<LL, int> Map; int main() { scanf("%d%d", &n, &m); LL sum = 0; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { scanf("%d", &a[i][j]); sum += a[i][j]; } } scanf("%lld", &s); if(sum == s) { puts("YES"); printf("0"); return 0; } int t1 = 0, t2 = 0, t3 = 0, res = 0; for(int i = 0; i < (1 << n); i++) { // 行的删除情况 int re = n; for(int j = 1; j <= n; j++) { if((i >> j - 1) & 1) { re--; } } for(int j = 1; j <= m; j++) { l[j] = 0; for(int k = 1; k <= n; k++) { if((i >> k - 1) & 1) { l[j] += a[k][j]; } } } Map.clear(); for(int j = 0; j < (1 << (m >> 1)); j++) { // 前一半列的删除情况 LL t = 0; for(register int k = 1; k <= (m >> 1); k++) { if((j >> k - 1) & 1) { t += l[k]; } } Map[t] = j; } for(int j = 0; j < (1 << m - (m >> 1)); j++) { // 后一半列的删除情况 LL t = 0; for(int k = 1; k <= m - (m >> 1); k++) { if((j >> k - 1) & 1) { t += l[m / 2 + k]; } } if(Map.count(s - t)) { t1 = Map[s - t]; t2 = j; t3 = i; goto end; // 不用找最优解啦,随便一个就可以 } } } puts("NO"); return 0; end:; puts("YES"); int cnt = 0; // 删除的数量 for(int i = 1; i <= n; i++) { if(!((t3 >> i - 1) & 1)) { cnt++; } } for(int i = 1; i <= (m >> 1); i++) { if(!((t1 >> i - 1) & 1)) { cnt++; } } for(int i = 1; i <= m - (m >> 1); i++) { if(!((t2 >> i - 1) & 1)) { cnt++; } } printf("%d\n", cnt); for(int i = 1; i <= n; i++) { if(!((t3 >> i - 1) & 1)) { printf("1 %d\n", i); } } for(int i = 1; i <= (m >> 1); i++) { if(!((t1 >> i - 1) & 1)) { printf("2 %d\n", i); } } for(int i = 1; i <= m - (m >> 1); i++) { if(!((t2 >> i - 1) & 1)) { printf("2 %d\n", m / 2 + i); } } return 0; } 题面如下:# P11122 [ROIR 2024] 表格游戏 (Day 1) ## 题目背景 翻译自 [ROIR 2024 D1T3](https://neerc.ifmo.ru/school/archive/2023-2024/ru-olymp-regional-2024-day1.pdf)。 给定一个有 $h$ 行和 $w$ 列的表格 $A$,每个单元格内含有一个整数。行从上到下编号为 $1$ 到 $h$,列从左到右编号为 $1$ 到 $w$。允许对这个表格进行以下操作: - 选择一列并删除它(删除的列左边和右边的列变为相邻的列); - 选择一行并删除它(删除的行上边和下边的行变为相邻的行)。 这些操作可以按任意顺序执行任意多次。 ## 题目描述 你需要确定是否可以通过这些操作将表格变为一个数字之和为 $s$ 的表格。如果可以,请给出具体的操作。 ## 输入格式 第一行包含两个数字 $h$ 和 $w$,表示表格的大小($1 \leq h, w \leq 15$)。 接下来 $h$ 行,每行包含 $w$ 个整数,其中第 $i$ 行第 $j$ 列为 $A_{i,j}$($0 \leq A_{i,j} \leq 10^9$)。 最后一行输入数字 $s$,即需要通过操作达到的和($1 \leq s \leq 10^{18}$)。 ## 输出格式 如果从原始表格中无法得到一个数字之和为 $s$ 的表格,输出 `NO`。 否则: - 第一行输出 `YES`。 - 第二行输出一个数字 $k$ ,表示需要进行的操作次数。 - 接下来的 $k$ 行,每行输出两个整数 $t_j$,$i_j$,其中 $t_j = 1$ 表示操作是对行进行的,$t_j = 2$ 表示操作是对列进行的。数字 $i_j$ 应为操作所针对的行或列的初始编号。 ## 输入输出样例 #1 ### 输入 #1 ``` 3 3 1 2 3 2 3 1 3 1 2 8 ``` ### 输出 #1 ``` YES 2 1 3 2 3 ``` ## 输入输出样例 #2 ### 输入 #2 ``` 2 3 2 2 2 2 2 2 5 ``` ### 输出 #2 ``` NO ``` ## 输入输出样例 #3 ### 输入 #3 ``` 5 5 1 2 1 4 5 2 5 4 1 2 4 2 4 3 1 5 5 3 2 4 1 2 4 5 2 34 ``` ### 输出 #3 ``` YES 3 1 4 1 5 2 1 ``` ## 说明/提示 在样例 $1$ 中,最初给定的表格是: $$ \begin{matrix} 1 & 2 & 3 \\ 2 & 3 & 1 \\ 3 & 1 & 2 \\ \end{matrix} $$ 删除第三行和第三列后,我们得到以下表格,其元素总和为 $8$: $$ \begin{matrix} 1 & 2 & 3 \\ 2 & 3 & 1 \\ 3 & 1 & 2 \\ \end{matrix} \rightarrow \begin{matrix} 1 & 2 & 3 \\ 2 & 3 & 1 \\ \end{matrix} \rightarrow \begin{matrix} 1 & 2 \\ 2 & 3 \\ \end{matrix} $$ 在样例 $2$ 中,显然无法通过操作从初始表格中得到元素总和为 $5$ 的表格,因为初始表格全部都是 $2$,而 $5$ 是一个奇数。 在样例 $3$ 中,最初给定的表格是: $$ \begin{matrix} 1 & 2 & 1 & 4 & 5 \\ 2 & 5 & 4 & 1 & 2 \\ 4 & 2 & 4 & 3 & 1 \\ 5 & 5 & 3 & 2 & 4 \\ 1 & 2 & 4 & 5 & 2 \\ \end{matrix} $$ 删除最后两行和第一列后,我们得到以下表格,其元素总和为 $34$: $$ \begin{matrix} 1 & 2 & 1 & 4 & 5 \\ 2 & 5 & 4 & 1 & 2 \\ 4 & 2 & 4 & 3 & 1 \\ 5 & 5 & 3 & 2 & 4 \\ 1 & 2 & 4 & 5 & 2 \\ \end{matrix} \rightarrow \begin{matrix} 1 & 2 & 1 & 4 & 5 \\ 2 & 5 & 4 & 1 & 2 \\ 4 & 2 & 4 & 3 & 1 \\ 1 & 2 & 4 & 5 & 2 \\ \end{matrix} \rightarrow \begin{matrix} 1 & 2 & 1 & 4 & 5 \\ 2 & 5 & 4 & 1 & 2 \\ 4 & 2 & 4 & 3 & 1 \\ \end{matrix} \rightarrow \begin{matrix} 2 & 1 & 4 & 5 \\ 5 & 4 & 1 & 2 \\ 2 & 4 & 3 & 1 \\ \end{matrix} $$ | 子任务 | 分值 | 特殊性质 | | :----------: | :----------: | :----------: | | $0$ | $0$ | 同样例 | | $1$ | $17$ | $h=1$ | | $2$ | $6$ | 第 $i$ 行中的数字和不超过 $i$ | | $3$ | $10$ | $h\le3$ | | $4$ | $13$ | $h,w\le10$ | | $5$ | $13$ | $h,w\le12$ | | $6$ | $12$ | $A_{i,j}\le6$ | | $7$ | $29$ | 无 | 对于 $100\%$ 的数据,$1 \leq h, w \leq 15$,$0 \leq A_{i,j} \leq 10^9$,$1 \leq s \leq 10^{18}$。
最新发布
09-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值