• Codeforces Round #367 (Div. 2)


    紧跟别人训练(雾)!

    我:我发现计科那边一天vp一场。我觉得这很恐怖啊。

    hmc:那为什么他们还这么菜。

    我:因为是前天刚开始的。。。。。

    A:身为一个计算几何选手不管什么时候都要写板子。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef double db;
     5 struct point {
     6     db x,y;
     7     point operator -(const point &k1)const {
     8         return {x-k1.x,y-k1.y};
     9     }
    10     db abs(){return sqrt(x*x+y*y);}
    11     db dis(point k1){return (*this-k1).abs();}
    12 };
    13 point a,p;db f;int n;
    14 int main(){
    15     scanf("%lf%lf",&a.x,&a.y);
    16     scanf("%d",&n);
    17     db ans = 1e18;
    18     for(int i=1;i<=n;i++){
    19         scanf("%lf%lf%lf",&p.x,&p.y,&f);
    20         ans = min(ans,p.dis(a)/f);
    21     }
    22     printf("%.11f
    ",ans);
    23 }
    View Code

    B:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef double db;
     5 int n,a[100005],q,m;
     6 int main(){
     7     ios::sync_with_stdio(false);
     8     cin>>n;
     9     for(int i=1;i<=n;i++)cin>>a[i];
    10     sort(a+1,a+1+n);;
    11     cin>>q;
    12     while (q--){
    13         cin>>m;
    14         cout<<upper_bound(a,a+1+n,m)-a-1<<endl;
    15     }
    16 }
    View Code

    C:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef double db;
     5 int n,c[100005];
     6 string s[100005];
     7 ll dp[100005][2];
     8 int main(){
     9     ios::sync_with_stdio(false);
    10     cin>>n;
    11     for(int i=1;i<=n;i++)cin>>c[i];
    12     for(int i=1;i<=n;i++)cin>>s[i];
    13     for(int i=2;i<=n;i++)dp[i][0]=dp[i][1]=1e18;
    14     dp[1][0]=0;dp[1][1]=c[1];
    15     for(int i=2;i<=n;i++){
    16         if(s[i]>=s[i-1])dp[i][0]=min(dp[i][0],dp[i-1][0]);
    17         reverse(s[i].begin(),s[i].end());
    18         if(s[i]>=s[i-1])dp[i][1]=min(dp[i][1],dp[i-1][0]+c[i]);
    19         reverse(s[i-1].begin(),s[i-1].end());
    20         if(s[i]>=s[i-1])dp[i][1]=min(dp[i][1],dp[i-1][1]+c[i]);
    21         reverse(s[i].begin(),s[i].end());
    22         if(s[i]>=s[i-1])dp[i][0]=min(dp[i][0],dp[i-1][1]);
    23         reverse(s[i-1].begin(),s[i-1].end());
    24     }
    25     if(dp[n][1]==1e18&&dp[n][0]==1e18){
    26         cout<<-1;
    27     }else{
    28         cout<<min(dp[n][1],dp[n][0]);
    29     }
    30 }
    View Code

    D:trie板子。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int tree[5000000][2],tot,num[5000000];
     5 int insert(int a){
     6     int root = 0;
     7     for(int i=31;i>=0;i--){
     8         int id = (a>>i)&1;
     9         if(!tree[root][id])
    10             tree[root][id]=++tot;
    11         root = tree[root][id];
    12         num[root]++;
    13     }
    14 }
    15 int find(int a){
    16     int root=0,ans=0;
    17     for(int i=31;i>=0;i--){
    18         int id = (a>>i)&1;
    19         if(tree[root][id^1]&&num[tree[root][id^1]]>0)
    20             ans|=(1<<i),root=tree[root][id^1];
    21         else
    22             root=tree[root][id];
    23 
    24     }
    25     return ans;
    26 }
    27 int del(int a){
    28     int root = 0;
    29     for(int i=31;i>=0;i--){
    30         int id = (a>>i)&1;
    31         num[tree[root][id]]--;
    32         root = tree[root][id];
    33     }
    34 }
    35 int q;char op;int a;
    36 int main(){
    37     ios::sync_with_stdio(false);
    38     cin>>q;
    39     insert(0);
    40     while (q--){
    41         cin>>op>>a;
    42         if(op=='+'){
    43             insert(a);
    44         }else if(op=='-'){
    45             del(a);
    46         }else{
    47             cout<<find(a)<<endl;
    48         }
    49     }
    50 }
    View Code

    E:妙啊!我们用十字链表搞,维护下面的和右边的点。每次交换矩形就处理一下边界。妙啊!

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int n,m,q,a[1005][1005];
     5 struct Node{
     6     int d,r,val;
     7 }node[1010005];
     8 int gps(int x,int y){
     9     int st = 0,stp=0;
    10     while (stp++<y)st=node[st].r;
    11     stp=0;
    12     while (stp++<x)st=node[st].d;
    13     return st;
    14 }
    15 void slove(int h){
    16     int st=0,stp=0;
    17     while (stp++<h){
    18         st=node[st].d;
    19     }
    20     int w=0;
    21     while (w++<m){
    22         st=node[st].r;
    23         cout<<node[st].val<<' ';
    24     }
    25     cout<<endl;
    26 }
    27 int f[4],g[4];
    28 int main(){
    29     ios::sync_with_stdio(false);
    30     cin>>n>>m>>q;
    31     for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j],node[i*(m+1)+j].val=a[i][j];
    32     for(int i=0;i<=n;i++){
    33         for(int j=0;j<=m;j++){
    34             node[i*(m+1)+j].d=(i+1)*(m+1)+j;
    35             node[i*(m+1)+j].r=i*(m+1)+j+1;
    36         }
    37     }
    38     int a,b,c,d,h,w;
    39     while (q--){
    40         cin>>a>>b>>c>>d>>h>>w;
    41         f[0]=gps(a-1,b);
    42         f[1]=gps(a,b-1);
    43         f[2]=gps(a,b+w-1);
    44         f[3]=gps(a+h-1,b);
    45         g[0]=gps(c-1,d);
    46         g[1]=gps(c,d-1);
    47         g[2]=gps(c,d+w-1);
    48         g[3]=gps(c+h-1,d);
    49         for(int i=0;i<h;i++){
    50             swap(node[f[1]].r,node[g[1]].r);
    51             f[1]=node[f[1]].d,g[1]=node[g[1]].d;
    52             swap(node[f[2]].r,node[g[2]].r);
    53             f[2]=node[f[2]].d,g[2]=node[g[2]].d;
    54         }
    55         for(int i=0;i<w;i++){
    56             swap(node[f[0]].d,node[g[0]].d);
    57             f[0]=node[f[0]].r,g[0]=node[g[0]].r;
    58             swap(node[f[3]].d,node[g[3]].d);
    59             f[3]=node[f[3]].r,g[3]=node[g[3]].r;
    60         }
    61     }
    62     for(int i=1;i<=n;i++){
    63         slove(i);
    64     }
    65 }
    View Code
  • 相关阅读:
    Silverlight Control(五)TimePicker
    《ASP.NET Core 3框架揭秘》笔记
    Hyper-V初体验
    debian初体验
    异步编程-编程指南
    Oracle查询优化读书笔记
    设计原则
    日志管理
    Git在Vs中的使用
    SVN使用备注
  • 原文地址:https://www.cnblogs.com/MXang/p/10701808.html
Copyright © 2020-2023  润新知