NOIP 2017 模拟

11 3

T1:

题目:

难以置信这竟然会是T1。天呐,我到底参加的是NOI in Provinces还是NOI Plus 啊啊啊。。

——正解思路:

——我的乱搞:

暴力匹配,n * n * m大暴力。。。

——tips:

编程不止眼前的暴力,还有远方的暴力。

写暴力之前心中一定要有B数。。。

满载悲伤的代码:

(诶我操,正解代码怎么T了?????)

(代码掺了(#pragma)(GCC)(optimize("O3)),一秒能当两秒花)

#pragma GCC optimize("O3")
#include<algorithm>
#include<map>
#include<fstream>
using namespace std;
inline int read(){int i=0;char ch;for(ch=getchar();!isdigit(ch);ch=getchar());for(;isdigit(ch);ch=getchar()) i=(i<<3)+(i<<1)+(ch^48);return i;
}
int buf[1024];
inline void write(int x){char num = 0, c[10];do c[++num] = x % 10 | 48, x /= 10; while (x);while (num) putchar(c[num--]);putchar('\n');
}
int tot,nxt[8001],first[8001],goal[8001];
map<int,int>id;
int f1[8001],f2[8001],f[8001],sze[8001<<1],vis[8001<<1],lef,cnt,cnt1,cnt2,cnt3;
int ans[1000][1000],spi[8001];
int tota,pos1,pos2,x,y,now;
int n,q,a[8001];
void addedge(int a,int b){nxt[++tot]=first[a];first[a]=tot;goal[tot]=b;}
int main(){n=read();q=read();for(register int i=1;i<=n;++i){a[i]=read();if(!id[a[i]]) id[a[i]]=++cnt;a[i]=id[a[i]];}for(register int i=n;i;--i) addedge(a[i],i);for(register int i=1;i<=cnt;++i)for(register int j=i+1;j<=cnt;++j){++tota;cnt1=0;cnt2=0;cnt3=0;for(register int p=first[i];p;p=nxt[p]) f1[++cnt1]=goal[p];for(register int p=first[j];p;p=nxt[p]) f2[++cnt2]=goal[p];cnt3=cnt1+cnt2;pos1=1;pos2=1;for(register int k=1;k<=cnt3;++k)if(pos2>cnt2||(pos1<=cnt1&&f1[pos1]<f2[pos2])) f[k]=f1[pos1++];else f[k]=f2[pos2++];now=8000;vis[now]=tota;sze[now]=f[1];ans[i][j]=f[1]*(f[1]-1)>>1;f[cnt3+1]=n+1;for(int k=1;k<=cnt3;++k){if(a[f[k]]==i) ++now;else --now;if(vis[now]<tota){sze[now]=0;vis[now]=tota;}ans[i][j]+=(f[k+1]-f[k])*sze[now]+(f[k+1]-f[k])*(f[k+1]-f[k]-1)/2;sze[now]+=f[k+1]-f[k];}ans[j][i]=ans[i][j];}for(register int i=1;i<=cnt;++i){spi[i]=0;lef=0;for(register int p=first[i];p;p=nxt[p]){spi[i]+=(goal[p]-lef)*(goal[p]-lef-1)>>1;lef=goal[p];}spi[i]+=(n-lef)*(n-lef+1)>>1;}for(register int i=1;i<=q;++i){x=read();y=read();x=id[x];y=id[y];if((!x&&!y)||(x==y)) write((n+1)*n/2);else if(!x||!y) write(spi[x^y]);else write(ans[x][y]);}return 0;
}

T2:

题目:

——正解思路:

——我的乱搞:

天呐,这不是个 vector + erase 风骚走位水题嚒??关键是还真TM AK了???!!!

写线段树的大佬们一脸蒙逼。。。。。。。。。。

——tips :

那么这就很监介了,,真 - 暴力出奇迹。

#pragma GCC optimize("O3")#include <fstream>
#include <vector>int n;
int p[100010];
std::vector <int> v;inline void read (int &x) {x = 0;register char c = getchar();while (!isdigit(c)) c = getchar();while (isdigit(c)) x = x * 10 + (c ^ 48), c = getchar();
}inline void write (int x) {short num = 0;char c[10];while (x) c[++num] = x % 10 | 48, x /= 10;while (num) putchar(c[num--]);putchar(' ');
}int main () {read (n);for (register int i = 1; i <= n; ++i) read (p[i]), v.push_back(i);std::vector <int> :: iterator it;for (register int i = n; i >= 1; --i) {it = v.begin() + i - p[i] - 1 + p[i - 1];p[i] = *it;v.erase(it);}for (register int i = 1; i <= n; ++i) write (p[i]);return 0;
}

正解:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;int n,pre,now,tmp,l,r,mid;
int a[100010],tree[100010];void read(int &x)
{x=0;char ch=getchar();while(!isdigit(ch)) ch=getchar();while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
}int lowbit(int x)
{return x&(-x);
}int get(int x)
{int ans=0;while(x>=1){ans+=tree[x];x-=lowbit(x);}return ans;
}void add(int x,int y)
{while(x<=n){tree[x]+=y;x+=lowbit(x);}
}int main()
{//freopen("premu.in","r",stdin);read(n);pre=0;for(int i=1;i<=n;++i){read(now);a[i]=now-pre;pre=now;}for(int i=1;i<=n;++i) add(i,1);for(int i=n;i>=1;i--){tmp=i-a[i];l=0,r=n;while(l+1<r){mid=(l+r)>>1;if(get(mid)<tmp) l=mid;else r=mid;}a[i]=r;add(r,-1);}for(int i=1;i<=n;++i) cout<<a[i]<<" ";return 0;
}

T3 :

题目:

点击回复你也查看不了

在USACO上学的暴力技巧派上用场了耶。。。。。

——正解思路:

——我的乱搞:

暴搜 + vector 剪枝。

——tips:

good good 暴力, day day 爆零。

满载一种难以言表的思想感情的代码:

#include <iostream>
#include <fstream>
#include <algorithm>#define MIN(a, b) a = min(a, b)
#define SOLVE(a, b) \
for (register int x = 1; x <= n; ++x) for (register int y = 1; y <= n; ++y) a[i][x][y] = a[i + b][x][y] + road[i].r;\
for (register int x = 1; x <= n; ++x) {\
if (a[i + b][x][road[i].y] < inf) MIN(a[i][x][road[i].x], a[i + b][x][road[i].y] + road[i].c);\
if (a[i + b][x][road[i].x] < inf) MIN(a[i][x][road[i].y], a[i + b][x][road[i].x] + road[i].c);}using namespace std;struct node{int x, y, c, r;
}road[30001];struct query{int x, y, l, r, id;
}qry[300001], tag[300001];int n, m, q;
int ans[300001];
int Left[30001][31][31], Right[30001][31][31];const int inf = 1e+9;inline int read () {register int x = 0;register char c = getchar();while (!isdigit(c)) c = getchar();while (isdigit(c)) x = x * 10 + (c ^ 48), c = getchar();return x;
}inline void write (int x) {char num = 0, c[10];if (x < 0) putchar('-'), x = -x;do c[++num] = x % 10 | 48, x /= 10; while (x);while (num) putchar(c[num--]);putchar('\n');
}inline void solve(int lr, int rr, int lq, int rq) {if (lq > rq) return;if (lr == rr) {for (register int i = lq; i <= rq; ++i)if (qry[i].x != qry[i].y) {ans[qry[i].id] = (qry[i].x == road[lr].x and qry[i].y == road[lr].y) ? road[lr].c : -1;} else {ans[qry[i].id] = inf;(qry[i].x == road[lr].x and qry[i].y == road[lr].y) ? ans[qry[i].id] = road[lr].c : 0;MIN(ans[qry[i].id], road[lr].r);}return;}int mid = lr + rr >> 1;for (register int i = 1; i <= n; ++i)for (register int j = 1; j <= n; ++j)Left[mid + 1][i][j] = Right[mid][i][j] = inf;for (register int i = 1; i <= n; ++i)Left[mid + 1][i][i] = Right[mid][i][i] = 0;for (register int i = mid; i >= lr; --i) {SOLVE(Left, 1)}for (register int i = mid + 1; i <= rr; ++i) {SOLVE(Right, -1)}for (register int i = lq; i <= rq; ++i) if (qry[i].l <= mid and qry[i].r > mid) {int value = inf;for (register int x = 1; x <= n; ++x) MIN(value, Left[qry[i].l][x][qry[i].x] + Right[qry[i].r][x][qry[i].y]);ans[qry[i].id] = value < inf ? value : -1;}for (register int i = lq; i <= rq; ++i) tag[i] = qry[i];int wl = lq - 1, wr = rq + 1;for (register int i = lq; i <= rq; ++i) {if (tag[i].r <= mid) qry[++wl] = tag[i];if (tag[i].l >  mid) qry[--wr] = tag[i];}solve(lr, mid, lq, wl);solve(mid + 1, rr, wr, rq);
}int main () {n = read(), m = read(), q = read();for (register int i = 1; i <= m; ++i) road[i] = (node){read(), read(), read(), read()};for (register int i = 1; i <= q; ++i) qry[i] = (query){read(), read(), read(), read(), i};solve(1, m, 1, q);for (register int i = 1; i <= q; ++i) write(ans[i]);return 0;
}

總結——關於2017 11 3測試的分析總結相关推荐

  1. 總結——關於2017 10 30測試的分析總結

    NOIP 2017 模拟 10 30 T1: 题目: --正解思路: 先把所有人升序排列,然后从大到小找到第一个满足 v[ i ] - v[ i - 1 ] > k 的地方,那么 i , i + ...

  2. 2017.10.19 測試總結并今日總結

    50/300,越來越有趣- –>個人排名- –>恰似北斗七星,連環曲折- 此真乃:天回北斗掛西樓,掛完Day1掛Day2 金屋无人萤火流. 說說題目: T1:邊界沒有想清楚,多打了-(什麽 ...

  3. 關於如何更改戰地2_AIX2 Reality4.5模組人數上限且平衡的方法

    有夥伴不知道這個AIX2 Reality4.5模組的人數爲什麽調了ai文件夾中的aidefault.ai文件后人數不生效,要麽就是對面只有24個,我們這邊多得多, 這個原因很簡單,因爲這個模組的每張地 ...

  4. ASP.NET MVC 單元測試系列 (5):瞭解 Stub 假物件

    http://blog.miniasp.com/post/2010/09/18/ASPNET-MVC-Unit-Testing-Part-05-Using-Stub-Object.aspx 前天的文章 ...

  5. 關於python 2.x中文字編碼的簡單說明

    關於python 2.x中文字編碼的簡單說明 關於python 2.x中文字編碼的簡單說明 from v2ex By 013231 at 2 天前, 154 次点击 剛剛看到有人在糾結文字編碼的問題, ...

  6. 關於BigDecimal的比較

    來源:http://www.javaworld.com.tw/jute/post/view?bid=5&id=265915 在需要做大量金融運算的系統中,我們常用 BigDecimal 來取來 ...

  7. infoseccrypto_java下载_關於php接ICBC的支付接口的解決方案

    一:背景: 目前項目使用的是php語言開發,需要接入中國工商銀行的ICBC的線上支付接口. 二:遇到的問題:支付時需要對數據簽名,但是銀行那邊不提供php版本的程序,只有java版本的,以下是對接人回 ...

  8. Xamarin 2017.11.9更新

     Xamarin 2017.11.9更新 本次更新主要针对Xamarin.iOS,适配了iOS 11.1和Xcode 9.1.Visual Studio 2017升级到15.4.3获得新功能.Visu ...

  9. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

最新文章

  1. Atitit.css 规范 bem  项目中 CSS 的组织和管理
  2. QT Creator介绍
  3. Linux系统集群架构线上项目配置实战(一)
  4. 【Spring】依赖注入 加载顺序
  5. 不允许使用java方式启动_细品 Java 中启动线程的正确和错误方式
  6. Spring Cloud的应用程序—上下文服务
  7. MyBatis Generator 生成器把其他数据库的同名表生成下来的问题
  8. 我如何开始学习编码:前三个月使用的资源
  9. pycharm写python字典_pycharm_字典
  10. 【毕业答辩】怎样做好毕业答辩?纯干货
  11. 柱底反力求和lisp软件_基于AutoLisp语言的RC异形柱下独立基础验算方法与流程
  12. 《罗辑思维》第31期:你的女神你不懂
  13. jump game ii
  14. 创意名片大全:一组精美的折叠效果名片设计
  15. 接入华为游戏防沉迷,点击防沉迷弹窗后游戏闪退
  16. HTTP协议 --HTTP协议详解
  17. android编译很慢,Android Studio编译很慢该怎么办
  18. macbook os 10.15.1中没有“任何来源”如何访问app?
  19. 古罗马十字架酷刑死亡的秘密
  20. JS基于编码方式实现加密解密文本

热门文章

  1. 自然人代开是什么政策,怎么操作呢?
  2. 2023年湖北取得中级工程师职称多久后可以评高级?
  3. 12道Java高级面试题:java时间差计算
  4. 【摸鱼神器】— 五子棋
  5. 01.奇特的一生——柳比歇夫一生的秘密
  6. 10000小时后,我从外包走进了字节跳动
  7. SpringBoot——Banner介绍
  8. 粉笔公考——方法精讲——资料分析
  9. YYDS!大神自己动手制造游戏机
  10. 弹幕的开发(DanmakuFlameMaster)