CF #366(div.2) C 模拟,思维
生活随笔
收集整理的這篇文章主要介紹了
CF #366(div.2) C 模拟,思维
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CF #366(div.2)? C. ?Thor ??
題意:一個(gè)手機(jī)n個(gè)聯(lián)系人,有q個(gè)操作。每次給出ty和ai,如ty==1,表示收到ai的一條信息;如ty==2,表示將ai發(fā)的信息都看掉;如ty==3,表示將第1條到第ai條信息都看掉(看過(guò)的再看也算)。求每次操作后有多少條信息是沒(méi)看的。
總結(jié):思維題,看著簡(jiǎn)單,但就是不好做。。看了一個(gè)神犇的代碼
//CF#366 C #include<cstdio> using namespace std;int n, q, k, v, x, y, t, a[300300], b[300300], c[300300]; //x表示按第3種最大的右邊界,a[]表示按第1種輸入進(jìn)去的數(shù),b[]表示x后面沒(méi)有看的數(shù)量,c[]表示x后面ai出現(xiàn)次數(shù) int main() {scanf("%d%d", &n, &q);while (q--) {scanf("%d%d", &k, &v);if (k == 1) a[++y] = v, b[v]++, c[v]++, t++;else if (k == 2) t -= b[v], b[v] = 0;else {while (x < v) { //關(guān)鍵n = a[++x]; if (c[n]) c[n]--; //x~v, 將a[x]出現(xiàn)次數(shù)-1if(b[n] > c[n]) t--, b[n]--; //b[]肯定是要<=c[]的,如果b[]>c[],表示a[x]要看掉一個(gè) }}printf("%d\n", t);} } View Code轉(zhuǎn)載于:https://www.cnblogs.com/sbfhy/p/6292731.html
總結(jié)
以上是生活随笔為你收集整理的CF #366(div.2) C 模拟,思维的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 原生js实现jquery库中选择器的功能
- 下一篇: XidianOJ 1123 K=1 Pr