評測傳送
二分答案+貪心。
越往上越優,所以在列舉的範圍內,能往上就往上。
細節處理很重要。
我的**有一處是待優化的,調了一下午,身心俱疲,不想再寫了。
就這樣吧 95分。
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
const int n=50009;
int n,m;
int head[n],nxt[2
*n],to[2
*n],w[2
*n],tot;
ll dis[n][20],dep[n],maxn;
int f[n][20];
int vis[n],leaf,siz[n],used[n];
int qe[n],num[n],r;
struct hq[n];
h qq[n];
bool cmp1(h a,h b)
void add(int
x,int
y,int z)
void dfs(int
x) }
}void dfs_check(int father,intx);
for(int i=head[x];i;i=nxt[i])
}bool check(ll len)
if(f[x][0]==1&&dis[x][0]for(int j=1;j<=num[qe[i]];j++) q[++n1]=((h));
else
vis[x]=1;
}sort(q+1,q+n1+1,cmp1);
for(int i=head[1];i;i=nxt[i]); }
sort(qq+1,qq+n2+1,cmp1);
if(n1return
0; int i,j,flag=0;
for(i=1;i<=n2;i++)
}for(int i=1;i<=n2;i++)
if(!vis[qq[i].x]) return
0; return1;}
int main()
tot=0;
dfs(1);
for(int j=1;(1
if(f[f[i][j-1]][j-1])
scanf("%d",&m);
for(int
x,i=1;i<=m;i++)
for(int i=1;i<=n;i++) if(num[i]) qe[++r]=i;
ll l=0,r=(n+5)*(
1e9),mid;maxn=r;
while(l<=r)
if(lprintf("%lld\n",l);
else
printf("-1\n");
//cout
<9);
return
0;}
NOIP 2015 簡要題解
最終還是打了個漂亮的醬油 day 1 t1 神奇的幻方 送分模擬題,但是遇到了乙個非常流弊的學弟 以上純屬娛樂 割 t2 資訊傳遞 大意 在乙個只有n條有向邊的圖中,每個結點出度為1,求乙個包含節點數最少的環。分析 因為只有n條邊並且每個點都有且僅有一條邊連出去,所以只可能存在簡單環,不會出現那種8...
NOIP2015解題報告
day1.當時的zxn很弱,弱到連dfs都調不明白就開始去noip。現在他會了dfs,二分答案,求lca,bfs,拓撲排序。所以他回去填noip2015的題解坑。t1.我現在依然不知道除了這種尾遞迴式的寫法之外還有啥別的寫法 偽 void dfs int i,int j,int x 咳我好像現在明白...
NOIP 2015 資訊傳遞
題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...