div3笔记

 

Problem - E - Codeforces

这道题用了记录一个数末尾零的板子(敲重点)!!!

再说一遍,简单博弈论就是贪心!

复制代码
 1 void solve() {
 2   cin >> n >> m;
 3   vector<int> a(n), b(n);
 4   for (int i = 0; i < n; i++) cin >> a[i];
 5   int len = 0;  //这组数字总共有几位,总长度
 6   for (int i = 0; i < n; i++) {
 7     int zhi = a[i], res = 0, shu = 0;
 8     bool ok = false;
 9     while (zhi) {
10       if (zhi % 10 == 0) {
11         if (ok == false) res++;  //当前有几个末尾0
12       } else
13         ok = true;
14       zhi /= 10;
15       shu++;  //当前数字有几位
16     }
17     len += shu;
18     b.pb(res);
19   }
20   sort(all(b));
21   int k = b.size();
22   int cnt = 0, shan = 0;
23   for (int i = k - 1; i >= 0; i--) {
24     if (cnt == 0) {
25       shan += b[i];
26       cnt = 1;
27     } else
28       cnt = 0;
29   }
30   if (len - shan <= m) {
31     cout << "Anna" << endl;
32   } else
33     cout << "Sasha" << endl;
34 }
code
复制代码

 Problem - F - Codeforces

拓扑排序板子

复制代码
 1 void solve() {
 2   cin >> n >> k;
 3   vector<set<int>> que(n + 1);  //记录被哪些点到达
 4   vector<set<int>> cue(n + 1);  //记录到达哪些点
 5   for (int i = 0; i < k; i++) {
 6     int x;
 7     cin >> x;
 8     if (n != 1) cin >> x;  //第一个点是没用的,如果N为1的话,需要输入特判
 9     int shang = x;  //记录上一个点
10     for (int j = 2; j <= n - 1; j++) {
11       cin >> x;
12       que[shang].insert(x);
13       cue[x].insert(shang);
14       shang = x;
15     }
16   }
17   if (k == 1) {
18     cy;
19     return;
20   }
21   int shu[n + 1];  //每个位置被几个点到
22   queue<int> q;
23   for (int i = 1; i <= n; i++) {
24     shu[i] = que[i].size();  //记录一下被多少个点到达
25     if (shu[i] == 0)         //如果这个点没被到达,没大小关系
26       q.push(i);
27   }
28   int cnt = 0;
29   map<int, int> da;  //因为存在环,所以不能跑回来,我们要记录一下
30   while (!q.empty()) {  //跑拓扑序
31     int z = q.front();
32     q.pop();
33     cnt++;  //记录删了多少个点
34     da[z] = 1;
35     for (auto x : cue[z]) {  //最后去跑到下一个点
36       if (da[x] == 1) {
37         continue;
38       }
39       shu[x]--;
40       if (shu[x] == 0) {
41         q.push(x);
42       }
43     }
44   }
45   if (cnt == n)
46     cy;
47   else
48     cn;
49 }
Code
复制代码

 

posted @   rw156  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示